Configurar Ingress for Anthos

En esta página, se muestra cómo configurar Ingress for Anthos para enrutar tráfico en varios clústeres de diferentes regiones. Ingress for Anthos (Ingress) es un controlador de Ingress de varios clústeres alojado en la nube para clústeres de Anthos. Es un servicio alojado por Google que admite la implementación de recursos de balanceo de cargas compartidos en clústeres y regiones.

También puedes obtener más información sobre cómo funciona Ingress for Anthos y cómo funciona el balanceador de cargas de HTTP(S) externo.

Requisitos de Ingress for Anthos

Ingress for Anthos es compatible con los siguientes clústeres:

  • Clústeres de GKE en Google Cloud. Por el momento, los clústeres de GKE On-prem no son compatibles.
  • Clústeres de GKE en todos los canales de versiones de GKE
  • Clústeres en modo nativo de la VPC (IP de alias). Para obtener más información, consulta Crea un clúster nativo de la VPC.
  • Clústeres que tienen habilitado el balanceo de cargas de HTTP, que está habilitado de forma predeterminada. Ten en cuenta que Ingress for Anthos solo admite el balanceador de cargas de HTTP(S) externo.

Además, Ingress for Anthos requiere la versión 290 o una versión posterior del SDK de Cloud (gcloud --version) para que puedas registrar tus clústeres.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

Establece la configuración de gcloud predeterminada mediante uno de los siguientes métodos:

  • Usa gcloud init si deseas ver una explicación sobre cómo configurar parámetros predeterminados.
  • Usa gcloud config para establecer el ID, la zona y la región del proyecto de manera individual.

Usa gcloud init

Si recibes el error One of [--zone, --region] must be supplied: Please specify location, completa esta sección.

  1. Ejecuta gcloud init y sigue las instrucciones:

    gcloud init

    Si usas SSH en un servidor remoto, usa la marca --console-only para evitar que el comando abra un navegador:

    gcloud init --console-only
  2. Sigue las instrucciones a fin de autorizar a gcloud para que use tu cuenta de Google Cloud.
  3. Crea una configuración nueva o selecciona una existente.
  4. Elige un proyecto de Google Cloud.
  5. Elige una zona predeterminada de Compute Engine.

Usa gcloud config

  • Establece tu ID del proyecto predeterminado:
    gcloud config set project project-id
  • Si trabajas con clústeres zonales, establece tu zona de procesamiento predeterminada:
    gcloud config set compute/zone compute-zone
  • Si trabajas con clústeres regionales, establece tu región de procesamiento predeterminada:
    gcloud config set compute/region compute-region
  • Actualiza gcloud a la versión más reciente:
    gcloud components update
  • Habilita la API de Environ en tu proyecto:

    gcloud services enable gkehub.googleapis.com
    
  • Habilita la API de Anthos en tu proyecto:

    gcloud services enable anthos.googleapis.com
    
  • Habilita la API de Ingress for Anthos en tu proyecto:

    gcloud services enable multiclusteringress.googleapis.com
    
  • Para usar Ingress for Anthos, tus clústeres deben estar en modo nativo de la VPC. Ingress for Anthos usa grupos de extremos de red (NEG) a fin de crear backends para el balanceador de cargas de HTTP(S). Si los clústeres existentes no están en modo nativo de la VPC, bórralos y vuelve a crearlos, a fin de garantizar que el modo nativo de la VPC esté habilitado con la marca --enable-ip-alias.

Prepara el entorno

Crea los clústeres

En este ejemplo, se usan los siguientes clústeres:

NAME      LOCATION
gke-eu    europe-west1-c
gke-us    us-central1-a
  1. Crea el clúster gke-eu:

    gcloud container clusters create gke-eu --zone europe-west1-c \
      --release-channel stable --enable-ip-alias
    
  2. Crea el clúster gke-us:

    gcloud container clusters create gke-us --zone us-central1-a \
      --release-channel stable --enable-ip-alias
    

Registra tus clústeres

Connect te permite operar los clústeres de Kubernetes en los entornos híbridos. Cada clúster se debe registrar como miembro de un Environ. Para obtener más información, consulta Arquitectura de Ingress for Anthos.

  1. Asegúrate de haber completado los requisitos para registrar un clúster.

  2. Asegúrate de haber creado una cuenta de servicio y de haber descargado su clave privada.

  3. Encuentra los URI para tus clústeres:

    gcloud container clusters list --uri
    
  4. Registra el clúster gke-eu:

    gcloud container hub memberships register gke-eu \
        --project=project-id \
        --gke-uri=uri \
        --service-account-key-file=service-account-key-path
    

    En el ejemplo anterior, se ilustra lo siguiente:

    • project-id es el ID del proyecto.
    • uri es el URI del clúster de GKE.
    • service-account-key-path es la ruta del archivo local al archivo JSON de clave privada de la cuenta de servicio que se descargó como parte de los requisitos de registro. Esta clave de cuenta de servicio se almacena como un secreto con el nombre creds-gcp en el espacio de nombres gke-connect.
  5. Registra el clúster gke-us:

    gcloud container hub memberships register gke-us \
        --project=project-id \
        --gke-uri=uri \
        --service-account-key-file=service-account-key-path
    
  6. Verifica que tus clústeres estén registrados:

    gcloud container hub memberships list
    

    El resultado debe ser similar a este:

    NAME                                  EXTERNAL_ID
    gke-us                                0375c958-38af-11ea-abe9-42010a800191
    gke-eu                                d3278b78-38ad-11ea-a846-42010a840114
    

Especifica un clúster de configuración

El clúster de configuración es un clúster de GKE que eliges a fin de que sea el punto central de control para Ingress en los clústeres que son miembros. A diferencia de Ingress de GKE, el controlador de Ingress de Anthos no se encuentra en un solo clúster, sino que es un servicio administrado por Google que inspecciona los recursos en el clúster de configuración. Este clúster de GKE se usa como servidor de la API de varios clústeres para almacenar recursos como MultiClusterIngress y MultiClusterService. Cualquier clúster miembro puede convertirse en un clúster de configuración, pero solo puede haber un clúster de configuración a la vez.

Para obtener más información sobre los clústeres de configuración, consulta Diseño del clúster de configuración.

Si el clúster de configuración está inactivo o es inaccesible, los objetos MultiClusterIngress y MultiClusterService no se pueden actualizar en los clústeres que son miembros. Los balanceadores de cargas y el tráfico pueden seguir funcionando de forma independiente al clúster de configuración en el caso de una interrupción.

La habilitación de Ingress for Anthos y la selección del clúster de configuración se realizan en el mismo paso. El clúster de GKE que elijas como clúster de configuración ya debe estar registrado en un entorno.

  1. Identifica el URI del clúster que deseas especificar como el clúster de configuración:

    gcloud container hub memberships list
    

    El resultado es similar al siguiente ejemplo:

    NAME                                  EXTERNAL_ID
    gke-us                                0375c958-38af-11ea-abe9-42010a800191
    gke-eu                                d3278b78-38ad-11ea-a846-42010a840114
    
  2. Habilita Ingress for Anthos y selecciona gke-us como el clúster de configuración:

    gcloud alpha container hub ingress enable \
      --config-membership=projects/project_id/locations/global/memberships/gke-us
    

    El resultado es similar al siguiente ejemplo:

    Waiting for Feature to be created...done.
    

    Ten en cuenta que este proceso puede tomar unos minutos, ya que el controlador debe iniciarse. Si se ejecuta de forma correcta, el resultado será similar al siguiente ejemplo:

    Waiting for Feature to be created...done.
    Waiting for controller to start...done.
    

    Si no se ejecuta de forma correcta, se agotará el tiempo de espera del comando, como se muestra a continuación:

    Waiting for controller to start...failed.
    ERROR: (gcloud.alpha.container.hub.ingress.enable) Controller did not start in 2 minutes. Please use the `describe` command to check Feature state for debugging information.
    

    Si no se produjo ningún error en el paso anterior, puedes continuar con los pasos siguientes. Si se produjo un error en el paso anterior, verifica el estado de la función. Este debe indicar exactamente cuál fue el problema:

    gcloud alpha container hub ingress describe
    

    A continuación, se muestra un ejemplo de un estado con error:

    featureState:
      detailsByMembership:
        projects/393818921412/locations/global/memberships/0375c958-38af-11ea-abe9-42010a800191:
          code: FAILED,
          description: "... is not a VPC-native cluster..."
    lifecycleState: ENABLED
    multiclusteringressFeatureSpec:
      configMembership: projects/project_id/locations/global/memberships/0375c958-38af-11ea-abe9-42010a800191
    name: projects/project_id/locations/global/features/multiclusteringress
    updateTime: '2020-01-22T19:16:51.172840703Z'
    

    Para obtener más información sobre estos mensajes de error, consulta Operaciones y solución de problemas.

Implementación de la VPC compartida

Ingress for Anthos se puede implementar para clústeres en una red de VPC compartida, pero todos los clústeres de GKE de backend participantes deben estar en el mismo proyecto. No se puede tener clústeres de GKE en diferentes proyectos que usen el mismo VIP de Cloud Load Balancing.

En las redes de VPC no compartidas, el controlador de Ingress for Anthos administra las reglas de firewall para permitir que las verificaciones de estado pasen de Cloud Load Balancing a las cargas de trabajo del contenedor.

En una red de VPC compartida, Ingress for Anthos no puede administrar estas reglas de firewall, porque es el proyecto host el que administra los firewalls, y los administradores de proyectos no tienen acceso a ellos. El modelo de seguridad centralizado de las redes de VPC compartidas centraliza de forma intencional el control de red. En las redes de VPC compartida, el administrador de un proyecto host debe crear de forma manual las reglas de firewall necesarias para el tráfico de Cloud Load Balancing, en lugar de Ingress for Anthos.

El siguiente comando muestra la regla de firewall que debes crear si tus clústeres están en una red de VPC compartida. Los rangos de origen son los que usa Cloud Load Balancing para enviar tráfico a los backends en Google Cloud. Esta regla debe existir durante la vida útil de Ingress for Anthos y solo se puede quitar si ya no se usa Ingress for Anthos o Cloud Load Balancing en GKE.

  • Si tus clústeres están en una red de VPC compartida, crea la siguiente regla de firewall:

    gcloud compute firewall-rules create firewall-rule-name \
        --project host-project \
        --network shared-vpc \
        --direction INGRESS \
        --allow tcp:0-65535 \
        --source-ranges 130.211.0.0/22,35.191.0.0/16
    

¿Qué sigue?