Skip to content

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

  1. Ingresar al servidor de laboratorio con la llave proporcionada.

    export LAB=X
    ssh student@lab-${LAB}-aio 
    

  2. Cambiar al usuario root

    sudo -i
    

  3. 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
    

  4. Verificar la instalacion de la herramienta HELM

    helm version
    

  5. Proporcione accesos administrativos al cluster de Kubernetes

    export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
    
    export PATH=$PATH:/var/lib/rancher/rke2/bin
    

  6. 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.io
    
    export GITLAB_URL=gitlab.$AIO_WILDCARD
    

  7. 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"}}}'
    

  8. 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
    

  9. 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
  1. 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

  2. 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