Configura tu proyecto y tu clúster de GKE

Cuando instalas Anthos Service Mesh mediante asmcli, puedes configurar el proyecto y el clúster de GKE en Google Cloud si incluyes la marca --enable_all marca o las marcas de habilitación más detalladas. Si prefieres realizar la configuración tú mismo en lugar de que asmcli haga los cambios, sigue los pasos de esta página.

Si ya tienes instalada una versión anterior de Anthos Service Mesh, no es necesario que realices ningún cambio en tu proyecto o clúster antes de usar asmcli para actualizar a la versión más reciente de Anthos Service Mesh.

De forma predeterminada, asmcli no se instala istio-ingressgateway. Te recomendamos que implementes y administres el plano de control y las puertas de enlace por separado. Anthos Service Mesh admite la inserción automática para las implementaciones de puertas de enlace, lo que facilita las actualizaciones de Anthos Service Mesh. Después de actualizar Anthos Service Mesh, reinicia las puertas de enlace, al igual que tus servicios, para obtener la nueva configuración del plano de control. Para obtener más información, consulta Instala y actualiza puertas de enlace.

Antes de comenzar

Configure su proyecto

  1. Obtén el ID y el número del proyecto en el que se creó el clúster.

    gcloud

    Ejecuta el siguiente comando:

    gcloud projects list
    

    Consola

    1. Ve a la página Panel en la consola de Google Cloud.

      Ir a la página Panel

    2. Haz clic en la lista desplegable en la parte superior de la página. En la ventana Seleccionar desde que aparece, elige tu proyecto.

      El ID y el número del proyecto se muestran en la tarjeta de Información del proyecto del panel del proyecto:

  2. Crea las siguientes variables de entorno:

    • Configura el grupo de cargas de trabajo con el ID del proyecto:

      export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
      
    • Configura el ID de malla con el número del proyecto:

      export MESH_ID="proj-PROJECT_NUMBER"
      
  3. Configura las funciones de administración de identidades y accesos (IAM) requeridas. Si eres el propietario del proyecto, tienes todos los permisos necesarios para completar la instalación. Si no eres un propietario del proyecto, necesitas que alguien te otorgue las siguientes funciones específicas de IAM. En el siguiente comando, reemplaza PROJECT_ID por el ID del proyecto del paso anterior y GCP_EMAIL_ADDRESS por la cuenta que usas para acceder a Google Cloud.

    ROLES=(
    'roles/servicemanagement.admin' \
    'roles/serviceusage.serviceUsageAdmin' \
    'roles/meshconfig.admin' \
    'roles/compute.admin' \
    'roles/container.admin' \
    'roles/resourcemanager.projectIamAdmin' \
    'roles/iam.serviceAccountAdmin' \
    'roles/iam.serviceAccountKeyAdmin' \
    'roles/gkehub.admin')
    for role in "${ROLES[@]}"
    do
      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "user:GCP_EMAIL_ADDRESS" \
        --role="$role"
    done
    

    Si incluyes la marca --enable_all o --enable_gcp_iam_roles cuando ejecutas asmcli, se configuran las funciones de IAM necesarias.

  4. Habilita las API de Google necesarias:

    gcloud services enable \
        --project=PROJECT_ID \
        mesh.googleapis.com
    

    Además de mesh.googleapis.com, este comando también habilita las siguientes API:

    API Descripción
    meshconfig.googleapis.com Reenvía datos de configuración de la malla a Google Cloud. Además, te permite acceder a las páginas de Anthos Service Mesh en la consola de Google Cloud y usar la autoridad certificada de Anthos Service Mesh (CA de Mesh).
    meshca.googleapis.com API de autoridad certificada de Anthos Service Mesh. Permite el uso de un proveedor de certificados administrados, que se incluye en Anthos Service Mesh. Esta API está habilitada incluso si usas Certificate Authority Service o Istio CA.
    container.googleapis.com Se usa para compilar y administrar aplicaciones basadas en contenedores, con tecnología Kubernetes de código abierto.
    monitoring.googleapis.com Administra tus datos y parámetros de configuración de Cloud Monitoring. Se usa para almacenar la telemetría de aplicaciones que se muestra en la consola de Google Cloud.
    gkehub.googleapis.com Se usa para configurar el alcance de tu malla. Para obtener más información, consulta la Documentación de administración de Fleet.
    stackdriver.googleapis.com Lo usa Google Cloud's operations suite para recopilar indicadores en aplicaciones, plataformas y servicios internos y externos de Google Cloud.
    opsconfigmonitoring.googleapis.com Recopila, agrega y, también, indexa recursos en Google Cloud, lo que habilita la IU de Anthos Service Mesh.
    connectgateway.googleapis.com Permite que la infraestructura de Google se conecte de forma segura a tus clústeres de GKE registrados en múltiples nubes y entornos híbridos.

    Habilitar las API puede tomar un minuto o más en completarse. Cuando las API están habilitadas, ves un resultado similar al siguiente:

    Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished
    successfully.
    

    Si incluyes la marca --enable_all o --enable_apis cuando ejecutas asmcli, se habilitarán las API necesarias.

Configura tu clúster

Si incluyes la marca --enable_all o una de las marcas de habilitación más detalladas, la secuencia de comandos asmcli configura tu clúster por ti.

  1. Establece la zona o región predeterminada para Google Cloud CLI. Si no estableces el valor predeterminado aquí, asegúrate de especificar la opción --zone o --region en los comandos gcloud container clusters de esta página.

    • Si tienes un clúster de una sola zona, configura la predeterminada:

      gcloud config set compute/zone CLUSTER_LOCATION
      
    • Si tienes un clúster regional, configura la región predeterminada:

      gcloud config set compute/region CLUSTER_LOCATION
      
  2. Configura la etiqueta mesh_id en el clúster. Si el clúster tiene etiquetas existentes que deseas conservar, debes incluirlas cuando agregues la etiqueta de mesh_id.

    1. Para ver si el clúster tiene etiquetas existentes, haz lo siguiente:

      gcloud container clusters describe CLUSTER_NAME \
          --project PROJECT_ID
      

      Busca el campo resourceLabels en el resultado. Cada etiqueta se almacena en una línea separada en el campo resourceLabels, por ejemplo:

      resourceLabels:
        csm: ''
        env: dev
        release: stable

      Para mayor comodidad, puedes agregar las etiquetas a una variable de entorno. A continuación, reemplaza YOUR_EXISTING_LABELS por una lista separada por comas de las etiquetas existentes en el clúster con el formato KEY=VALUE, por ejemplo env=dev,release=stable:

      export EXISTING_LABELS="YOUR_EXISTING_LABELS"
      
    2. Establece la etiqueta mesh_id:

      • Si el clúster tiene etiquetas existentes que deseas conservar, actualiza el clúster con el mesh_id y las etiquetas existentes:

        gcloud container clusters update CLUSTER_NAME \
            --project PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
        
      • Si el clúster no tiene ninguna etiqueta existente, actualízalo solo con la etiqueta mesh_id:

        gcloud container clusters update CLUSTER_NAME \
            --project=PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID}
        
  3. Habilita Workload Identity

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --workload-pool=${WORKLOAD_POOL}
    

    La habilitación de Workload Identity puede tardar de 10 a 15 minutos.

  4. Registra el clúster en la flota.

  5. Inicializa tu proyecto a fin de prepararlo para la instalación. Entre otras cosas, con este comando puedes crear una cuenta de servicio para permitir que los componentes del plano de datos, como el proxy de sidecar, accedan a los datos y recursos de tu proyecto de forma segura: En el siguiente comando, reemplaza FLEET_PROJECT_ID por el proyecto host de la flota:

    curl --request POST  \
     --header "Authorization: Bearer $(gcloud auth print-access-token)" \
     --header "Content-Type: application/json" \
     --data '{"workloadIdentityPools":["FLEET_PROJECT_ID.hub.id.goog","FLEET_PROJECT_ID.svc.id.goog","PROJECT_ID.svc.id.goog"]}' \
     "https://meshconfig.googleapis.com/v1alpha1/projects/PROJECT_ID:initialize"
    

    El comando responde con llaves vacías: {}.

  6. Habilita Cloud Monitoring y Cloud Logging en GKE:

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --enable-stackdriver-kubernetes
    

Tu proyecto y tu clúster ya están listos para una nueva instalación con asmcli.

¿Qué sigue?