avinetworks.avicontroller_gke

avinetworks.avicontroller_gke

Ansible-Rolle, die einen Avi Controller auf Google GKE bereitstellt. Wir werden nur einen Controller-Cluster mit entweder 1 oder 3 Controllern pro Namespace bereitstellen.

Warnung:

  • Die Rolle überschreibt jede vorhandene Konfiguration (wenn ein Wert hier anders ist als in der k8s-Konfiguration, wird er überschrieben)

Anforderungen

  • GKE-Cluster
  • GKE-Knotenpool mit Labels, wenn Affinität oder nodeSelector verwendet wird

Benötigte OS-Pakete

  • python >= 2.7

Benötigte Python-Bibliotheken

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

Benötigte Umgebungsvariablen

Beim Einsatz von GKE und K8s haben wir festgestellt, dass einige Variablen auf der Umgebungsstufe definiert werden müssen, um die richtige Authentifizierung für GKE zu gewährleisten.

K8S_AUTH_KUBECONFIG=/standort/von/.kubeconfig
# GOOGLE_APPLICATION_CREDENTIALS wird verwendet, wenn versucht wird, sich bei K8s zu authentifizieren. Ich konnte keinen alternativen Weg finden, dies bereitzustellen und es funktioniert.
GOOGLE_APPLICATION_CREDENTIALS=/standort/von/service_account_file.json

Erforderliche Schritte

  1. Sie müssen Ihren aktuellen Cluster über gcloud einstellen, um die richtigen .kube/config-Daten zu konfigurieren. Führen Sie dazu den folgenden Befehl aus

    gcloud container clusters get-credentials <cluster-name> --region=<region> --zone=<zone>
    
  2. Überprüfen Sie, ob Sie sich im richtigen Kontext befinden, indem Sie eingeben:

    kubectl config current-context
    

    Es sollte etwas in diesem Format zurückgeben:

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

Rollenvariablen

Eine Beschreibung der einstellbaren Variablen für diese Rolle sollte hier stehen, einschließlich aller Variablen, die in defaults/main.yml, vars/main.yml enthalten sind und alle Variablen, die über Parameter an die Rolle gesetzt werden können/sollen. Alle Variablen, die aus anderen Rollen oder dem globalen Bereich (z. B. hostvars, group vars usw.) gelesen werden, sollten hier ebenfalls erwähnt werden.

Variablen

Variable Erforderlich Standardwert Kommentare
avi_namespace Ja Namespace, in dem der Controller erstellt werden soll
avi_controller_state Nein present Legt den Zustand der Bereitstellung fest. z. B. present, absent, suspended, resume
avi_force_state Nein false Ermöglicht das Erzwingen des Zustands der Bereitstellung. Überprüfungen werden übersprungen. true, false
avi_controller_count Nein 1 Anzahl der zu erstellenden Controller. z. B. 1 oder 3
avi_controller_prefix Nein avi-controller Präfix, das der Name des Controllers und der Assets haben soll
avi_controller_username Ja (abwesend) admin Nur erforderlich, wenn der Zustand abwesend ist, zur Überprüfung auf keine SE oder Virtuellen Dienste
avi_controller_password Ja (abwesend) None Nur erforderlich, wenn der Zustand abwesend ist, zur Überprüfung auf keine SE oder Virtuellen Dienste
avi_gcp_region Nein GCP-Region, in der wir den Controller bereitstellen möchten
avi_gcp_project Nein GCP-Projekt, in dem der Controller bereitgestellt werden soll
avi_gcp_auth_kind Nein Art der Authentifizierung für GCP, die verwendet werden soll
avi_gcp_service_account_file Nein Speicherort der service_account_file, wenn ein Dienstkonto verwendet wird
avi_k8s_auth_kubeconfig Nein {{ ansible_env.HOME }}/.kube/config Speicherort der kubeconfig, die wir verwenden werden
avi_controller_storage_class_name Nein {{ avi_controller_prefix }}-regionalpd-storageclass-ssd Name der Storage-Class, die von der Controller-Disk verwendet werden soll
avi_controller_req_cpu Nein {{ avi_controller_cpu_count // 2 }} Die anfänglich angeforderte CPU von K8s, um den Controller auszuführen.
avi_controller_req_mem Nein {{ avi_controller_memory_size // 2 }} Der anfänglich angeforderte Speicher von K8s, um den Controller auszuführen.
avi_controller_cpu_count Ja 8 Anzahl der CPU für den Controller
avi_controller_memory_size Ja 27 Größe des Speichers für den Controller in GB
avi_controller_disk_size Nein 64 Größe der SSD-Disk für den Controller in GB
avi_controller_version Nein 18.2.3-9063-20190501.224326 Version von Avi, die im Pod verwendet werden soll
avi_controller_container_image Nein avinetworks/controller:{{ avi_controller_version }} Das Bild, das verwendet wird, um den Controller-Pod zu erstellen
avi_controller_namespace_labels Nein None K8s-Labels, die Sie dem Namespace anhängen möchten
avi_gcp_compute_addresses Nein Auto-generiert Array von Compute-Adressen, die von der Rolle für Controller erstellt wurden
avi_controller_affinity Nein None Legt die K8s-Affinität des Controller-Pods fest
avi_controller_nodeselector Nein None Legt den nodeSelector für den Controller-Pod fest
avi_setup_yaml Nein None Wird als setup.json an den Controller über K8s ConfigMap bereitgestellt

Fortgeschrittene Variablen

Diese Werte sind nicht erforderlich und sind fortgeschritten. Sie sind nicht dafür gedacht, aktualisiert zu werden, es sei denn, sie sind für spezifische Überschreibungen erforderlich.

Standardvariablen

Variable Kommentare
avi_controller_k8s_namespace Namespace-Definition
avi_controller_k8s_external_service Stellt sicher, dass der externe Dienst existiert
avi_controller_k8s_service Stellt sicher, dass der Dienst existiert
avi_controller_k8s_statefulset Stellt sicher, dass der StatefulSet existiert
avi_controller_k8s_storage_class Stellt sicher, dass die StorageClass existiert

Abhängigkeiten

Eine Liste anderer Rollen, die auf Galaxy gehostet werden, sollte hier stehen, sowie Details bezüglich Parameter, die für andere Rollen gesetzt werden müssen, oder Variablen, die aus anderen Rollen verwendet werden.

Nutzung

Bitte beachten Sie, dass beim Fortsetzen einer Bereitstellung kein Unterschied zu "present" besteht, wenn Sie fortfahren. Bitte verwenden Sie deployment_state: present, wenn Sie eine angehaltene Bereitstellung fortsetzen.

Beispiel-Playbook

Erstellen eines Controller-Clusters

Es ist immer hilfreich, ein Beispiel dafür einzuschließen, wie man Ihre Rolle nutzt (zum Beispiel mit Variablen, die als Parameter übergeben werden):

- 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

Löschen eines Controller-Clusters

Wenn Sie einen Controller-Cluster löschen, überprüfen wir, ob Sie keine aktuellen VS oder Service Engines haben, damit Sie keine verwaisten Service Engines erhalten.

- 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

Lizenz

Apache 2.0

Autorinformation

Eric Anderson

Avi Networks

Über das Projekt

Ansible role to deploy the Avi Controller on GKE

Installieren
ansible-galaxy install avinetworks.avicontroller_gke
GitHub Repository
Lizenz
apache-2.0
Downloads
2.2k
Besitzer