Configurar el proyecto y el clúster de GKE por tu cuenta

Cuando instalas Cloud Service Mesh con asmcli, puede configurar tu proyecto y tu clúster de GKE on Google Cloud por ti si incluyes la marca --enable_all o las marcas de habilitación más específicas. Si prefieres hacer la configuración tú mismo en lugar de que asmcli haga los cambios, sigue los pasos que se indican en esta página.

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

De forma predeterminada, asmcli no instala istio-ingressgateway. Te recomendamos que implementes y gestiones el plano de control y las pasarelas por separado. Cloud Service Mesh admite la inyección automática para las implementaciones de gateway, lo que facilita las actualizaciones de Cloud Service Mesh. Después de actualizar Cloud Service Mesh, reinicia las pasarelas igual que los servicios para aplicar la nueva configuración del plano de control. Para obtener más información, consulta el artículo sobre cómo instalar y actualizar gateways.

Antes de empezar

Configurar el 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 de control de la consola de Google Cloud .

      Ir a la página Panel de control

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

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

  2. Crea las siguientes variables de entorno:

    • Define el grupo de cargas de trabajo con el ID de proyecto:

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

      export MESH_ID="proj-PROJECT_NUMBER"
      
  3. Asigna los roles de Gestión de Identidades y Accesos (IAM) necesarios. Si eres propietario del proyecto, tienes todos los permisos necesarios para completar la instalación. Si no eres propietario de un proyecto, necesitas que alguien que lo sea te conceda los siguientes roles de gestión de identidades y accesos específicos. En el siguiente comando, sustituye PROJECT_ID por el ID del proyecto del paso anterior y GCP_EMAIL_ADDRESS por la cuenta que usas para iniciar sesión en 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 al ejecutar asmcli, se definen los roles de gestión de identidades y accesos necesarios.

  4. Habilita las APIs 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 APIs:

    API Finalidad Se puede inhabilitar
    meshconfig.googleapis.com Cloud Service Mesh usa la API Mesh Configuration para reenviar datos de configuración de tu malla a Google Cloud. Además, si habilitas la API Mesh Configuration, podrás acceder a las páginas de Cloud Service Mesh en la Google Cloud consola y usar la autoridad de certificación de Cloud Service Mesh. No
    meshca.googleapis.com Relacionado con la autoridad de certificación de Cloud Service Mesh que usa Cloud Service Mesh gestionado. No
    container.googleapis.com Obligatorio para crear clústeres de Google Kubernetes Engine (GKE). No
    gkehub.googleapis.com Se requiere para gestionar la malla como una flota. No
    monitoring.googleapis.com Obligatorio para recoger telemetría de cargas de trabajo de malla. No
    stackdriver.googleapis.com Es necesario para usar la interfaz de usuario de los Servicios. No
    opsconfigmonitoring.googleapis.com Es necesario para usar la interfaz de usuario de Servicios en clústeresGoogle Cloud . No
    connectgateway.googleapis.com Es necesario para que el plano de control de Cloud Service Mesh gestionado pueda acceder a las cargas de trabajo de la malla. Sí*
    trafficdirector.googleapis.com Habilita un plano de control gestionado de alta disponibilidad y escalable. Sí*
    networkservices.googleapis.com Habilita un plano de control gestionado de alta disponibilidad y escalable. Sí*
    networksecurity.googleapis.com Habilita un plano de control gestionado de alta disponibilidad y escalable. Sí*

    Habilitar las APIs puede tardar un minuto o más en completarse. Cuando las APIs estén habilitadas, verás un resultado similar al siguiente:

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

    Si incluyes la marca --enable_all o --enable_apis al ejecutar asmcli, se habilitarán las APIs necesarias.

Configurar un clúster

Si incluye la marca --enable_all o una de las marcas de habilitación más granulares, asmcli configura el clúster por usted.

  1. Define la zona o la región predeterminada de Google Cloud CLI. Si no defines 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, define la zona predeterminada:

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

      gcloud config set compute/region CLUSTER_LOCATION
      
  2. Define la mesh_id etiqueta del clúster. Si tu clúster tiene etiquetas que quieres conservar, debes incluirlas al añadir la etiqueta mesh_id.

    1. Para ver si tu clúster tiene etiquetas, sigue estos pasos:

      gcloud container clusters describe CLUSTER_NAME \
          --project PROJECT_ID
      

      Busca el campo resourceLabels en los resultados. Cada etiqueta se almacena en una línea independiente debajo del campo resourceLabels, por ejemplo:

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

      Para mayor comodidad, puedes añadir las etiquetas a una variable de entorno. En el siguiente ejemplo, sustituye YOUR_EXISTING_LABELS por una lista separada por comas de las etiquetas que ya tienes en tu clúster con el formato KEY=VALUE. Por ejemplo: env=dev,release=stable

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

      • Si tu clúster tiene etiquetas que quieres conservar, actualízalo con mesh_id y las etiquetas que ya tenga:

        gcloud container clusters update CLUSTER_NAME \
            --project PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
        
      • Si tu clúster no tiene ninguna etiqueta, actualízalo con solo 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}
    

    Habilitar Workload Identity puede tardar entre 10 y 15 minutos.

  4. Registra el clúster en la flota.

  5. Inicializa tu proyecto para prepararlo para la instalación. Entre otras cosas, este comando crea una cuenta de servicio para que los componentes del plano de datos, como el proxy sidecar, puedan acceder de forma segura a los datos y recursos de tu proyecto. En el siguiente comando, sustituye 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.

Siguientes pasos