Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al completar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Despliegue en OCI Container Engine for Kubernetes desde GitLab CI/CD
Introducción
En el panorama en rápida evolución de DevOps y el desarrollo nativo en la nube, la necesidad de una integración optimizada entre los sistemas de control de versiones y las plataformas de orquestación de contenedores puede ser fundamental. Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) ofrece una solución sólida y escalable para gestionar aplicaciones en contenedores. Sin embargo, algunos equipos pueden tener preferencias y requisitos específicos que les lleven a buscar alternativas a los servicios DevOps nativos de Oracle Cloud Infrastructure (OCI).
GitLab es una plataforma versátil y completa de control de versiones e integración continua y despliegue/entrega continuos (CI/CD) que no solo cumple estas preferencias, sino que también proporciona una alternativa atractiva a los servicios DevOps de OCI. En este tutorial, le guiaremos por el proceso de conexión perfecta de GitLab con Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). La integración presentada en este tutorial no solo se alinea para utilizar una solución GitLab ya existente que puede tener en su lugar, sino que también capacita al equipo con una solución unificada para el control de versiones, la integración continua y la orquestación de Kubernetes.
En las secciones siguientes, este tutorial presenta dos enfoques distintos para realizar esta integración.
-
Enfoque 1: uso de token de corta duración generado desde la interfaz de línea de comandos (CLI de OCI) de Oracle Cloud Infrastructure. Cuando se configura el archivo
kubeconfig
para un cluster mediante las instrucciones de acceso al cluster de OKE, este contiene por defecto un comando de la CLI de OCI para generar un token de autenticación específico del usuario, con ámbito de cluster y de corta duración. El token de autenticación generado por el comando de la CLI es adecuado para autenticar usuarios individuales que acceden al cluster mediante la herramienta de línea de comandos de Kubernetes (kubectl) y el panel de control de Kubernetes. Sin embargo, se recomienda limitar este enfoque para fines de prueba, no para entornos de producción. -
Enfoque 2: uso de una cuenta de servicio de Kubernetes. El token de autenticación generado de corta duración del enfoque 1 no es adecuado para autenticar procesos y herramientas que acceden al cluster, como las herramientas de integración y despliegue continuos. Para garantizar el acceso al cluster, dichas herramientas requieren tokens de autenticación no específicos de usuario de larga duración. Esto se puede lograr mediante una cuenta de servicio de Kubernetes.
Objetivos
-
Configure el ejecutor GitLab.
-
Configure el pipeline de CI/CD.
Requisitos
-
Una cuenta de OCI activa.
-
Un cluster de OKE en ejecución con punto final público. Para obtener más información, consulte Visión general de Container Engine for Kubernetes.
-
Cuenta GitLab con privilegios suficientes.
Enfoque 1: Despliegue en OKE desde GitLab CI/CD mediante un token generado de corta duración
Tarea 1: Preparación de la instancia informática de OCI
Necesitará una instancia de OCI Compute para el ejecutor GitLab, por ejemplo, una máquina virtual (VM).
-
Instale kubectl en la máquina virtual. Para obtener más información, consulte Install and Set Up kubectl on Linux.
-
Instale la CLI de OCI y cree el archivo de configuración para la autenticación en el arrendamiento de OCI (o se le pedirá que lo cree al ejecutar los pasos de acceso al cluster). Para obtener más información, consulte Instalación de la CLI de OCI y Archivo de configuración de SDK y CLI.
-
Configure el acceso al cluster de OKE. Vaya a Acceso al cluster y haga clic en las instrucciones de Acceso local de la consola de OCI.
-
Instale el ejecutor GitLab en la VM. Ejecute los siguientes comandos como raíz.
sudo curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash sudo yum install -y gitlab-runner
Compruebe que el ejecutor GitLab funciona.
gitlab-runner list
Tarea 2: Configuración de GitLab Runner y Project
-
Inicie sesión en GitLab, vaya a Proyectos y cree un nuevo proyecto o utilice uno existente.
-
Cree un programa de ejecución o utilice uno existente. Para crear un nuevo programa de ejecución, vaya a Configuración, CI/CD, Ejecutores y Ampliar. Haga clic en Nuevo ejecutor de proyecto y seleccione Plataforma (por ejemplo: Linux), agregue una Etiqueta que utilizaremos más adelante en el archivo
.gitlab-ci.yaml
al configurar el pipeline de despliegue y, a continuación, haga clic en Crear ejecutor. -
Registre el programa de ejecución con VM.
Nota: Anote el token de autenticación del ejecutor en caso de que lo necesite más tarde.
-
Ejecute el comando
gitlab-runner register
e introduzca la siguiente información.- URL de instancia GitLab: acepte el valor por defecto
https://gitlab.com
. - Nombre del ejecutor: válido localmente en el archivo
config.toml
. Por ejemplo:gitlab-oke-runner
. - Introducir un ejecutor: shell, con este valor, puede elegir que las instrucciones de integración y despliegue continuos se ejecuten en la máquina local en la que están instalados kubectl y la CLI de OCI.
- URL de instancia GitLab: acepte el valor por defecto
-
Puede revisar la configuración del programa de ejecución en el archivo
$HOME/.gitlab-runner/config.toml
.
-
Tarea 3: Configuración del pipeline de integración y despliegue continuos
-
Clone el proyecto GitLab en la máquina local.
-
Cree un archivo denominado
.gitlab-ci.yaml
en el directorio del proyecto, que contenga las instrucciones de creación y despliegue. En la sección Deploy, asegúrese de incluir la etiqueta runner que ha definido al crear el runner antes.$ cat ~/demo-oke/.gitlab-ci.yml stages: - build - deploy build_job: stage: build script: - echo "Building the ServiceAccount project..." deploy_job: stage: deploy script: - echo "Deploying an nginx pod to the OKE cluster" - kubectl run nginx --image=nginx tags: - shell-executor
-
Transfiera los cambios al proyecto GitLab y vaya a Creación y Trabajos para comprobar que los pipelines de compilación y despliegue se disparan y ejecutan correctamente.
El pipeline desplegó un pod nginx en el cluster de OKE.
Notas: anote la etiqueta y la clave. Elegiremos el ejecutor de shell que utilizará los recursos de la máquina local. De lo contrario, si selecciona Docker, por ejemplo, debe proporcionar en sus instrucciones una imagen que instale kubectl (y la CLI de OCI para el enfoque 1) en el contenedor.
$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 47h
Enfoque 2: Despliegue en OKE desde GitLab CI/CD mediante una cuenta de servicio de Kubernetes
Repita las tareas 1,2 y 3 del enfoque 1 para configurar la máquina virtual local (instalar kubectl, la CLI de OCI, el ejecutor GitLab), registrar el ejecutor y crear el archivo de pipeline .gitlab-ci.yaml
.
Tarea 1: Creación de una cuenta de servicio de Kubernetes y adición de su token
-
Cree una cuenta de servicio de Kubernetes y agregue su token al archivo
kubeconfig
. Para obtener más información, consulte Adición de un token de autenticación de cuenta de servicio a un archivo Kubeconfig.Nota: Asegúrese de que se utiliza la cuenta de servicio, no el token de corta duración de la CLI de OCI.
-
Defina el usuario especificado en el archivo
kubeconfig
del contexto actual para que sea el nuevo usuario de cuenta de servicio que ha creado mediante los siguientes comandos de kubectl.kubectl config set-context --current --user=<service-account-name>
Por ejemplo:
kubectl config set-context --current --user=kubeconfig-sa
Al utilizar una cuenta de servicio de Kubernetes para desplegar en OKE desde GitLab, el proceso implica la autenticación de GitLab con el cluster de Kubernetes mediante las credenciales de la cuenta de servicio.
Pasos Siguientes
Con estas tareas puede utilizar el pipeline de integración y despliegue continuos GitLab para desplegarlo en OKE. Estas tareas se pueden tomar como referencia para otras herramientas de integración y despliegue continuos. La integración facilita la integración y entrega continuas, lo que permite una iteración y el despliegue rápidos de aplicaciones en OKE.
En este tutorial, las instrucciones emplean un ejecutor de shell para probar y manejar escenarios directos. También puede optar por un ejecutor diferente, por ejemplo, un ejecutor de Docker. En este caso, el pipeline se ejecuta en un contenedor de Docker en lugar de en la máquina local. Si se ejecuta con un ejecutor de Docker, deberá especificar una imagen de Docker que incluya las utilidades necesarias. Por lo tanto, la creación de una imagen personalizada puede ser esencial, ya que puede incorporar herramientas como kubectl y OCI CLI para cumplir requisitos de pipeline específicos.
Enlaces relacionados
-
Visión general de Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)
-
Adición de un token de autenticación de cuenta de servicio a un archivo Kubeconfig
Acuses de recibo
- Autoras: Adina Nicolescu (ingeniero sénior de nube), Guido Alejandro Ferreyra (arquitecto principal de nube)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Deploy to OCI Container Engine for Kubernetes from GitLab CI/CD
F92403-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.