Configura tu proyecto y tu clúster de GKE

Cuando instalas Cloud Service Mesh con asmcli, puedes configurar el proyecto y el clúster de GKE en Google Cloud si incluyes la marca --enable_all 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 Cloud 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 Cloud 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. Cloud Service Mesh admite la inserción automática para las implementaciones de puertas de enlace, lo que facilita las actualizaciones de Cloud Service Mesh. Después de actualizar Cloud 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
    

    Console

    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 Objetivo Se puede inhabilitar
    meshconfig.googleapis.com Cloud Service Mesh usa la API de configuración de malla para retransmitir datos de configuración de tu malla a Google Cloud. Además, habilitar la API de configuración de malla te permite acceder a las páginas de Cloud Service Mesh en la consola de Google Cloud y usar la autoridad certificadora de Cloud Service Mesh. No
    meshca.googleapis.com Se relaciona con la autoridad certificadora de Cloud Service Mesh que usa Cloud Service Mesh administrado. No
    container.googleapis.com Obligatorio para crear clústeres de Google Kubernetes Engine (GKE). No
    gkehub.googleapis.com Es obligatorio para administrar la malla como una flota. No
    monitoring.googleapis.com Se requiere para capturar la telemetría de las cargas de trabajo en malla. No
    stackdriver.googleapis.com Obligatorio para usar la IU de los servicios. No
    opsconfigmonitoring.googleapis.com Obligatorio para usar la IU de servicios en clústeres fuera de Google Cloud. No
    connectgateway.googleapis.com Es obligatorio para que el plano de control de Cloud Service Mesh administrado pueda acceder a las cargas de trabajo de la malla. Sí*
    trafficdirector.googleapis.com Habilita un plano de control administrado escalable y con alta disponibilidad. Sí*
    networkservices.googleapis.com Habilita un plano de control administrado escalable y con alta disponibilidad. Sí*
    networksecurity.googleapis.com Habilita un plano de control administrado escalable y con alta disponibilidad. Sí*

    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?