En este documento se describe cómo desplegar tus aplicaciones en clústeres de Google Kubernetes Engine.
Cloud Deploy te permite desplegar tus cargas de trabajo basadas en contenedores en cualquier clúster de Google Kubernetes Engine. Todas las funciones de Cloud Deploy se admiten cuando implementas en destinos de GKE.
Antes de empezar
Tener uno o varios clústeres de GKE en los que implementar la aplicación.
Si no tienes ningún clúster de GKE en el que implementar, puedes crearlos.
Asegúrate de que tu cuenta de servicio de ejecución tenga los roles y permisos que necesita.
En este archivo skaffold.yaml
, la estrofa deploy
incluye kubectl
, que indica que Skaffold está renderizando y desplegando en Kubernetes (GKE). Los manifiestos que usas para esta aplicación se
indican en esa sección.
Crea la configuración de destino
Cada destino se puede configurar en el archivo YAML de tu canal de distribución o en un archivo independiente. Además, puedes configurar más de un destino en el mismo archivo, pero deben estar en diferentes secciones kind: Target
.
Los destinos deben definirse en el mismo proyecto y región que el flujo de procesamiento de entrega. Sin embargo, los clústeres en los que se implementan los destinos pueden estar en proyectos y regiones diferentes, siempre que la cuenta de servicio tenga acceso a esos proyectos.
En la definición de destino, crea una sección gke
para que apunte al clúster de GKE:
gke:
cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
Este identificador de recurso de GKE utiliza los siguientes elementos:
[
project_name
] es el nombre del proyecto en el que se ejecuta este clúster. Google CloudEl clúster en el que vas a implementar no tiene que estar en el mismo proyecto que tu flujo de procesamiento de entrega.
[
location
] es la región en la que se creó el clúster.[
cluster_name
] es el nombre que se le asignó al clúster cuando se creó.Puedes encontrar este nombre en la lista de clústeres de tu proyecto, en laGoogle Cloud consola.
A continuación, se muestra un ejemplo de configuración de destino que apunta a un clúster de GKE:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development cluster
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
Crear la configuración de Skaffold
En esta sección se proporciona y se explica un ejemplo de una configuración sencilla de Skaffold que se puede usar al implementar en un clúster de GKE.
A continuación, se muestra un ejemplo de archivo skaffold.yaml
para desplegarlo en un clúster de GKE:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: gke-application
manifests:
rawYaml:
- deployment.yaml
deploy:
kubectl: {}
En Usar Skaffold con Cloud Deploy se describe con más detalle cómo usar Skaffold con tu flujo de procesamiento de entrega.
Prepara tus archivos de manifiesto de Kubernetes
Para desplegar tu aplicación en GKE, debes proporcionar a Cloud Deploy uno o varios manifiestos de Kubernetes, que se rendered y, a continuación, se aplican al clúster o los clústeres de destino para desplegar tu aplicación.
Si no tienes esos manifiestos, créalos antes de intentar desplegar con una canalización de distribución de Cloud Deploy.
Puedes usar Kustomize o Helm para crear manifiestos. También puedes usar Kustomize o Helm si tus manifiestos se basan en plantillas y deben renderizarse.
Visión de conjunto
Ahora que tienes los manifiestos de Kubernetes, la skaffold.yaml
configuración y las definiciones de destino de Cloud Deploy, y que has registrado tus destinos como recursos de Cloud Deploy, puedes invocar tu canal de distribución para crear una versión y hacer que avance por la progresión de los destinos definidos en el canal.
Implementar con un proxy
Puedes especificar un proxy para tu clúster de GKE de destino. Esta opción es para las organizaciones que están configuradas para acceder a sus clústeres solo a través de un proxy HTTP.
Para ello, añada una propiedad proxyUrl
a la estrofa gke
de la configuración de destino:
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
proxyUrl: [URL]
Donde URL
es la URL del proxy.
Desplegar en un clúster privado
Puedes desplegar tu aplicación en un clúster de GKE privado con una de estas tres opciones:
Usar un endpoint de DNS
Es la forma más sencilla de conectarse a un clúster privado.
Define
dnsEndpoint
comotrue
engke
en la configuración de destino.Si tu clúster no tiene configurado un endpoint basado en IP, puedes saltarte este paso. Cloud Deploy se conectará al endpoint de DNS de forma predeterminada, ya que es el único endpoint del plano de control.
Usar una red de nube privada virtual
Puedes configurar un destino para desplegarlo en un clúster privado de GKE conectado a una red de nube privada virtual:
-
Un clúster privado es un clúster nativo de VPC cuyos nodos y pods están aislados de forma predeterminada de la red pública de Internet.
Si tienes previsto usar la IP interna del destino del clúster privado, define
internalIp
comotrue
engke
en la configuración de destino. En Cloud Build, crea un grupo de trabajadores privados que puedas usar para implementar en este clúster privado.
Configura el entorno de ejecución para que use ese grupo privado.
Debes usar este grupo para
RENDER
. También puedes usarlo paraDEPLOY
y paraVERIFY
. Aquí tienes un ejemplo que usaRENDER
yDEPLOY
:executionConfigs: - usages: - RENDER - DEPLOY workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
Consulta más información en los artículos Acceder a clústeres privados de GKE desde grupos privados de Cloud Build con Identity Service para GKE y Acceder a clústeres privados de GKE con grupos privados de Cloud Build.
Consideraciones sobre proyectos y permisos
Puedes configurar un destino para que use un grupo de trabajadores privado que pueda desplegarse en un clúster privado. Sin embargo, hay algunas cosas que debes tener en cuenta si los recursos están en proyectos diferentes.
- Cuando Cloud Deploy y el grupo de trabajadores están en proyectos independientes
Para comunicarse con un grupo privado que tenga acceso a una VPC y que esté en un proyecto diferente al de destino, el agente de servicio de Cloud Deploy necesita permisos suficientes para comunicarse con ese proyecto.
La cuenta de servicio de ejecución también necesita permisos para acceder al segmento de Cloud Storage.
- Cuando el grupo de trabajadores y el clúster están en proyectos independientes
Si el clúster de GKE privado está en un proyecto diferente al del grupo de trabajadores privado, la cuenta de servicio de ejecución debe tener permisos suficientes para comunicarse con el proyecto en el que se encuentra el clúster.
Usar destinos de GKE Enterprise y la pasarela de conexión
Puedes configurar un destino para desplegarlo en un clúster de GKE privado mediante destinos de Anthos y gateway de conexión.
Con este método, no es necesario que uses una nube privada virtual ni conexiones de red privada virtual.
Siguientes pasos
Prueba la guía de inicio rápido para desplegar una aplicación en GKE.
Invocar el flujo de procesamiento de entrega para crear una versión
Consulta más información sobre cómo configurar destinos de Cloud Deploy.
Consulta más información sobre cómo usar Skaffold con Cloud Deploy.
Consulta información sobre los entornos de ejecución de Cloud Deploy.