Tema:
Actualizacion de pipeline de desarrollo para uso con argocd.
Introducción
Ahora que tenemos claros los conceptops de como realizar un pipeline para distintos ambientes, vamos a integrar argocd.
Objetivo
Objetivo General:
- El objetivo de la practica es integrar argocd a uno de nuestros pipelines.
Laboratorio
Antes de comenzar
- Contar con el acceso al ambiente del laboratorio
Inicio de laboratorio
Conexion a ambiente
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 -
Proporcione accesos administrativos al cluster de Kubernetes
export KUBECONFIG=/etc/rancher/rke2/rke2.yamlexport PATH=$PATH:/var/lib/rancher/rke2/binexport CONTAINERD_ADDRESS=/run/k3s/containerd/containerd.sock
Desarrollo de laboratorio
- Ingresar a gitlab y colocar 3 variables nuevas en nuestro proyecto.
| Variable | Tipo | Valor | Mask |
|---|---|---|---|
| ARGOCD_SERVER | Variable | La direccion de la instalacion de argocd sin http y con el puerto. ej argocd.34-83-59-151.nip.io:80 |
|
| ARGOCD_USERNAME | Variable | admin |
|
| ARGOCD_PASSWORD | Variable | La clave de argocd que se obtuvo en la practica de instalacion |
-
Ingresar a la carpeta de angular-demo y cambiarnos a la rama dev
git checkout dev -
Crear un nuevo archivo llamado argocd-app.yaml en la carpeta manifests
apiVersion: argoproj.io/v1alpha1 kind: Application labels: metadata: name: ${DEPLOYMENT_NAME} spec: destination: namespace: ${NAMESPACE} server: 'https://kubernetes.default.svc' source: path: manifests/dev repoURL: 'https://$CI_SERVER_HOST/$CI_PROJECT_PATH.git' targetRevision: dev project: ${DEPLOYMENT_NAME} -
Dentro de la carpeta manifests crear una nueva carpeta llamada dev.
mkdir dev -
Dentro del archivo .dev en la carpeta ci-templates vamos a aregar la siguiente variable
GIT_STRATEGY: fetch -
Vamos a agregar siempre dentro del archivo .dev en ci-templates
commit-dev: stage: build image: theohbrothers/docker-kubectl:20250828.0.0-1.15.12-envsubst-git-jq-kustomize-sops-ssh-yq tags: - dev script: - | git config --global user.email "you@example.com" git config --global user.name "example" git remote set-url origin "https://gitlab-ci-token:${PROJECT_TOKEN}@$CI_SERVER_HOST/$CI_PROJECT_PATH.git" git checkout dev echo "[INFO] Reemplazando variables en archivo template" envsubst < manifests/k8s-template.yaml > manifests/dev/k8s-resources.yaml git add manifests/dev/k8s-resources.yaml git commit -m "Add ci [ci skip]" git push -u origin dev -
Vamos a cambiar el job de apply-dev de la siguiente manera.
apply-dev: stage: deploy image: quay.io/itmlabs/kubectl-tools:v0.0.3 tags: - dev script: - | envsubst < ci-templates/argocd-app.yaml > argocd-app.yaml cat argocd-app.yaml echo $ARGOCD_SERVER argocd login $ARGOCD_SERVER --username=$ARGOCD_USERNAME --password=$ARGOCD_PASSWORD --insecure --plaintext --grpc-web echo "[INFO] Desplegando aplicación" if [[ "$(argocd app get ${DEPLOYMENT_NAME})" ]]; then argocd app create -f argocd-app.yaml --upsert --plaintext --grpc-web argocd app sync ${DEPLOYMENT_NAME} --revision dev --insecure --force --plaintext --grpc-web else if [[ "$(argocd proj list | grep ${DEPLOYMENT_NAME})" ]]; then argocd app create -f argocd-app.yaml --upsert --plaintext --grpc-web argocd app sync ${DEPLOYMENT_NAME} --revision dev --insecure --force --plaintext --grpc-web else argocd repo add https://$CI_SERVER_HOST/$CI_PROJECT_PATH.git --username argo --password ${PROJECT_TOKEN} --insecure --upsert --plaintext --grpc-web argocd proj create ${DEPLOYMENT_NAME} --dest https://kubernetes.default.svc,${NAMESPACE} --src https://$CI_SERVER_HOST/$CI_PROJECT_PATH.git --insecure --upsert --plaintext --grpc-web argocd app create -f argocd-app.yaml --upsert --plaintext --grpc-web argocd app sync ${DEPLOYMENT_NAME} --revision dev --insecure --force --plaintext --grpc-web fi fi -
Suba sus cambios y observe la ejecucion del pipeline.
-
Cuando finalice revisar la consola de argocd.