OpenShift Application Delivery Workshop

This repository contains a basic nextjs frontend designed to be exported as a static site and served via 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:

# Install dependencies
npm install

# Build and serve the site
npm run build && npm run serve

Exporting static site

To export the site to static html to serve for example via github pages, run:

# Install dependencies
npm install

# Build and export the site
npm run build && npm run export

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.

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

Install web terminal operator

So our workshop participants don't need to install oc locally.

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

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.

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
Description
A monorepo for hands on workshops hosted with a github pages static site.
Readme GPL-3.0 264 MiB
Languages
MDX 70.4%
JavaScript 28.3%
CSS 1.3%