Tema:
Instalacion de gitlab
Introducción
En la siguiente guia realizaremos la instalacion del componente gitlab dentro de un cluster de kubernetes, este gitlab sera utilizado en todo el curso.
Objetivo
Objetivo General:
- El objetivo de esta practica es instalar un gitlab dentro de nuesto ambiente de laboratorio para utilizarlo a lo largo del curso.
Desarrollo del Tema
GitLab es una plataforma completa para la gestión del ciclo de vida del software. Nació principalmente como un sistema de control de versiones basado en Git, pero con el tiempo evolucionó hasta convertirse en una herramienta que integra todo lo necesario para que los equipos de desarrollo trabajen de manera colaborativa.
Esto nos ayudara bastante a lo largo del curso, ya que aparte de poder versionar nuestro codigo, desde gitlab podemos subir nuestras imagenes, manejar usuarios y crear pipelines de integracion continua.
Gitlab no es la unica solucion que tenemos, tambien existe github, para efectos de este curso se utilizara gitlab, pero algo a tomar en cuenta es que las herramientas de cicd son bastante estandarizadas, por lo cual si podemos manejar los conceptos de gitlab podremos utilizar github de igual manera.
Laboratorio para el Estudiante
Indicaciones:
- Se realizara la instalacion de gitlab en el ambiente de laboratorio proporcionado.
Inicio de laboratorio
Conexion a ambiente de kubernetes
-
Ingresar al servidor de laboratorio con la llave proporcionada.
export LAB=X ssh student@lab-${LAB}-aio -
Cambiar al usuario root
sudo -i -
Instalar la herramienta HELM, un manejador de paquetes para Kubernetes, HELM es necesario ya qué gitlab se instala mediante un paquete Helm.
export HELM_VERSION=v3.16.2 cd ~ curl -LO https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz tar -xvzf helm-v3.16.2-linux-amd64.tar.gz -C /bin linux-amd64/helm --strip-components=1 -
Verificar la instalacion de la herramienta HELM
helm version -
Proporcione accesos administrativos al cluster de Kubernetes
export KUBECONFIG=/etc/rancher/rke2/rke2.yamlexport PATH=$PATH:/var/lib/rancher/rke2/bin -
Defina la url a utilizar
export AIO_WILDCARD=${WILDCARD_DOMAIN} # Valide esta información en su inventario, por ejemplo: lab-0.mx-g01.ws.itmlabs.ioexport GITLAB_URL=gitlab.$AIO_WILDCARD -
Vamos a instalar primeramente el almacenamiento local con los siguientes comandos.
mkdir /opt/local-path-provisioner chmod -R 777 /opt/local-path-provisioner/ kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.32/deploy/local-path-storage.yaml kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' -
Vamos a ejecutar unos comandos de selinux para poder crear volumenes con el almacenamiento instalado.
yum install -y policycoreutils-python-utils semanage fcontext -a -t container_file_t "/opt/local-path-provisioner(/.*)?" sudo restorecon -Rv /opt/local-path-provisioner ls -ldZ /opt/local-path-provisioner kubectl delete pod -n local-path-storage -l app=local-path-provisioner -
Vamos a hacer la instalacion de gitlab por medio de helm.
helm repo add gitlab https://charts.gitlab.io/
helm repo update
kubectl create ns gitlab
helm upgrade --install gitlab gitlab/gitlab --timeout 600s --set global.hosts.domain=${AIO_WILDCARD} --set certmanager-issuer.email=me@example.com --set installCertmanager=false --namespace=gitlab
-
Una vez finalize la instalacion vamos a ingresar con la direccion de gitlab.${AIO_WILDCARD} donde AIO_WILDCARD es el wildcard de su laboratorio por ejemplo gitlab.34-105-107-225.nip.io
-
Nos vamos a loguear con root y con la clave inicial que tomaremos de un secret con el siguiente comando.
kubectl get secret -n gitlab gitlab-gitlab-initial-root-password -o jsonpath='{.data.password}' | base64 -d