4.4 KiB
4.4 KiB
Gitlab installation
A short guide on installing GitLab in OpenShift 4.19.
Pre-requisites
Before we begin, let's ensure we are logged into our cluster in the terminal and the cluster meets our version requirements.
Verify cluster auth status
oc version && oc whoami
Client Version: 4.19.9 Kustomize Version: v5.5.0 Server Version: 4.19.9 Kubernetes Version: v1.32.7 admin
Ensure cert manager is installed
A pre-requisite for GitLab is having cert manager installed.
cat << EOF | oc apply --filename -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: openshift-cert-manager-operator
namespace: cert-manager-operator
spec:
channel: stable-v1
installPlanApproval: Automatic
name: openshift-cert-manager-operator
source: redhat-operators
sourceNamespace: openshift-marketplace
EOF
subscription.operators.coreos.com/openshift-cert-manager-operator created
Install gitlab operator
Everything we deploy relating to GitLab will be via the GitLab Operator. Our first step is to create a Subscription that will install the Operator on our OpenShift cluster.
cat << EOF | oc apply --filename -
apiVersion: v1
kind: Namespace
metadata:
name: gitlab-system
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: gitlab-og
namespace: gitlab-system
spec:
targetNamespaces:
- gitlab-system
upgradeStrategy: Default
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: gitlab-operator-kubernetes
namespace: gitlab-system
spec:
channel: stable
installPlanApproval: Automatic
name: gitlab-operator-kubernetes
source: certified-operators
sourceNamespace: openshift-marketplace
startingCSV: gitlab-operator-kubernetes.v2.3.1
EOF
namespace/gitlab-system unchanged operatorgroup.operators.coreos.com/gitlab-og created subscription.operators.coreos.com/gitlab-operator-kubernetes unchanged
Create gitlab instance
Once the operator is installed we can create an instance of GitLab using the newly available GitLab CRD, a basic example is below:
cat << EOF | oc apply --filename -
apiVersion: apps.gitlab.com/v1beta1
kind: GitLab
metadata:
name: gitlab
namespace: gitlab-system
spec:
chart:
version: "9.3.1"
values:
certmanager:
install: false
certmanager-issuer:
email: "nobody@nowhere.nosite"
global:
hosts:
domain: $(oc get ingress.config.openshift.io cluster --output jsonpath={'.spec.domain'})
ingress:
annotations:
route.openshift.io/termination: edge
class: none
configureCertmanager: true
tls:
secretName: null
nginx-ingress:
install: false
enabled: false
prometheus:
install: false
EOF
gitlab.apps.gitlab.com/gitlab created
We can wait for the gitlab deployment to become ready by checking the condition of the Gitlab custom resource.
oc --namespace gitlab-system wait --for=condition=Available gitlab/gitlab --timeout=3m
gitlab.apps.gitlab.com/gitlab condition met
Log into gitlab
Once the gitlab instance is Available we can retrieve the Ingress hostname and login!
echo "https://"$(oc get ingress --namespace gitlab-system gitlab-webservice-default --output jsonpath={'.spec.tls[0].hosts[0]'})
https://gitlab.apps.cluster-x99pc.dynamic.redhatworkshops.io
oc get secret --namespace gitlab-system gitlab-gitlab-initial-root-password --output jsonpath={'.data.password'} | base64 --decode | wl-copy