avinetworks.avicontroller_gke
avinetworks.avicontroller_gke
Rôle Ansible qui déploie un Avi Controller sur Google GKE. Nous déploierons uniquement un cluster de contrôleurs avec soit 1 soit 3 contrôleurs par espace de noms.
Avertissement :
- Ce rôle remplacera toute configuration existante (si une valeur est différente ici de celle de la configuration k8s, elle sera remplacée)
Exigences
- Cluster GKE
- Pool de nœuds GKE avec des étiquettes si vous utilisez l'affinité ou le nodeSelector
Packages OS requis
- python >= 2.7
Bibliothèques Python requises
- openshift >= 0.6
- PyYAML >= 3.11
- requests >= 2.18.4
- google-auth >= 1.3.0
Variables d'environnement requises
Lors de l'utilisation de GKE et K8s, nous avons découvert que certaines variables doivent être définies au niveau de l'environnement pour gérer l'authentification correcte à GKE.
K8S_AUTH_KUBECONFIG=/chemin/vers/.kubeconfig
# GOOGLE_APPLICATION_CREDENTIALS est utilisé lors de l'authentification à K8s, je n'ai pas trouvé d'alternative pour fournir ceci et faire fonctionner
GOOGLE_APPLICATION_CREDENTIALS=/chemin/vers/fichier_compte_service.json
Étapes requises
Vous devez définir votre cluster actuel via
gcloud
pour configurer les données .kube/config appropriées. Pour ce faire, exécutez la commande suivante.gcloud container clusters get-credentials <nom-du-cluster> --region=<région> --zone=<zone>
Vérifiez que vous êtes dans le bon contexte en tapant
kubectl config current-context
Cela devrait renvoyer quelque chose sous ce format.
gke_{{ gke_project }}_{{ region }}_{{ cluster_name }}
Variables du rôle
Une description des variables réglables pour ce rôle doit être ici, y compris toutes les variables présentes dans defaults/main.yml, vars/main.yml, et toutes les variables qui peuvent/doivent être définies via des paramètres au rôle. Toutes les variables lues à partir d'autres rôles et/ou du scope global (c'est-à-dire hostvars, group vars, etc.) doivent également être mentionnées ici.
Variables
Variable | Requis | Par défaut | Commentaires |
---|---|---|---|
avi_namespace |
Oui | Espace de noms dans lequel le contrôleur doit être créé | |
avi_controller_state |
Non | present |
Définit l'état du déploiement. ex. present , absent , suspended , resume |
avi_force_state |
Non | false |
Permet de forcer l'état du déploiement. Ignore les vérifications. true , false |
avi_controller_count |
Non | 1 |
Combien de contrôleurs nous devrions créer. ex. 1 ou 3 |
avi_controller_prefix |
Non | avi-controller |
Préfixe que le nom du contrôleur et des ressources devraient avoir |
avi_controller_username |
Oui (absent) | admin |
Nécessaire seulement lorsque l'état est absent, utilisé pour vérifier qu'il n'y a pas de SE ou de Services Virtuels |
avi_controller_password |
Oui (absent) | None |
Nécessaire seulement lorsque l'état est absent, utilisé pour vérifier qu'il n'y a pas de SE ou de Services Virtuels |
avi_gcp_region |
Non | Région GCP où nous voulons déployer le contrôleur | |
avi_gcp_project |
Non | Projet GCP dans lequel le contrôleur devrait être déployé | |
avi_gcp_auth_kind |
Non | Type d'authentification à GCP à utiliser | |
avi_gcp_service_account_file |
Non | Emplacement du fichier compte_service lors de l'utilisation de serviceaccount | |
avi_k8s_auth_kubeconfig |
Non | {{ ansible_env.HOME }}/.kube/config |
Emplacement du kubeconfig que nous allons utiliser |
avi_controller_storage_class_name |
Non | {{ avi_controller_prefix }}-regionalpd-storageclass-ssd |
Nom de la classe de stockage à utiliser par le disque du contrôleur |
avi_controller_req_cpu |
Non | {{ avi_controller_cpu_count // 2 }} |
La CPU demandée initiale à K8s pour exécuter le contrôleur. |
avi_controller_req_mem |
Non | {{ avi_controller_memory_size // 2 }} |
La mémoire demandée initiale à K8s pour exécuter le contrôleur. |
avi_controller_cpu_count |
Oui | 8 |
Nombre de CPU du contrôleur |
avi_controller_memory_size |
Oui | 27 |
Taille de la mémoire du contrôleur en Go |
avi_controller_disk_size |
Non | 64 |
Taille du disque SSD du contrôleur en Go |
avi_controller_version |
Non | 18.2.3-9063-20190501.224326 |
Version d'Avi qui devrait être utilisée sur le pod |
avi_controller_container_image |
Non | avinetworks/controller:{{ avi_controller_version }} |
L'image qui sera utilisée pour créer le pod du contrôleur |
avi_controller_namespace_labels |
Non | None |
Étiquettes K8s que vous souhaitez attacher à l'espace de noms |
avi_gcp_compute_addresses |
Non | Auto-généré |
Tableau d'adresses de calcul créées par le rôle pour les contrôleurs |
avi_controller_affinity |
Non | None |
Définit l'affinité K8s du pod du contrôleur |
avi_controller_nodeselector |
Non | None |
Définit le nodeSelector pour le pod du contrôleur |
avi_setup_yaml |
Non | None |
Fourni comme setup.json au contrôleur via K8s ConfigMap |
Variables avancées
Ces valeurs ne sont pas requises et sont avancées, elles ne doivent pas être mises à jour sauf si nécessaire pour des remplacements spécifiques.
Variables Par Défaut
Variable | Commentaires |
---|---|
avi_controller_k8s_namespace |
Définition de l'espace de noms |
avi_controller_k8s_external_service |
Assure que le service externe existe |
avi_controller_k8s_service |
Assure que le service existe |
avi_controller_k8s_statefulset |
Assure que le statefulset existe |
avi_controller_k8s_storage_class |
Assure que la StorageClass existe |
Dépendances
Une liste d'autres rôles hébergés sur Galaxy devrait aller ici, ainsi que des détails concernant les paramètres qui peuvent devoir être définis pour d'autres rôles, ou les variables qui sont utilisées à partir d'autres rôles.
Utilisation
Veuillez noter que lors de la reprise d'un déploiement, cela n’est pas différent que lorsque vous le définissez à présent, veuillez utiliser deployment_state: present
lorsque vous reprenez un déploiement suspendu.
Exemple de Playbook
Création d'un cluster de contrôleurs
Inclure un exemple de comment utiliser votre rôle (par exemple, avec des variables passées en tant que paramètres) est toujours appréciable pour les utilisateurs :
- hosts: serveurs
roles:
- role: avinetworks.avicontroller_gke
avi_controller_count: 3
avi_controller_version: 18.2.3-9063-20190501.224326
avi_controller_prefix: adresse-déploiement
avi_gcp_project: mon-projet
avi_gcp_region: us-west1
avi_gcp_auth_kind: serviceaccount
avi_gcp_service_account_file: ~/fichier_compte_service.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: serveurs
roles:
- role: avinetworks.avicontroller_gke
avi_controller_count: 3
avi_controller_version: 18.2.3-9063-20190501.224326
avi_controller_prefix: adresse-déploiement
avi_gcp_project: mon-projet
avi_gcp_region: us-west1
avi_gcp_auth_kind: serviceaccount
avi_gcp_service_account_file: ~/fichier_compte_service.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
Suppression d'un cluster de contrôleurs
Lorsque vous supprimez un cluster de contrôleurs, nous vérifions que vous n'avez pas de Services Virtuels ou de moteurs de services actifs pour éviter de vous retrouver avec des moteurs de services orphelins.
- hosts: serveurs
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: adresse-déploiement
avi_gcp_project: mon-projet
avi_gcp_region: us-west1
avi_gcp_auth_kind: serviceaccount
avi_gcp_service_account_file: ~/fichier_compte_service.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
Licence
Apache 2.0
Informations sur l'auteur
Eric Anderson
Ansible role to deploy the Avi Controller on GKE
ansible-galaxy install avinetworks.avicontroller_gke