En esta página se describen las prácticas recomendadas para crear implementaciones con Google Cloud Deployment Manager. Esta página está dirigida a usuarios que conocen Deployment Manager. En ella no se explica cómo usar Deployment Manager.
Si no has usado nunca Deployment Manager, prueba la guía de inicio rápido.
Gestionar recursos
❑
Una vez que hayas creado un recurso como parte de un despliegue, usa Deployment Manager si necesitas modificarlo.
Si modificas un recurso sin usar Deployment Manager, por ejemplo, con la Google Cloud consola
gcloud , es posible que se produzcan errores si intentas modificar el recurso en tu implementación original.
Si quieres quitar un recurso de una implementación sin eliminarlo, sigue estos pasos:
|
❑
Si tienes instancias de Compute Engine en tu implementación y quieres adjuntar discos persistentes a las instancias, define el disco por separado de la instancia para poder gestionarlo fácilmente. Por ejemplo, en la siguiente implementación, el disco
example-disk se define por separado de la instancia example-instance . Para
adjuntar el disco, la configuración tiene una
referencia al disco:
resources: # instance - name: example-instance type: compute.v1.instance properties: disks: - type: PERSISTENT source:$(ref.example-disk.selfLink) # disk - name: example-disk type: compute.v1.disk properties: zone: us-central1-a sizeGb: 10 type: ... |
❑
Si quieres crear y gestionar clústeres privados de Google Kubernetes Engine (GKE) con Deployment Manager, define las siguientes opciones
privateClusterConfig: enablePrivateNodes: true enablePrivateEndpoint: true # Configure the IP range for the hosted master network masterIpv4CidrBlock: IP_RANGE ipAllocationPolicy: useIpAliases: true createSubnetwork: true Para consultar los requisitos y otras consideraciones a la hora de crear un clúster privado con GKE, consulta el artículo Configurar un clúster privado. |
Incluir credenciales en tu implementación
❑
Deployment Manager oculta algunos campos relacionados con las credenciales de las propiedades de las configuraciones YAML. Esta redacción se basa en la clave de la propiedad. En el siguiente ejemplo se muestra una de estas redacciones:
# Config provided to Deployment Manager resources: - name: example-resource type: gcp-types/service-v1:sample-type-with-password properties: zone: us-central1-a username: test-user password: hunter2 # Config as surfaced by Deployment Manager resources: - name: example-resource type: gcp-types/service-v1:sample-type-with-password properties: zone: us-central1-a username: test-user password: (redacted) |
❑
Si incluyes la credencial en una plantilla de Jinja o Python para tu implementación, se ocultará en los archivos de configuración y diseño ampliados resultantes, pero seguirá visible en el archivo de importación original. Por este motivo, te recomendamos que coloques todas las credenciales que quieras mantener en secreto en tu archivo de configuración YAML de nivel superior. Puedes hacer referencia a ellas desde ahí usando propiedades de plantilla.
|
❑
Las credenciales incluidas en un par clave-valor de un archivo YAML o una lista de elementos no se ocultarán, como en el siguiente ejemplo. Por este motivo, le recomendamos que no proporcione credenciales a Deployment Manager como pares clave-valor en archivos YAML o listas de elementos.
# Not a valid instance configuration, used solely for demonstration resources: - name: example-resource type: gcp-types/compute-v1:instances properties: zone: us-central1-a disks: - autoDelete: true boot: true # Will not be redacted password: hunter2 |
Plantillas de Build
❑
Para definir tus plantillas más rápido, te recomendamos que empieces con las plantillas de ejemplo listas para producción del proyecto Cloud Foundation Toolkit.
|
❑
Si tienes requisitos de infraestructura complejos, como la necesidad de crear varios entornos, consulta el tutorial y los ejemplos sobre cómo usar Deployment Manager a gran escala.
|
❑
Usa Python para crear tus plantillas.
Puedes usar Python o Jinja2 para crear plantillas. Es más fácil empezar a usar Jinja, pero Python es más flexible para las implementaciones complejas en las que puede haber muchos recursos distribuidos en varios entornos.
|
❑
Estructura el archivo de configuración (el archivo YAML) de forma que solo use un tipo y utiliza una plantilla de nivel superior como ese tipo para llamar a todas las demás plantillas. Si adoptas esta práctica, te resultará más fácil convertir un conjunto de plantillas en un
tipo compuesto.
|
❑
Usa un archivo de esquema.
Los esquemas definen un conjunto de reglas que debe seguir un archivo de configuración para usar una plantilla concreta. Si defines un esquema y animas a otros usuarios a revisar los requisitos definidos en un esquema, tus usuarios podrán saber fácilmente qué propiedades se pueden definir o son obligatorias para la plantilla correspondiente. De esta forma, los usuarios pueden usar la configuración sin tener que investigar los detalles de las plantillas. Como mínimo, define un archivo de esquema para la plantilla de nivel superior.
|
❑
Usa propiedades de plantilla
y salidas.
Las propiedades y las salidas te permiten transferir variables como la zona, el tamaño de la máquina, el número de máquinas o el estado de la aplicación (prueba, producción o staging) a tus plantillas y recibir valores de salida, como la dirección IP y el
selfLink de una instancia de VM. Las propiedades y las salidas permiten que tus plantillas sean flexibles para que se puedan reutilizar sin modificar las plantillas subyacentes.
|
❑
Usa archivos de plantilla individuales que importes en tu archivo de configuración principal. De esta forma, podrá gestionar las configuraciones de una forma más sencilla.
|
❑
Divide las configuraciones en unidades lógicas. Por ejemplo, crea configuraciones independientes para servicios con estado, como bases de datos y segmentos, y configuraciones para servicios más transitorios, como instancias de frontend.
|
❑
Usa referencias.
Las referencias se deben usar para los valores que no se definan hasta que se cree un recurso, como el
selfLink , la dirección IP o el ID generado por el sistema de un recurso. Si no hay referencias, Deployment Manager crea todos los recursos en paralelo, por lo que no se garantiza que los recursos dependientes se creen en el orden correcto. Si usas referencias, se aplicará el orden en el que se crean los recursos.
|
❑
Previsualiza
tus implementaciones para evaluar cómo afectará a tu implementación la actualización.
Deployment Manager no crea instancias de recursos reales cuando previsualizas una configuración, sino que amplía la configuración completa y crea recursos de "shell". De esta forma, puedes ver los cambios en tu implementación antes de confirmarlos.
|
❑
Consulta los métodos de la API de un recurso concreto para saber qué implica llevar a cabo una actualización. Define políticas de actualización al actualizar un despliegue para controlar cómo aplica Deployment Manager cada actualización.
|
❑
Usa etiquetas para tus recursos. Si los recursos que estás definiendo admiten etiquetas, úsalas para etiquetar tus recursos. Las etiquetas pueden ayudar a categorizar los recursos que pertenecen a diferentes implementaciones y también son una forma de distinguir en qué fase se encuentran los recursos, por ejemplo, si un recurso es compatible con un entorno de producción o de prueba.
|
Gestionar el tamaño de tus despliegues
Deployment Manager puede operar con un gran número de recursos, sujeto a límites de cuota. Si quieres reducir el tiempo que se tarda en crear, actualizar o eliminar tus implementaciones, puedes reducir el número de recursos de cada implementación.
❑
Si un grupo de recursos no depende de ningún recurso fuera de ese grupo, puedes moverlo a una implementación independiente. Por ejemplo, si tu implementación contiene varias plantillas, puedes empaquetar cada una de ellas como una implementación independiente.
|
❑
Elimina los recursos innecesarios de tu configuración. Si necesitas más recursos más adelante, puedes añadirlos a tu implementación en ese momento.
|
❑
Si quiere, puede limitar sus implementaciones a 1000 recursos o menos.
|
Permisos
De forma predeterminada, Deployment Manager usa las credenciales de la cuenta de servicio de las APIs de Google para autenticarse en otras APIs. La cuenta de servicio de las APIs de Google se ha diseñado específicamente para ejecutar procesos internos de Google en tu nombre.
Si quiere dar acceso a otros usuarios a su proyecto de Deployment Manager, debe asignarles un rol de gestión de identidades y accesos que tenga los permisos adecuados para usar Deployment Manager. Hay varios roles de gestión de identidades y accesos predefinidos que puedes usar para determinar el nivel de acceso que tiene un usuario para llamar a Deployment Manager.
❑
Usa roles de gestión de identidades y accesos para restringir los permisos que se conceden a los usuarios para usar Deployment Manager.
|
❑
Si quiere que los usuarios puedan acceder a los recursos creados por Deployment Manager, concédales los roles que necesiten para usar los recursos, pero no les conceda permisos para implementar recursos directamente.
|
❑
Si asignas el rol propietario a un principal, podrá modificar la política de gestión de identidades y accesos. Por lo tanto, solo debes asignar el rol de propietario si la entidad tiene un propósito legítimo para gestionar la política de gestión de identidades y accesos, ya que tu política contiene datos sensibles de control de acceso. Si solo un número mínimo de usuarios gestiona la cuenta, se simplificarán las auditorías que tengas que realizar.
|
❑
Deployment Manager usa la cuenta de servicio de las APIs de Google para crear y gestionar tus recursos. Si usas Deployment Manager para gestionar recursos críticos, como roles de gestión de identidades y accesos personalizados, debes asignar roles de gestión de identidades y accesos adicionales a la cuenta de servicio predeterminada de las APIs de Google. Por ejemplo, si quieres usar Deployment Manager para crear y gestionar roles de gestión de identidades y accesos personalizados, debes añadir el rol Administrador de roles a la cuenta de servicio de las APIs de Google.
Para obtener una descripción general de la cuenta de servicio de las APIs de Google, consulta el artículo Cuentas de servicio gestionadas por Google. Para ver los pasos para asignar roles a una cuenta de servicio, consulta el artículo sobre cómo conceder roles a cuentas de servicio. |
Automatización
También puedes automatizar la creación de proyectos y de los recursos que contienen. De esta forma, puedes adoptar un enfoque de infraestructura como código para el aprovisionamiento de proyectos. Este enfoque ofrece muchas ventajas, como las siguientes:
- Permite que se cumplan los requisitos de la empresa al proporcionar proyectos a los equipos que necesitan acceder a los recursos. Google Cloud
- Proporciona una serie de entornos de proyectos predefinidos que se pueden aprovisionar de forma rápida y sencilla.
- Usa el control de versiones para gestionar la configuración de tu proyecto base.
- Ten la certeza de que estás implementando configuraciones de proyectos reproducibles y coherentes.
- Incorpora la creación de proyectos como parte de un proceso de aprovisionamiento automatizado.
❑
Automatiza la creación de proyectos usando las plantillas disponibles en GitHub como punto de partida.
|
Integración continua (CI) y despliegue continuo (CD)
Usa Deployment Manager como parte de tu flujo de procesamiento de CI/CD.
❑
No uses un flujo de procesamiento de CI/CD para crear y eliminar proyectos de prueba y de control de calidad completos.
|
❑
Usa Deployment Manager para crear las partes con estado del proyecto y la configuración de red, e implementa estos elementos fuera del proceso de integración continua y entrega continua como parte de la configuración inicial. Una vez finalizadas las pruebas, puedes eliminar las implementaciones que solo contengan recursos sin estado que se hayan implementado como parte de la canalización.
|
❑
Como parte del proceso de integración y entrega continuas, usa una configuración independiente para desplegar recursos en tus proyectos de prueba y de control de calidad. Una vez que hayas terminado las pruebas, puedes usar Deployment Manager para eliminar los recursos de tus proyectos de prueba y de control de calidad.
|
Implementaciones de prueba. Gracias a la posibilidad de incorporar el aprovisionamiento de recursos como parte de un flujo de procesamiento de CI/CD, Deployment Manager te permite tratar la configuración de tu proyecto como código que puedes probar fácilmente y reproducir copias coherentes del entorno de producción actual o del entorno actual con los cambios aplicados para hacer pruebas con confianza. |
❑
Usa el control de versiones. Usar un sistema de control de versiones como parte del proceso de desarrollo de tus implementaciones te permite hacer lo siguiente:
|