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

  1. 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>
    
  2. 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

Avi Networks

À propos du projet

Ansible role to deploy the Avi Controller on GKE

Installer
ansible-galaxy install avinetworks.avicontroller_gke
Licence
apache-2.0
Téléchargements
2.2k
Propriétaire