Si quieres implementar una app de Kubernetes en configuraciones de clúster que no son de un clúster de GKE, como un clúster de Anthos que ejecuta clústeres de Anthos alojados en VMware o un clúster que ejecuta Istio, debes completar las tareas de esta sección, según corresponda.
Según la app que implementes, es posible que haya pasos adicionales para ejecutar la app en tu clúster. Consulta la documentación del proveedor de la app para obtener información sobre cómo configurar la app.
Ir a las apps de Anthos en Cloud Marketplace
Implementa clústeres que ejecutan Istio
En los clústeres que ejecutan Istio, las conexiones externas a servicios de terceros (como los repositorios de paquetes del SO) se bloquean de forma predeterminada. Debes configurar el tráfico de salida de Istio para habilitar el acceso a los servicios externos.
Implementa en clústeres de Anthos en VMware
Solo puedes implementar clústeres de Anthos alojados en clústeres de VMware en apps de Cloud Marketplace que sean compatibles con esta configuración. Para verificar si una app admite clústeres de Anthos alojados en VMware, abre la ficha de Cloud Marketplace de la app y busca la siguiente declaración en la descripción general: “La app admite la implementación de GKE On-Prem”.
Después de verificar que la app sea compatible con clústeres de Anthos alojados en VMware, completa estas tareas antes de implementar la app:
Si implementas la app desde Cloud Marketplace, debes acceder a tus clústeres de Anthos alojados en un clúster de VMware con un token o credenciales para una cuenta de servicio de Kubernetes (KSA) que tenga la función
cluster-admin
de Kubernetes.Si implementas con la línea de comandos, debes tener la función
cluster-admin
para los clústeres de Anthos alojados en el clúster de VMware.Debes configurar el acceso a la red en Container Registry para que el clúster pueda descargar las imágenes de contenedor de la aplicación.
Debes configurar la autenticación de Docker en los clústeres de Anthos alojados en el clúster de VMware para acceder a Container Registry a fin de acceder a las imágenes de la app.
Después de completar estas tareas, abre la ficha de Cloud Marketplace de la aplicación y sigue los pasos para implementar la aplicación.
Configura el acceso de red a Container Registry
Para descargar las imágenes de contenedor de la aplicación, asegúrate de que tu clúster tenga acceso de red en Container Registry. El host del clúster debe poder hacer ping en marketplace.gcr.io
. Para habilitar el acceso, es posible que debas realizar una o más de las siguientes acciones:
Crea una regla de firewall para permitir el acceso a
marketplace.gcr.io
.Si usas un proxy HTTP o HTTPS, permite
marketplace.gcr.io/*
y configura el daemon de Docker para extraer imágenes a través de tu proxy.Para conocer los pasos detallados, consulta Reglas de proxy y firewall.
Si usas una nube privada virtual (VPC), configura el host para el acceso privado a Google.
Si deseas usar un registro privado para tus clústeres de Anthos alojados en la instalación de VMware, configura tu registro de Docker y copia las imágenes desde la app.
Si deseas obtener los pasos detallados, consulta Configura un registro privado de Docker para la instalación.
Configura la autenticación de Docker para acceder a Container Registry
Para permitir que tus clústeres de Anthos alojados en el clúster de VMware accedan a las imágenes de la app en Container Registry, debes crear una clave de cuenta de servicio de Google Cloud y anotar el espacio de nombres de la app con la clave. Luego, la clave se aplica mediante parches como un imagePullSecret
en la cuenta de servicio de Kubernetes (KSA) predeterminada del espacio de nombres cuando implementas la aplicación.
La primera vez que implementes una app en un clúster de Anthos alojados en un clúster de VMware, también debes crear un espacio de nombres llamado application-system
para los componentes de Cloud Marketplace y aplicar un imagePullSecret
a la cuenta de servicio predeterminada para el espacio de nombres.
Sigue estos pasos para configurar la autenticación en Container Registry:
Crea una nueva cuenta de servicio de Google Cloud. No es necesario otorgar ninguna función a la cuenta de servicio.
Para obtener información sobre cómo crear una cuenta de servicio, consulta Crea y administra cuentas de servicio.
Crea una clave para la cuenta de servicio y descárgala como un archivo JSON. Si deseas obtener los pasos para crear y descargar la clave, consulta Crea y administra claves de cuentas de servicio.
Si corresponde, sube la clave JSON a la estación de trabajo que usas para conectarte a tus clústeres de Anthos alojados en el clúster de VMware.
Si implementas una aplicación desde Cloud Marketplace por primera vez, sigue estos pasos con el fin de configurar tu espacio de nombres
application-system
con un secreto para acceder a Container Registry. Si ya configuraste el espacio de nombres, omite este paso.Crea un espacio de nombres
application-system
en tu clúster.Crea el secreto que contiene un
imagePullSecret
enapplication-system
mediante el siguiente comando:JSON_KEY_FILENAME=path_to/service_account_key.json IMAGEPULLSECRET_NAME=gcr-json-key kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \ --namespace="application-system" \ --docker-server=gcr.io \ --docker-username=_json_key \ --docker-password="$(cat $JSON_KEY_FILENAME)"
Aplica este
imagePullSecret
a la ServiceAccount predeterminada en el espacio de nombresapplication-system
mediante el siguiente comando:kubectl patch sa default -n application-system -p '"imagePullSecrets": [{"name": "gcr-json-key" }]'
En cada espacio de nombres en el que quieras implementar una aplicación, debes crear un secreto nuevo de Kubernetes y anotar el espacio de nombres con el secreto. No puedes volver a usar un objeto secreto de otro espacio de nombres.
Crea un secreto de Kubernetes para acceder a Container Registry mediante la clave de la cuenta de servicio de Google Cloud:
JSON_KEY_FILENAME=path_to/service_account_key.json IMAGEPULLSECRET_NAME=gcr-json-key kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \ --namespace=$NAMESPACE_NAME \ --docker-server=gcr.io \ --docker-username=_json_key \ --docker-password="$(cat ~/$JSON_KEY_FILENAME)"
En este comando,
$NAMESPACE_NAME
es el espacio de nombres que deseas usar para la aplicación.Anota el espacio de nombres de la app mediante el siguiente comando:
kubectl annotate namespace $NAMESPACE_NAME marketplace.cloud.google.com/imagePullSecret=$IMAGEPULLSECRET_NAME
Usa este espacio de nombres cuando implementes la app desde Cloud Marketplace, que se describe en Implementa una app de Kubernetes.