Recomendaciones para usar Deployment Manager

En esta página, se describen las prácticas recomendadas para crear implementaciones mediante Deployment Manager. Está diseñada para usuarios familiarizados con Deployment Manager, y no te enseñará a usarlo.

Si acabas de empezar a usar Deployment Manager, te recomendamos que consultes la Guía de inicio rápido.

Administrar recursos

❑  
Después de crear un recurso como parte de una implementación, usa Deployment Manger si necesitas modificarlo. Si modificas un recurso sin usar Deployment Manager, como con GCP Console o gcloud, es posible que veas errores si intentas modificar el recurso en tu implementación original.

Si deseas quitar un recurso de una implementación sin borrar el recurso, sigue estos pasos:

  1. En la configuración de la implementación, borra la definición de ese recurso.
  2. Actualiza la implementación y, en tu comando de “gcloud”, agrega --delete-policy ABANDON. El recurso ya no está asociado con la implementación y puedes modificarlo con GCP Console o gcloud.
❑  
Si tienes instancias de Compute Engine en tu implementación y deseas agregar discos persistentes a las instancias, define el disco por separado de la instancia a fin de que puedas administrarlo 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 deseas crear y administrar clústeres privados de Google Kubernetes Engine (GKE) con Deployment Manager, configura las siguientes opciones privateClusterConfig y ipAllocationPolicy en tu implementación.


     privateClusterConfig:
        enablePrivateNodes: true
        enablePrivateEndpoint: true
        #  Configure the IP range for the hosted master network
        masterIpv4CidrBlock: IP_RANGE
      ipAllocationPolicy:
        useIpAliases: true
        createSubnetwork: true
    

Para conocer los requisitos y las consideraciones adicionales cuando creas un clúster privado con GKE, lee Configura un clúster privado.

Compilar plantillas

❑  
A fin de acelerar la definición de tus plantillas, considera comenzar con las plantillas de muestra listas para la producción del proyecto de Cloud Foundation Toolkit.
❑  
Si tiene requisitos de infraestructura complejos, como la necesidad de crear múltiples entornos, lee el instructivo y las muestras para el uso de Deployment Manager a gran escala.
❑  
Usa Python para compilar tus plantillas. Puedes usar Python o Jinja2 para crear plantillas. Es más fácil comenzar con Jinja, pero Python es más flexible para implementaciones complejas en las que puedes tener muchos recursos divididos en múltiples entornos.
❑  
Estructura tu archivo de configuración (el archivo YAML) de manera que solo use un tipo y una plantilla de nivel superior como ese tipo para llamar a las otras plantillas. Si adoptas esta práctica, es más sencillo transformar 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 utilizar una plantilla en particular. Cuando definen un esquema y buscan que otros revisen los requisitos definidos en un esquema, tus usuarios podrán entender fácilmente qué propiedades son configurables o cuáles se requieren para la plantilla en cuestión. Esto ayuda a que los usuarios utilicen 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 las propiedades de la plantilla y los resultados. El uso de propiedades y resultados te permite pasar variables como la zona, el tamaño de la máquina, la cantidad de máquinas, el estado de la aplicación (prueba, producción, etapa de pruebas) en tus plantillas y recuperar los valores de resultado, como la dirección IP y el selfLink a una instancia de VM. Las propiedades y los resultados te permiten que tus plantillas sean flexibles para poder volver a usarlas sin modificaciones en las plantillas subyacentes.
❑  
Usa archivos de plantillas individuales que importas en tu archivo de configuración principal. Esto te brindará una forma más manejable de trabajar con las configuraciones.
❑  
Divide tus configuraciones en unidades lógicas. Por ejemplo, crea configuraciones separadas para cada servicio con estado, como bases de datos y depósitos, y configuraciones para servicios más transitorios, como instancias frontend.
❑  
Usa referencias. Las referencias deben usarse para valores no definidos hasta que se crea un recurso, como el selfLink, la dirección IP o el ID generad por el sistema de un recurso. Sin referencias, Deployment Manager crea todos los recursos en paralelo, por lo que no hay garantía de que los recursos dependientes se creen en el orden correcto. El uso de referencias haría cumplir el orden en el que se crean los recursos.
❑  
Obtén una vista previa de las implementaciones para evaluar cómo una actualización afectará tu implementación. Deployment Manager no ejecuta los recursos reales cuando se efectúa la vista previa de la configuración, sino que expande la configuración total y crea recursos "shell". Esto te brinda la oportunidad de ver los cambios en tu implementación antes de comprometerte con ella.
❑  
Verifica los métodos de la API del recurso para comprender lo que implica realizar una actualización. Establece políticas de actualización cuando actualices una implementación a fin de que sea más fácil controlar la forma en que Deployment Manager aplicará cada actualización.
❑  
Usa etiquetas para tus recursos. Si los recursos que estás definiendo son compatibles con las etiquetas, úsalas para etiquetar tus recursos. Las etiquetas pueden servir para categorizar recursos que pertenecen a implementaciones diferentes y también son una forma de distinguir en qué etapa podría estar el recurso, por ejemplo, si un recurso es compatible con un entorno de producción o de prueba.

Permisos

Según la configuración predeterminada, Deployment Manager usa las credenciales de la cuenta de servicio de la API de Google para autenticar a otras API. La cuenta de servicio de la API de Google está diseñada de manera específica a fin de ejecutar procesos internos de Google en tu nombre.

Cuando deseas otorgar acceso a otros usuarios a tu proyecto de Deployment Manager, debes otorgarles una función IAM con los permisos correspondientes para usar Deployment Manager. Existen diferentes funciones IAM predefinidas que puedes usar a fin de determinar cuánto acceso tiene un usuario para llamar a Deployment Manager.

❑  
Usa funciones de IAM a fin de restringir los permisos que se otorgan a los usuarios para usar Deployment Manager.
❑  
Si deseas que los usuarios puedan acceder a los recursos que crea Deployment Manager, otórgales las funciones que necesitan para usar los recursos, pero no les otorgues los permisos a fin de implementar recursos de forma directa.
❑  
La concesión de una función de propietario a un miembro le permitirá modificar la política de IAM. Por lo tanto, otorga la función de propietario solo si el miembro tiene un propósito legítimo para administrar la política de IAM, ya que tu política contiene datos de control de acceso confidenciales. Tener un conjunto mínimo de usuarios administrados simplificará cualquier auditoría que tengas que hacer.
❑  
Deployment Manager usa la cuenta de servicio de las API de Google a fin de crear y administrar tus recursos. Si usas Deployment Manager para administrar recursos críticos, como funciones personalizados de IAM, debes asignar funciones adicionales de IAM a la cuenta de servicio predeterminada de las API de Google. Por ejemplo, si deseas usar Deployment Manager a fin de crear y administrar funciones de IAM personalizadas, debes agregar la función Administrador de funciones a la cuenta de servicio de las API de Google.

Para obtener una descripción general de la cuenta de servicio de las API de Google, consulta esta página sobre cuentas de servicios administradas por Google.

Si deseas conocer los pasos a fin de asignar funciones a la cuenta de servicio, consulta esta página sobre la asignación de funciones a las cuentas de servicio.

Automatización

Considera la opción de automatizar la creación de proyectos, así como la de recursos contenidos dentro de proyectos. Esto te permite adoptar un enfoque de infraestructura como código para el aprovisionamiento de proyectos. Este enfoque brinda muchos beneficios, como la capacidad de realizar las siguientes acciones:

  • Permitir el cumplimiento de requisitos corporativos a la hora de proporcionar proyectos a los equipos que necesitan acceso a los recursos de Google Cloud Platform.
  • Proporcionar diferentes entornos de proyecto predefinidos que pueden aprovisionarse rápido y fácilmente.
  • Utilizar el control de versiones para administrar la configuración de tu proyecto base.
  • Confiar en que estás implementando configuraciones de proyectos reproducibles y coherentes.
  • Incorporar la creación de proyectos como parte de un proceso de aprovisionamiento automatizado.
❑  
Automatiza la creación de proyectos con las plantillas disponibles en GitHub como punto de partida.

Integración continua (IC) / Implementación continua (CD)

Usa Deployment Manager como parte de tu canalización de IC/CD.

❑  
No uses una canalización de IC/CD para crear y borrar proyectos completos de prueba y control de calidad.
  • Puedes optar por destruir instancias de VM o recursos que incurran en costos adicionales, pero considera mantener activos que puedes volver a usar que podrían tardar bastante en recrearse, ya que quitar estos recursos podría tener un impacto negativo en el tiempo que se tarda en completar las canalizaciones de compilación. No hay costos relacionados con la configuración de las redes, subredes y reglas de firewall.
  • Ten en cuenta que si quitas un proyecto, seguirá siendo parte de tu cuota de proyectos durante algunos días, hasta que se haya quitado completamente. Esto también significa que no puedes reutilizar el nombre del proyecto.
  • El uso de Deployment Manager te permite quitar recursos fácilmente de un proyecto para no llegar al límite de las cuotas de recursos.
❑  
Usa Deployment Manager a fin de crear las partes con estado de la configuración de proyecto y de red y para implementarlas fuera del proceso de IC/CD como parte de la configuración inicial. Una vez que la etapa de prueba termine, puedes quitar las implementaciones que contengan solo recursos sin estado que se implementaron como parte de la canalización.
❑  
Como parte del proceso de IC/CD, usa una configuración diferente a fin de implementar recursos en tus proyectos de prueba y control de calidad. Una vez terminada la etapa de pruebas, puedes usar Deployment Manager a fin de quitar los recursos de tus proyectos de prueba y control de calidad.
Implementaciones de prueba. Con la capacidad de incorporar aprovisionamiento de recursos como parte de la canalización de IC/CD, Deployment Manager te permite tratar la configuración de tu proyecto como un código con el que puedes reproducir copias coherentes del entorno de producción actual, o el entorno actual con cambios aplicados a fin de realizar pruebas de confianza con facilidad.
❑  
Usa el control de versiones. Usar un sistema de control de versiones como parte del proceso de desarrollo para tus implementaciones te permite realizar las siguientes acciones:
  • Volver a una configuración funcional anterior.
  • Proporcionar un rastro de auditoría para realizar cambios.
  • Usar la configuración como parte de un sistema de implementación continua
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Deployment Manager