Cloud Workstations te permite ejecutar secuencias de comandos de inicio personalizadas en la VM de la estación de trabajo host antes de que se inicie el contenedor de la estación de trabajo. Esto es útil para realizar la configuración a nivel de la VM o instalar software adicional que debe ejecutarse fuera del contenedor de la estación de trabajo.
Ejecutar secuencias de comandos de inicio personalizadas en la VM host es una función avanzada. En lugar de usar secuencias de comandos de inicio, te recomendamos que personalices la imagen de tu contenedor.
Si eliges usar secuencias de comandos de inicio, asegúrate de que tu secuencia de comandos siga siendo compatible con los cambios en la imagen de Container-Optimized OS (COS), ya que la VM host recibe actualizaciones periódicas del sistema operativo basadas en COS.
Antes de comenzar
Instala la Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:
gcloud init
Si usas un proveedor de identidad externo (IdP), primero debes
acceder a la CLI de gcloud con tu identidad federada.
Instala la Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:
gcloud init
Si usas un proveedor de identidad externo (IdP), primero debes
acceder a la CLI de gcloud con tu identidad federada.
Prepara tu secuencia de comandos de inicio
Crea la secuencia de comandos de inicio que deseas ejecutar en la VM de la estación de trabajo host. Cuando escribas tu secuencia de comandos, sigue los siguientes lineamientos:
- Cloud Workstations ejecuta el contenedor de la estación de trabajo especificado, así como varios contenedores del sistema en la VM de la estación de trabajo host para garantizar que la estación de trabajo funcione correctamente. Todos los contenedores se ejecutan con el tiempo de ejecución de
containerdy el clientecrictl. - Ejecuta cualquier contenedor adicional que inicie tu secuencia de comandos de inicio con
containerd. Docker está inhabilitado en la VM host para evitar interferencias con el daemon de Docker que se ejecuta dentro del contenedor de la estación de trabajo. - Los contenedores a nivel del host que inicia tu secuencia de comandos de inicio no pueden interactuar con el contenedor principal de la estación de trabajo. Estas interacciones directas no son compatibles porque omiten las verificaciones de Identity and Access Management (IAM).
Almacena tu secuencia de comandos de inicio en Cloud Storage
Sube tu secuencia de comandos a un bucket de Cloud Storage y asegúrate de que la cuenta de servicio asociada con tu estación de trabajo pueda acceder a ella.
Sube tu secuencia de comandos a un bucket:
gcloud storage cp LOCAL_SCRIPT_PATH gs://BUCKET_NAME/SCRIPT_NAMEReemplaza lo siguiente:
LOCAL_SCRIPT_PATH: Es la ruta de acceso local al archivo de secuencia de comandos de inicio.BUCKET_NAME: Es el nombre de tu bucket de Cloud Storage.SCRIPT_NAME: Es el nombre que deseas darle al archivo de secuencia de comandos en el bucket.
Asegúrate de que la cuenta de servicio que usa la configuración de tu estación de trabajo tenga permisos para acceder al bucket y al archivo de secuencia de comandos. De forma alternativa, se puede acceder a la secuencia de comandos de forma pública.
Crea una configuración de estación de trabajo
Para usar una secuencia de comandos de inicio personalizada, crea una configuración de estación de trabajo y especifica el URI de Cloud Storage de tu secuencia de comandos.
Console
Para configurar una secuencia de comandos de inicio personalizada cuando creas una configuración de estación de trabajo, haz lo siguiente:
En la Google Cloud consola de, ve a la página Configuraciones de estación de trabajo.
Haz clic en add Crear.
En la página Información básica , ingresa un nombre para la configuración, selecciona un clúster de estación de trabajo y haz clic en Continuar.
En la página Configuración de la máquina , configura los parámetros de configuración de la máquina y haz clic en Continuar.
En la página Configuración del entorno, expande la sección Opciones avanzadas del contenedor.
En el campo Secuencia de comandos de inicio personalizada, ingresa la ruta de acceso de Cloud Storage a tu secuencia de comandos de inicio (por ejemplo,
gs://BUCKET_NAME/SCRIPT_NAME).Completa los pasos restantes y haz clic en Crear.
REST
Para configurar una secuencia de comandos de inicio personalizada con la API de REST, crea la configuración de la estación de trabajo y establece el campo startupScriptUri en un mensaje host.gceInstance en el URI de Cloud Storage de tu secuencia de comandos:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"host": {
"gceInstance": {
"poolSize": 1,
"startupScriptUri": "gs://BUCKET_NAME/SCRIPT_NAME",
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}' \
https://workstations.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/workstationClusters/CLUSTER_ID/workstationConfigs?workstation_config_id=CONFIG_ID
Reemplaza lo siguiente:
SERVICE_ACCOUNT: Es la dirección de correo electrónico de la cuenta de servicio asociada con la configuración de la estación de trabajo.PROJECT_ID: Es el ID del Google Cloud proyecto de.LOCATION: Es la región en la que se encuentra el clúster de la estación de trabajo.CLUSTER_ID: Es el ID del clúster de la estación de trabajo.CONFIG_ID: Es el ID que deseas asignar a la nueva configuración de la estación de trabajo.
Verifica la ejecución de la secuencia de comandos
Para verificar que tu secuencia de comandos se ejecutó correctamente, usa uno de los siguientes métodos:
- Registros de salida del puerto en serie 3: Los registros de salida generados por tu secuencia de comandos se envían automáticamente a la salida del puerto en serie 3. Para encontrar el nombre de la VM asignada a tu estación de trabajo, consulta los registros de la plataforma.
- SSH en tu VM: puedes establecer una conexión SSH a la VM de tu estación de trabajo para depurar aún más tu secuencia de comandos si es necesario.
- Verificaciones de preparación: Las secuencias de comandos de inicio se incluyen en la categoría de "mejor esfuerzo" y no impiden que se inicie la estación de trabajo. Si la secuencia de comandos tarda mucho en ejecutarse o falla, es posible que la estación de trabajo aún se marque como lista. Para asegurarte de que la estación de trabajo no se marque como lista hasta que se complete la secuencia de comandos, considera implementar verificaciones de preparación.
¿Qué sigue?
- Obtén más información sobre el registro de la plataforma.
- Personaliza tu entorno de desarrollo.
- Soluciona problemas de la estación de trabajo.