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
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>
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 |
Sí | 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 |
Sí | 8 |
Cantidad de CPU del controlador |
avi_controller_memory_size |
Sí | 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
Ansible role to deploy the Avi Controller on GKE
ansible-galaxy install avinetworks.avicontroller_gke