Implementar apps de Kubernetes en clústeres que no sean de Google Kubernetes Engine (GKE)

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:

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:

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

    1. Crea un espacio de nombres application-system en tu clúster.

    2. Crea el secreto que contiene un imagePullSecret en application-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)"
      
    3. Aplica este imagePullSecret a la ServiceAccount predeterminada en el espacio de nombres application-system mediante el siguiente comando:

      kubectl patch sa default -n application-system -p '"imagePullSecrets": [{"name": "gcr-json-key" }]'
      
  5. 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.

    1. 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.

    2. 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.