Reference

En esta página, se describen los argumentos disponibles para la secuencia de comandos y se proporcionan detalles sobre los cambios que genera la secuencia de comandos en tu proyecto y en el clúster de GKE.

Opciones

-p|--project_id CLUSTER_PROJECT_ID
El ID del proyecto en el que se creó el clúster.
-n|--cluster_name CLUSTER_NAME
Es el nombre del clúster.
-l|--cluster_location CLUSTER_LOCATION
Es la zona (para clústeres de una sola zona) o la región (para clústeres regionales) en la que se creó el clúster.
-m|--mode {install|migrate|upgrade}

Puedes usar --mode install para una instalación, actualización o migración nuevas desde Istio. Cuando usas --mode install para actualizaciones o migraciones, install_asm permite la actualización o la migración sin importar la versión del plano de control en el clúster. Las marcas migrate y upgrade solo permiten actualizaciones o migraciones desde la versión secundaria anterior o una versión de parche anterior.

Si usas --mode install para actualizaciones o migraciones, asegúrate de especificar la misma autoridad certificadora (CA) que se encuentra habilitada en el clúster. Cambiar la CA dará como resultado un tiempo de inactividad. La marca --upgrade no te permite cambiar la CA, lo que evita el tiempo de inactividad involuntario.

Si migras desde Istio, puedes cambiar la CA y habilitar la autoridad certificadora de Anthos Service Mesh (CA de Mesh). Si no puedes programar el tiempo de inactividad para la migración a la CA de Mesh, aún hay una ruta de migración a la CA de Mesh, pero se requieren pasos adicionales. Para obtener más información, consulta Migra a la CA de Mesh.

-c|--ca {mesh_ca|citadel}

En las instalaciones nuevas, si deseas usar CA de Mesh, no tienes que incluir esta opción porque la secuencia de comandos se establece en CA de forma predeterminada. Para las actualizaciones, no necesitas incluir esta opción, ya que la secuencia de comandos no te permite cambiar la CA. En el caso de las migraciones, debes especificar citadel o mesh_ca. Si puedes programar el tiempo de inactividad para la migración, te recomendamos que uses mesh_ca. Para obtener más información sobre qué CA usar, consulta Elige una autoridad certificadora. Si deseas ver opciones adicionales que debes especificar cuando usas la CA de Istio, consulta Opciones para un certificado personalizado para la CA de Istio.

--co|--custom_overlay YAML_FILE

El nombre del archivo YAML de recurso personalizado (CR) IstioOperator para habilitar una característica que no está habilitada de forma predeterminada. La secuencia de comandos debe poder ubicar el archivo YAML, por lo que este debe estar en el mismo directorio que la secuencia de comandos, o puedes especificar una ruta de acceso relativa. Para agregar varios archivos, especifica --co|--custom_overlay y el nombre del archivo, por ejemplo: --co overlay_file1.yaml --co overlay_file2.yaml --co overlay_file3.yaml

-o|--option OPTION_FILE

El nombre de un archivo YAML del paquete anthos-service-mesh que contiene el CR IstioOperator para habilitar una característica opcional. Cuando incluyes uno de estos archivos, no necesitas descargar primero el paquete anthos-service-mesh ni especificar la extensión .yaml. Si necesitas modificar alguno de los archivos, descarga el paquete anthos-service-mesh, realiza los cambios y usa la opción --custom_overlay. Para agregar varios archivos, especifica -o|--option y el nombre del archivo, por ejemplo: -o option_file1 -o option_file2 -o option_file3

-D|--output_dir DIR_PATH

Si no se especifica, la secuencia de comandos crea un directorio temporal en el que descarga archivos y configuraciones necesarios para instalar Anthos Service Mesh. Especifica la marca --output-dir para especificar una ruta de acceso relativa a un directorio que se usará en su lugar. Una vez completado, el directorio especificado contiene los subdirectorios asm y istio-1.10.6-asm.2. El directorio asm contiene la configuración de la instalación. El directorio istio-1.10.6-asm.2 tiene el contenido extraído del archivo de instalación, que contiene istioctl, muestras y manifiestos. Si especificas --output-dir y el directorio ya contiene los archivos necesarios, la secuencia de comandos usará esos archivos en lugar de volver a descargarlos.

-r|--revision_name REVISION NAME>

Una etiqueta de revisión es un par clave-valor que se configura en el plano de control. La clave de la etiqueta de revisión siempre es istio.io/rev. De forma predeterminada, la secuencia de comandos establece el valor de la etiqueta de revisión según la versión de Anthos Service Mesh, por ejemplo: asm-1106-2. Incluye esta opción si deseas anular el valor predeterminado y especificar el tuyo. El argumento REVISION NAME debe ser una etiqueta DNS-1035, contener caracteres alfanuméricos en minúscula o -, comenzar con una letra y terminar con un carácter alfanumérico (como my-name' o abc-123). La regex que se usa para la validación es '[a-z]([-a-z0-9]*[a-z0-9])?').

-s|--service_account ACCOUNT

El nombre de una cuenta de servicio que se usa para instalar Anthos Service Mesh. Si no se especifica, se usa la cuenta de usuario activa en la configuración de gcloud actual. Si necesitas cambiar la cuenta de usuario activa, ejecuta gcloud auth login.

-k|--key_file FILE_PATH

Es el archivo de claves de una cuenta de servicio. Omite esta opción si no usas una cuenta de servicio.

Opciones para el certificado personalizado de Citadel

Si especificaste --ca citadel y usas una CA personalizada, incluye las siguientes opciones:

  • --ca_cert FILE_PATH: Es el certificado intermedio.
  • --ca_key FILE_PATH: Es la clave para el certificado intermedio.
  • --root_cert FILE_PATH: Es el certificado raíz.
  • --cert_chain FILE_PATH: Es la cadena de certificados.

Para obtener más información, consulta Conecta Certificados de CA existentes.

Marcas de habilitación

Las marcas que comienzan con --enable dejan que la secuencia de comandos habilite la API de Google, establece los permisos necesarios de administración de identidades y accesos (IAM) y actualiza el clúster. Si lo prefieres, puedes actualizar tu proyecto y clúster antes de ejecutar la secuencia de comandos como se describe en las secciones Configura tu proyecto y Configura tu clúster de la guía de instalación de varios proyectos. Todas estas marcas son incompatibles con --only_validate y la secuencia de comandos finaliza con un error en este caso.

-e|--enable_all
Permite que la secuencia de comandos realice todas las acciones de habilitación individuales que se describen a continuación.
--enable_cluster_roles
Permite que la secuencia de comandos intente vincular el usuario o la cuenta de servicio de GCP que ejecuta la secuencia de comandos a la función cluster-admin en el clúster. La secuencia de comandos determina la cuenta de usuario del comando gcloud config get-value core/account. Si ejecutas la secuencia de comandos de forma local con una cuenta de usuario, asegúrate de llamar al comando gcloud auth login antes de ejecutarla. Si necesitas cambiar la cuenta de usuario, ejecuta el comando gcloud config set core/account GCP_EMAIL_ADDRESS, en el que GCP_EMAIL_ADDRESS es la cuenta que usas para acceder a Google Cloud.
--enable_cluster_labels
Permite que la secuencia de comandos configure etiquetas de clúster requeridas.
--enable_gcp_components

Permite que la secuencia de comandos habilite los siguientes servicios y componentes administrados de Google Cloud requeridos:

--enable_gcp_apis

Permite que la secuencia de comandos habilite todas las API de Google requeridas.

--enable_gcp_iam_roles

Permite que la secuencia de comandos configure los permisos de IAM requeridos.

--enable_registration

Permite que la secuencia de comandos registre el clúster en el proyecto en el que este se encuentra. Si no incluyes esta marca, sigue los pasos en Registra un clúster para registrarlo de forma manual. Ten en cuenta que, a diferencia de las otras marcas de habilitación, --enable_registration solo se incluye en --enable_all cuando especificas una opción (como --option vm o --option hub-meshca) que requiere el registro de clústeres. De lo contrario, debes especificar esta marca por separado.

Otras marcas

--dry_run
Imprime comandos, pero no los ejecutes.
--only_validate
Ejecuta la validación, pero no actualices el proyecto o el clúster y no instales Anthos Service Mesh. Esta marca no es compatible con las marcas de habilitación. La secuencia de comandos finaliza con un error si especificas --only_validate con cualquier marca de habilitación.
--print_config
En lugar de instalar Anthos Service Mesh, imprime todos los YAML compilados en resultados estándar (stdout). Todos los demás resultados se escriben en error estándar (stderr), incluso si, por lo general, van con stdout. La secuencia de comandos omite todas las validaciones y la configuración cuando especificas esta marca.
--disable_canonical_service
De forma predeterminada, la secuencia de comandos implementa el controlador del servicio canónico en tu clúster. Si no deseas que la secuencia de comandos implemente el controlador, especifica --disable_canonical_service. Para obtener más información, consulta Habilita o inhabilita el controlador del servicio canónico.
-h|--help
Muestra un mensaje de ayuda que describe las opciones y las marcas, y se cierra.
-v|--verbose
A medida que se ejecuta la secuencia de comandos, imprime el comando que se ejecutará a continuación. Con la marca --verbose, la secuencia de comandos también imprime el comando después de la ejecución.
--version
Imprime la versión de install_asm y se cierra. Si el comando no muestra una versión, descarga la versión más reciente de install_asm_1.10.

Información sobre la secuencia de comandos

Aunque descargues la secuencia de comandos desde una ubicación segura de Cloud Source Repositories, la secuencia de comandos también está disponible en GitHub para que puedas ver lo que hace antes de descargarla. La secuencia de comandos valida que tu proyecto y clúster cumplan con los requisitos de Anthos Service Mesh, y automatiza todos los pasos que harías manualmente para configurar tu proyecto y clúster y, luego, instala Anthos Service Mesh con el comando istioctl install.

Con Anthos Service Mesh 1.10.6, debes usar la versión de la secuencia de comandos install_asm en la rama release-1.10-asm. Para obtener una explicación del control de versiones y el proceso de lanzamiento, consulta Control de versiones y versiones.

Validación

validate_dependencies() {
  validate_node_pool
  validate_k8s
  validate_expected_control_plane

  if [[ "${MODE}" = "migrate" ]]; then
    validate_istio_version
  elif [[ "${MODE}" = "upgrade" ]]; then
    validate_asm_version
    validate_ca_consistency
  fi
}

La secuencia de comandos install_asm verifica lo siguiente:

  • El ID del proyecto, el nombre del clúster y la ubicación del clúster que ingresaste como valores de parámetros son válidos.
  • El clúster cumple con el tipo de máquina mínimo requerido y la cantidad de nodos.

Configura el proyecto

Funciones requeridas

Si incluiste las marcas --enable_all o --enable_gcp_iam_roles, la secuencia de comandos establece los permisos de IAM requeridos.

required_iam_roles() {
  # meshconfig.admin - required for init, stackdriver, UI elements, etc.
  # servicemanagement.admin/serviceusage.serviceUsageAdmin - enables APIs
  if can_modify_gcp_components || \
     can_modify_cluster_labels || \
     can_modify_cluster_roles; then
    echo roles/container.admin
  fi
  if can_modify_gcp_components; then
    echo roles/meshconfig.admin
  fi
  if can_modify_gcp_apis; then
    echo roles/servicemanagement.admin
    echo roles/serviceusage.serviceUsageAdmin
  fi
  if can_modify_gcp_iam_roles; then
    echo roles/resourcemanager.projectIamAdmin
  fi
  if is_sa; then
    echo roles/iam.serviceAccountAdmin
  fi
  if can_register_cluster; then
    echo roles/gkehub.admin
  fi
  if [[ "${CA}" = "gcp_cas" ]]; then
    echo roles/privateca.admin
  fi
  if [[ "${_CI_I_AM_A_TEST_ROBOT}" -eq 1 ]]; then
    echo roles/compute.admin
    echo roles/iam.serviceAccountKeyAdmin
  fi
}

API de Google obligatorias

Si incluiste las marcas --enable_all o --enable_apis, la secuencia de comandos habilita las API requeridas:

required_apis() {
    cat << EOF
container.googleapis.com
monitoring.googleapis.com
logging.googleapis.com
cloudtrace.googleapis.com
meshtelemetry.googleapis.com
meshconfig.googleapis.com
iamcredentials.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
cloudresourcemanager.googleapis.com
stackdriver.googleapis.com
EOF
  case "${CA}" in
   mesh_ca)
     echo meshca.googleapis.com
     ;;
   gcp_cas)
     echo privateca.googleapis.com
     ;;
    *);;
  esac

  if [[ "${_CI_I_AM_A_TEST_ROBOT}" -eq 1 ]]; then
    echo compute.googleapis.com
  fi
}

Configura el clúster

La secuencia de comandos realiza las siguientes actualizaciones en tu clúster si incluiste la marca --enable_all o una de las marcas de habilitación más detalladas que se enumeran a continuación:

Actualización del clúster Marca
Habilita Workload Identity, que permite que las aplicaciones de GKE accedan de forma segura a los servicios de Google Cloud. --enable_gcp_components
Habilita Cloud Monitoring y Cloud Logging en GKE. --enable_gcp_components
Establece la etiqueta mesh_id en el clúster, que se requiere para que las métricas se muestren en las páginas de Anthos Service Mesh en la consola de Google Cloud. --enable_cluster_labels
Establece una etiqueta como asmv=asm-1106-2 para que puedas saber si la secuencia de comandos modificó el clúster. --enable_cluster_labels
Vincula la cuenta de servicio o el usuario de GCP que ejecuta la secuencia de comandos a la función de administrador del clúster en tu clúster. --enable_cluster_roles

¿Qué sigue?