Despliegue de aplicaciones en un cluster privado de OKE usando OCI Bastion y GitHub Actions
Descubra cómo aprovechar las sesiones de Oracle Cloud Infrastructure Bastion y las acciones de GitHub de forma eficaz para desplegarlas en un cluster privado de Oracle Cloud Infrastructure Kubernetes Engine (OKE) cuando surja la necesidad debido a diversos factores como la seguridad, la conformidad, el aislamiento de red y el control.
OKE es un servicio totalmente gestionado, ampliable y disponible que puede utilizar para desplegar las aplicaciones en contenedores en la nube.
GitHub Actions es una potente plataforma de automatización de flujo de trabajo e integración continua/despliegue continuo (CI/CD) proporcionada por GitHub. Permite definir flujos de trabajo personalizados mediante la sintaxis YAML, que se pueden disparar mediante varios eventos, como transferencias de código, solicitudes de recuperación o tareas programadas.
Esta arquitectura de referencia explora el uso de sesiones de OCI Bastion y GitHub Actions para desplegar en un cluster de OKE privado.
Arquitectura
Esta arquitectura de referencia muestra la integración de un OCI Bastion y GitHub Actions para facilitar los despliegues en un cluster privado de OKE.
No se puede acceder al cluster privado de OKE desde redes externas. Para acceder al punto final privado de la API K8s, se establece una sesión de reenvío de puerto SSH de OCI Bastion. Esta configuración permite la ejecución de comandos kubectl
para realizar varias operaciones de despliegue en el cluster.
Cuando se transfiere código al repositorio, se dispara automáticamente el flujo de trabajo GitHub Actions. Durante la ejecución del flujo de trabajo, se crea la sesión de OCI Bastion y se utiliza para conectarse al punto final de API privado K8s para ejecutar acciones de despliegue.
Una vez finalizado el flujo de trabajo, se suprime la sesión de OCI Bastion. Este enfoque garantiza un proceso de despliegue altamente seguro y eficiente. Además, este flujo de trabajo sirve como marco para ejecutar tareas de integración continua y se puede adaptar aún más para adaptarse a sus procesos y requisitos de desarrollo específicos.
El siguiente diagrama ilustra esta arquitectura de referencia.
oke-bastion-deployment-diagram-oracle.zip
Antes de empezar
- Aprovisione un cluster de OKE con el punto final de API de Kubernetes y los nodos de trabajador configurados en una subred privada.
Note:
El punto final de API de Kubernetes privado se utilizará para establecer la sesión de reenvío de puerto de OCI Bastion. - Defina el servicio de OCI Bastion creado para que tenga la VCN de OKE como la VCN de destino y la subred del nodo de OKE como la subred de destino.
- Defina la política del servicio IAM necesaria.
Note:
Consulte Exploración para obtener más información sobre los enlaces a Configuración de políticas para la creación y el despliegue de clusters para configurar las políticas de IAM necesarias.
La arquitectura tiene los siguientes componentes:
- Tenancy
Un arrendamiento es una partición segura y aislada que Oracle configura en Oracle Cloud al registrarse en Oracle Cloud Infrastructure. Puede crear, organizar y administrar sus recursos en Oracle Cloud dentro de su arrendamiento. Un arrendamiento es sinónimo de una compañía u organización. Normalmente, una compañía tendrá un único arrendamiento y reflejará su estructura organizativa dentro de ese arrendamiento. Un único arrendamiento suele estar asociado a una única suscripción, y una única suscripción normalmente solo tiene un arrendamiento.
- 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).
- Compartimento
Los compartimentos son particiones lógicas entre regiones dentro de un arrendamiento de Oracle Cloud Infrastructure. Utilice compartimentos para organizar, controlar el acceso y definir cuotas de uso para los recursos de Oracle Cloud. En un compartimento determinado, defina políticas que controlen el acceso y definan privilegios para los recursos.
- 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.
- Equilibrador de carga
El servicio Oracle Cloud Infrastructure Load Balancing proporciona una distribución automatizada del tráfico desde un único punto de entrada a varios servidores en el backend.
- Lista de seguridad
Para cada subred, puede crear reglas de seguridad que especifiquen el origen, el destino y el tipo de tráfico que se debe permitir dentro y fuera de la subred.
- 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.
- 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.
- 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.
- 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.
- Servicio de bastión
Oracle Cloud Infrastructure Bastion proporciona acceso seguro restringido y limitado en el tiempo a recursos que no tienen puntos finales públicos y que requieren estrictos controles de acceso a recursos, como hardware dedicado y máquinas virtuales, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Cloud Infrastructure Kubernetes Engine (OKE) y cualquier otro recurso que permita el acceso al protocolo de shell seguro (SSH). Con el servicio OCI Bastion, puede permitir el acceso a hosts privados sin desplegar y mantener un host de salto. Además, obtiene una estrategia de seguridad mejorada con permisos basados en identidad y una sesión SSH centralizada, auditada y con límite de tiempo. OCI Bastion elimina la necesidad de una IP pública para el acceso al bastión, eliminando la molestia y la posible superficie de ataque al proporcionar acceso remoto.
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.
- 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.
- Bastion
OCI Bastion permite a los usuarios autorizados conectarse desde direcciones IP específicas a recursos de destino mediante sesiones de shell seguro (SSH). Asegúrese de que solo los usuarios autorizados tienen acceso para crear servicios y sesiones de Bastion. El acceso a Bastion solo se debe otorgar a usuarios autorizados.
- Kubernetes Engine (OKE)
Asegúrese de que se han creado las políticas de IAM necesarias y de que solo los usuarios autorizados tienen acceso a los recursos de cluster. Se debe activar la supervisión y el registro adicionales para mejorar la estrategia de seguridad.
Consideraciones
Tenga en cuenta los siguientes puntos al desplegar esta arquitectura de referencia.
- Escalabilidad de OKE
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.
- Disponibilidad de aplicación
Los dominios de errores ofrecen la mejor resiliencia en un solo dominio de disponibilidad. También puede desplegar instancias o nodos que realicen las mismas tareas en varios dominios de disponibilidad. Este diseño elimina un único punto de fallo mediante la introducción de redundancia.
- Seguridad
Utilice políticas que restrinjan quién puede acceder a qué recursos de OCI y cómo pueden acceder a ellos.
OKE está integrado con Oracle Cloud Infrastructure Identity and Access Management (IAM). IAM proporciona una autenticación sencilla con la funcionalidad de identidad nativa de OCI.
Despliegue
El código de flujo de trabajo GitHub Actions está disponible en GitHub.
- Vaya a GitHub.
- Clone o descargue el repositorio en su computadora local.
- Siga las instrucciones del documento
README
.