avinetworks.avicontroller_gke

avinetworks.avicontroller_gke

Rol de Ansible que despliega un Avi Controller en Google GKE. Solo desplegaremos un clúster de controladores con 1 o 3 controladores por espacio de nombres.

Advertencia:

  • El rol sobrescribirá cualquier configuración existente (si un valor es diferente aquí que en la configuración de k8s, será sobrescrito)

Requisitos

  • Clúster de GKE
  • Grupo de nodos de GKE con etiquetas si se usa afinidad o nodeSelector

Paquetes de OS Requeridos

  • python >= 2.7

Bibliotecas de Python Requeridas

  • openshift >= 0.6
  • PyYAML >= 3.11
  • requests >= 2.18.4
  • google-auth >= 1.3.0

Variables de Entorno Requeridas

Al usar GKE y K8s, descubrimos que algunas variables deben definirse a nivel de entorno para manejar la autenticación adecuada con GKE.

K8S_AUTH_KUBECONFIG=/ubicacion/de/.kubeconfig
# GOOGLE_APPLICATION_CREDENTIALS se usa al intentar autenticar a K8s, no pude
# encontrar una manera alternativa de proporcionar esto y que funcione
GOOGLE_APPLICATION_CREDENTIALS=/ubicacion/del/archivo_de_cuenta_de_servicio.json

Pasos Requeridos

  1. Deberás establecer tu clúster actual a través de gcloud para configurar los datos adecuados de .kube/config. Para hacerlo, ejecuta el siguiente comando:

    gcloud container clusters get-credentials <nombre-del-cluster> --region=<region> --zone=<zona>
    
  2. Verifica que estés en el contexto correcto escribiendo:

    kubectl config current-context
    

    Debería devolver algo en este formato.

    gke_{{ gke_project }}_{{ region }}_{{ cluster_name }}
    

Variables del Rol

Una descripción de las variables configurables para este rol debe ir aquí, incluyendo cualquier variable que esté en defaults/main.yml, vars/main.yml, y cualquier variable que pueda/deba establecerse a través de parámetros para el rol. Cualquier variable leída de otros roles y/o del ámbito global (es decir, hostvars, vars de grupo, etc.) también debe mencionarse aquí.

Variables

Variable Requerida Predeterminado Comentarios
avi_namespace Espacio de nombres en el que se debe crear el controlador
avi_controller_state No present Establece el estado del despliegue, por ejemplo present, absent, suspended, resume
avi_force_state No false Permite forzar el estado del despliegue. Omite comprobaciones. true, false
avi_controller_count No 1 Cuántos controladores debemos crear, por ejemplo 1 o 3
avi_controller_prefix No avi-controller Prefijo que debe tener el nombre del controlador y los activos
avi_controller_username Sí (ausente) admin Solo requerido cuando el estado es ausente, se usa para verificar que no hay SE o Servicios Virtuales
avi_controller_password Sí (ausente) None Solo requerido cuando el estado es ausente, se usa para verificar que no hay SE o Servicios Virtuales
avi_gcp_region No Región de GCP a la que queremos desplegar el controlador
avi_gcp_project No Proyecto de GCP en el que se debe desplegar el controlador
avi_gcp_auth_kind No Tipo de autenticación que se va a usar para GCP
avi_gcp_service_account_file No Ubicación del archivo de cuenta de servicio al usar serviceaccount
avi_k8s_auth_kubeconfig No {{ ansible_env.HOME }}/.kube/config Ubicación del kubeconfig que usaremos
avi_controller_storage_class_name No {{ avi_controller_prefix }}-regionalpd-storageclass-ssd Nombre de la clase de almacenamiento que se usará para el disco del controlador
avi_controller_req_cpu No {{ avi_controller_cpu_count // 2 }} La CPU solicitada inicialmente de K8s para ejecutar el controlador.
avi_controller_req_mem No {{ avi_controller_memory_size // 2 }} La memoria solicitada inicialmente de K8s para ejecutar el controlador.
avi_controller_cpu_count 8 Cantidad de CPU del controlador
avi_controller_memory_size 27 Tamaño de memoria del controlador en GB
avi_controller_disk_size No 64 Tamaño del disco SSD del controlador en GB
avi_controller_version No 18.2.3-9063-20190501.224326 Versión de Avi que se debe usar en el pod
avi_controller_container_image No avinetworks/controller:{{ avi_controller_version }} La imagen que se usará para crear el pod del controlador
avi_controller_namespace_labels No None Etiquetas de K8s que te gustaría adjuntar al espacio de nombres
avi_gcp_compute_addresses No Auto-generado Array de direcciones de cómputo creadas por el rol para controladores
avi_controller_affinity No None Establece la afinidad de k8s del pod del controlador
avi_controller_nodeselector No None Establece el nodeSelector para el pod del controlador
avi_setup_yaml No None Proporcionado como setup.json al controlador a través de K8s ConfigMap

Variables Avanzadas

Estos valores no son requeridos y son avanzados, no deben actualizarse a menos que sea necesario para sobreescribir específicamente.

Variables Predeterminadas

Variable Comentarios
avi_controller_k8s_namespace Definición del espacio de nombres
avi_controller_k8s_external_service Asegura que el servicio externo existe
avi_controller_k8s_service Asegura que el servicio existe
avi_controller_k8s_statefulset Asegura que el statefulset existe
avi_controller_k8s_storage_class Asegura que la StorageClass existe

Dependencias

Una lista de otros roles alojados en Galaxy debe ir aquí, además de cualquier detalle respecto a parámetros que puedan necesitarse establecer para otros roles, o variables que se utilizan de otros roles.

Uso

Ten en cuenta que al reanudar un despliegue, no es diferente de "present" al hacer "please use deployment_state: present" al reanudar un despliegue suspendido.

Ejemplo de Playbook

Creando un clúster de controladores

Incluir un ejemplo de cómo usar tu rol (por ejemplo, con variables pasadas como parámetros) es siempre bueno para los usuarios también:

- hosts: servers
  roles:
    - role: avinetworks.avicontroller_gke
      avi_controller_count: 3
      avi_controller_version: 18.2.3-9063-20190501.224326
      avi_controller_prefix: deployment-address
      avi_gcp_project: my-project
      avi_gcp_region: us-west1
      avi_gcp_auth_kind: serviceaccount
      avi_gcp_service_account_file: ~/service_account_file.json
      avi_namespace: 26abc3b9d1fc4cfc8f42ad86d9606fb9
      avi_controller_disk_size: 64
      avi_controller_container_image: "gcr.io/{{ avi_gcp_project }}/controller:{{ avi_controller_version }}"
      avi_controller_storage_class_name: regionalpd-storageclass-ssd
      avi_controller_affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: node_label
                    operator: In
                    values:
                      - label_value
- hosts: servers
  roles:
    - role: avinetworks.avicontroller_gke
      avi_controller_count: 3
      avi_controller_version: 18.2.3-9063-20190501.224326
      avi_controller_prefix: deployment-address
      avi_gcp_project: my-project
      avi_gcp_region: us-west1
      avi_gcp_auth_kind: serviceaccount
      avi_gcp_service_account_file: ~/service_account_file.json
      avi_namespace: 26abc3b9d1fc4cfc8f42ad86d9606fb9
      avi_controller_disk_size: 64
      avi_controller_container_image: "gcr.io/{{ avi_gcp_project }}/controller:{{ avi_controller_version }}"
      avi_controller_storage_class_name: regionalpd-storageclass-ssd
      avi_controller_nodeselector:
        node_label: label_value

Eliminando un clúster de controladores

Cuando elimines un clúster de controladores, verificamos y nos aseguramos de que no tengas Servicios Virtuales o motores de servicio activos para que no termines con motores de servicio huérfanos.

- hosts: servers
  roles:
    - role: avinetworks.avicontroller_gke
      avi_controller_state: absent
      avi_controller_count: 3
      avi_controller_version: 18.2.3-9063-20190501.224326
      avi_controller_prefix: deployment-address
      avi_gcp_project: my-project
      avi_gcp_region: us-west1
      avi_gcp_auth_kind: serviceaccount
      avi_gcp_service_account_file: ~/service_account_file.json
      avi_namespace: 26abc3b9d1fc4cfc8f42ad86d9606fb9
      avi_controller_disk_size: 64
      avi_controller_container_image: "gcr.io/{{ avi_gcp_project }}/controller:{{ avi_controller_version }}"
      avi_controller_storage_class_name: regionalpd-storageclass-ssd
      avi_controller_nodeselector:
        node_label: label_value

Licencia

Apache 2.0

Información del Autor

Eric Anderson

Avi Networks

Acerca del proyecto

Ansible role to deploy the Avi Controller on GKE

Instalar
ansible-galaxy install avinetworks.avicontroller_gke
Licencia
apache-2.0
Descargas
2.2k
Propietario