Files
workshops/README.org

102 lines
2.6 KiB
Org Mode

#+TITLE: OpenShift Application Delivery Workshop
#+AUTHOR: James Blair
#+DATE: <2023-12-04 Mon>
This repository contains a basic [[https://nextjs.org/][nextjs]] frontend designed to be exported as a static site and served via [[https://pages.github.com/][github pages]].
The frontend contains a walkthrough for workshop designed to be run over three hours covering basic application delivery, monitoring and security on OpenShift. The workshop content is tailored towards participants that are new to containers and kubernetes and will not be developing applications but will instead be expected to deliver existing applications onto OpenShift.
** Local development
To set up a local development environment run the following:
#+begin_src bash
# Install dependencies
npm install
# Build and serve the site
npm run build && npm run serve
#+end_src
** Exporting static site
To export the site to static html to serve for example via github pages, run:
#+begin_src bash
# Install dependencies
npm install
# Build and export the site
npm run build && npm run export
#+end_src
** Setting up a cluster for the workshop
The workshop expects an OpenShift 4.14 cluster with a few pre-requisites.
*** Add redhat-cop helm chart repository
Required so the Gitea helm chart will be available for all users.
#+begin_src bash
cat << EOF | oc apply --filename -
apiVersion: helm.openshift.io/v1beta1
kind: HelmChartRepository
metadata:
name: redhat-cop
spec:
connectionConfig:
url: 'https://redhat-cop.github.io/helm-charts'
name: Red Hat Community
EOF
#+end_src
*** Install web terminal operator
So our workshop participants don't need to install ~oc~ locally.
#+begin_src bash
cat << EOF | oc apply --filename -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: web-terminal
namespace: openshift-operators
spec:
channel: fast
installPlanApproval: Automatic
name: web-terminal
source: redhat-operators
sourceNamespace: openshift-marketplace
EOF
#+end_src
*** Create an operatorgroup for each user
We want each user to be able to install the same operator so we can pre-create namespaces and seed them with OperatorGroups to reduce complexity.
#+begin_src bash
cat << EOF > operatorgroup.yaml
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: grafana-og
spec:
targetNamespaces:
- user$user
upgradeStrategy: Default
EOF
for user in $(seq 1 30); do
export user=${user}
oc new-project user"${user}"
envsubst < operatorgroup.yaml | oc create --filename - --namespace user"${user}"
oc adm policy add-role-to-user --namespace user"${user}" admin user"${user}"
done
#+end_src