Despliegue GitLab Runners en OCI Kubernetes Engine con la escala automática del cluster
Despliegue GitLab Runners en Oracle Cloud Infrastructure (OCI) Kubernetes Engine con la funcionalidad de escala automática para escalar nodos de trabajador automáticamente en función de la carga para ejecutar trabajos sin problemas en el pipeline de integración y despliegue continuos.
Arquitectura
Esta arquitectura muestra GitLab Runners desplegados en un cluster de OCI Kubernetes Engine (OKE).
El siguiente diagrama ilustra esta arquitectura de referencia.

Descripción de la ilustración git-lab-runner-kubernetes.png
git-lab-runner-kubernetes-oracle.zip
La arquitectura tiene los siguientes componentes:
- Región
Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, denominados dominios de disponibilidad. Las regiones son independientes entre sí y puede haber grandes distancias que las separen (entre países e incluso continentes).
- Dominios de disponibilidad
Los dominios de disponibilidad son centros de datos independientes dentro de una región. Los recursos físicos de cada dominio de disponibilidad están aislados de los recursos de los otros dominios de disponibilidad, lo que proporciona tolerancia a fallos. Los dominios de disponibilidad no comparten infraestructura, como la alimentación o la refrigeración, ni la red interna del dominio de disponibilidad. Por lo tanto, un fallo en un dominio de disponibilidad no debería afectar a los otros dominios de disponibilidad de la región.
- Dominios de errores
Un dominio de errores es una agrupación de hardware e infraestructura dentro de un dominio de disponibilidad. Cada dominio de disponibilidad cuenta con tres dominios de errores con energía y hardware independientes. Al distribuir los recursos entre varios dominios de errores, las aplicaciones pueden tolerar fallos físicos del servidor, mantenimiento del sistema y fallos de energía en un dominio de errores.
- Red y subredes virtuales en la nube (VCN)
Una VCN es una red personalizable y definida por software que puede configurar en una región de Oracle Cloud Infrastructure. Al igual que las redes de los centros de datos tradicionales, las redes virtuales le proporcionan el control de su entorno de red. Una VCN puede tener varios bloques de CIDR no superpuestos que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, las cuales se pueden acotar a una región o a un dominio de disponibilidad. Cada subred está formada por un rango contiguo de direcciones que no se solapan con las demás subredes de la VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.
- Gateway de servicio
El gateway de servicios proporciona acceso desde una VCN a otros servicios, como Oracle Cloud Infrastructure Object Storage. El tráfico de la VCN al servicio Oracle viaja por el tejido de red de Oracle y no atraviesa Internet.
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine u OKE) es un servicio totalmente gestionado, escalable y disponible que puede utilizar para desplegar las aplicaciones en contenedores en la nube. Especifique los recursos informáticos que necesitan sus aplicaciones y Kubernetes Engine los provisionará en Oracle Cloud Infrastructure en un arrendamiento existente. OKE utiliza Kubernetes para automatizar el despliegue, la ampliación y la gestión de aplicaciones en contenedores en clusters de hosts.
- Cloud Guard
Puede utilizar Oracle Cloud Guard para supervisar y mantener la seguridad de los recursos en Oracle Cloud Infrastructure. Cloud Guard utiliza recetas de detector que puede definir para examinar los recursos en busca de deficiencias de seguridad y para supervisar a los operadores y usuarios para determinadas actividades de riesgo. Cuando se detecta una configuración incorrecta o una actividad no segura, Cloud Guard recomienda acciones correctivas y ayuda a realizar esas acciones, en función de las recetas de responsable de respuesta que pueda definir.
- Zona de seguridad
Las zonas de seguridad garantizan las mejores prácticas de seguridad de Oracle desde el principio mediante la aplicación de políticas como el cifrado de datos y la prevención del acceso público a las redes de todo un compartimento. Una zona de seguridad está asociada a un compartimento con el mismo nombre e incluye políticas de zona de seguridad o una "receta" que se aplica al compartimento y sus subcompartimentos. No puede agregar ni mover un compartimento estándar a un compartimento de zona de seguridad.
- Escala automática del cluster de Kubernetes
La escala automática del cluster de Kubernetes aumenta o disminuye automáticamente el tamaño de un pool de nodos en función de las solicitudes de recursos, en lugar de hacerlo en función de la utilización de recursos de los nodos en el pool de nodos.
- Servicios de OKE
El servicio Kubernetes (OKE) es una abstracción que define un juego lógico de pods y una política mediante la cual acceder a ellos. El juego de pods a los que se dirige un servicio generalmente se determina mediante un selector. Los servicios de Kubernetes gestionan la ampliación automática.
- Pool de nodos de trabajador de OKE
Un nodo de trabajador de Kubernetes es una máquina de trabajo que ejecuta aplicaciones en contenedores dentro de un cluster de Kubernetes. Cada cluster tiene al menos un nodo de trabajador.
Un pool de nodos de trabajador de Kubernetes (OKE) es un subjuego de nodos de trabajador dentro de un cluster que tienen todos la misma configuración. Los pools de nodos permiten crear pools de máquinas dentro de un cluster que tiene configuraciones diferentes. Por ejemplo, puede crear un pool de nodos en un cluster como máquinas virtuales y otro pool de nodos como máquinas con hardware dedicado. Un cluster debe tener como mínimo un pool de nodos, pero no es necesario que un pool de nodos contenga nodos de trabajador.
Los nodos de trabajador en un pool de nodos están conectados a una subred de nodo de trabajador en la VCN.
- Gateway de Internet
El gateway de Internet permite el tráfico entre las subredes públicas de una VCN y la red pública de Internet.
- Gateway de traducción de direcciones de red (NAT)
Un gateway de NAT permite que los recursos privados de una VCN accedan a hosts en Internet, sin exponer dichos recursos a conexiones de Internet entrantes.
Recomendaciones
- VCN
Al crear una VCN, determine el número de bloques CIDR necesarios y el tamaño de cada bloque en función del número de recursos que planea asociar a las subredes de la VCN. Utilice bloques CIDR que estén dentro del espacio de direcciones IP privadas estándar.
Seleccione bloques de CIDR que no se solapen con ninguna otra red (en Oracle Cloud Infrastructure, su centro de datos local u otro proveedor en la nube) a la que desee configurar conexiones privadas.
Después de crear una VCN, puede cambiar, agregar y eliminar sus bloques CIDR.
Al diseñar las subredes, tenga en cuenta el flujo de tráfico y los requisitos de seguridad. Asocie todos los recursos de un nivel o rol específico a la misma subred, que puede servir como límite de seguridad.
Utilizar subredes regionales.
- Seguridad
Utiliza Oracle Cloud Guard para supervisar y mantener la seguridad de tus recursos en OCI de forma proactiva. Oracle Cloud Guard utiliza recetas de detector que puede definir para examinar los recursos en busca de deficiencias de seguridad y para supervisar a los operadores y usuarios en busca de actividades de riesgo. Cuando se detecta una configuración incorrecta o una actividad no segura, Oracle Cloud Guard recomienda acciones correctivas y ayuda a realizar esas acciones, en función de las recetas de responsable de respuesta que pueda definir.
Para los recursos que requieren la máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta de políticas de seguridad definida por Oracle que se basa en las mejores prácticas. Por ejemplo, no se puede acceder a los recursos de una zona de seguridad desde la Internet pública y se deben cifrar mediante claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, OCI valida las operaciones con respecto a las políticas de la receta de zona de seguridad y niega las operaciones que violan cualquiera de las políticas.
- Cloud Guard
Clone y personalice las recetas por defecto proporcionadas por Oracle para crear recetas personalizadas de detector y responsable de respuesta. Estas recetas permiten especificar qué tipo de violaciones de seguridad generan una advertencia y qué acciones se pueden realizar en ellas. Por ejemplo, puede que desee detectar cubos de Object Storage que tengan la visibilidad definida en pública.
Aplique Cloud Guard en el nivel de arrendamiento para abarcar el ámbito más amplio y reducir la carga administrativa de mantener varias configuraciones.
También puede utilizar la función de lista gestionada para aplicar determinadas configuraciones a los detectores.
- Grupos de seguridad de red (NSG)
Puede utilizar NSG para definir un juego de reglas de entrada y salida que se aplican a VNIC específicas. Recomendamos utilizar NSG en lugar de listas de seguridad, ya que los NSG permiten separar la arquitectura de subred de la VCN de los requisitos de seguridad de la aplicación.
- OCI Kubernetes Engine
Aunque el operador soporta cualquier cluster de Kubernetes genérico, esta arquitectura utiliza clusters de Kubernetes Engine. Estos clusters tienen tres nodos de trabajador distribuidos en distintos dominios de disponibilidad y de errores. El cluster mostrado tiene nodos de trabajador distribuidos en diferentes hosts físicos. Puede crear hasta 1000 nodos en un cluster.
- Security Zones
Para los recursos que requieren la máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta de políticas de seguridad definida por Oracle que se basa en las mejores prácticas. Por ejemplo, no se puede acceder a los recursos de una zona de seguridad desde la Internet pública y se deben cifrar mediante claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, Oracle Cloud Infrastructure valida las operaciones con respecto a las políticas de la receta de zona de seguridad y deniega las operaciones que violan cualquiera de las políticas.
- Compute
Seleccione unidades con la combinación adecuada de OCPU y memoria, y aprovisione el almacenamiento de bloques y NVMe local según sea necesario para los nodos del cluster de Kubernetes.
Consideraciones
Tenga en cuenta los siguientes puntos al desplegar esta arquitectura de referencia:
- Rendimiento
La ampliación automática del cluster se basa en la reserva de recursos de despliegue. Puede controlar la reserva de recursos de trabajo editando el archivo
gitlab-ci.yaml
. - Seguridad
Utilice políticas que restrinjan quién puede acceder a qué recursos de Oracle Cloud Infrastructure (OCI) de la compañía y cómo.
OCI Kubernetes Engine está integrado con OCI Identity and Access Management, que proporciona una autenticación sencilla con la funcionalidad de identidad de OCI nativa.
Utilice las siguientes variables para controlar la reserva de recursos para un trabajo:
KUBERNETES_CPU_REQUEST: 1 KUBERNETES_MEMORY_REQUEST: 4000M
- Posibilidades de ampliación
Puede escalar horizontalmente la aplicación actualizando el número de nodos de trabajador en el cluster de Kubernetes, en función de la carga. Del mismo modo, puede reducir el número de nodos de trabajador en el cluster. Al crear un servicio en el cluster de Kubernetes, puede crear un equilibrador de carga para distribuir el tráfico de servicios entre los nodos asignados a ese servicio. La ampliación automática del cluster se basa en la reserva de recursos de despliegue. Puede controlar la reserva editando el archivo
gitlab-ci.yaml
.Note:
La reserva de recursos de trabajo mediante parámetros en el archivogitlab-ci.yaml
no debe superar el máximo permitido de reservas definido para el ejecutor GitLab como parte de las siguientes filas en el archivolocals.tf
:cpu_request_overwrite_max_allowed = "1" memory_request_overwrite_max_allowed = "4096M"
- Costo
El uso de OCI Kubernetes Engine es gratuito y el uso del registro de contenedores de Oracle es gratuito. Los nodos del cluster de Kubernetes se cobran con la misma tarifa que cualquier otra instancia informática con la misma unidad.
Despliegue
- Realice el despliegue con la pila de ejemplo en Oracle Cloud Infrastructure Resource Manager:
- Vaya a
.
Si aún no ha iniciado sesión, introduzca el arrendamiento y las credenciales de usuario.
- Seleccione la región en la que desea desplegar la pila.
- Siga las indicaciones e instrucciones en pantalla para crear la pila.
- Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
- Espere a que se complete el trabajo y revise el plan.
Para realizar cambios, vuelva a la página Detalles de pila, haga clic en Editar pila y realice los cambios necesarios. A continuación, vuelva a ejecutar la acción Plan.
- Si no es necesario realizar más cambios, vuelva a la página Detalles de pila, haga clic en Acciones de Terraform y seleccione Aplicar.
- Vaya a
- Realice el despliegue con el código de Terraform en GitHub:
- Vaya a GitHub.
- Clone o descargue el repositorio en su computadora local.
- Siga las instrucciones del documento
README
.
Explorar más
Más información sobre Oracle Cloud Infrastructure (OCI) y Kubernetes.
Revise el cuaderno de estrategias de la solución Best practices framework for Oracle Cloud Infrastructure para conocer las mejores prácticas.
Revise estos recursos adicionales de OCI y GitLab: