Adding a new Kubernetes deployment context

How to enable Kubernetes deployments to a new cluster and/or namespace in deployment-all

Problem

A new Kubernetes context needs to be enabled in deployment-all.

Steps

  1. Verify that the deployment-all checkout works correctly:

    ./openshift_login.sh
    
  2. Login to the cluster with admin rights, set the default namespace and show the context name (EXTERNAL_CONTEXT) via

    oc login https://K8S.API.URL:6443 --token=TOKEN
    oc config set-context --current --namespace=NAMESPACE
    oc config current-context  # Save as EXTERNAL_CONTEXT, used later
    

    For OpenShift, the token can be obtained after logging into the web interface by clicking on your name in the top-right corner and selecting Copy login command.

  3. Add the new context to the KUBERNETES_CREDENTIALS variable in secrets.yml.

      NEW_CONTEXT:  # name of new context
        server: https://K8S.API.URL:6443
        namespace: NAMESPACE
        token: OPENSHIFT_NEW_CONTEXT_KEY  # env var for new sa token
        pvcmode: ReadWriteOnce  # RWO for AWS/EBS, RWX if possible for EFS/NFS
        dns_record_type: cname  # 'cname' for AWS, 'a' everywhere else
    

    Deploy the setup project from openshift/setup via

    ./openshift_setup_context.sh NEW_CONTEXT EXTERNAL_CONTEXT
    
  4. Edit secrets.yml and move the new token env variable (OPENSHIFT_NEW_CONTEXT_KEY) to the appropriate place.

  5. Edit .gitlab-ci.yml and add the new context to the deployment of the setup project.