avinetworks.avicontroller_gke

avinetworks.avicontroller_gke

Rola Ansible, która deployuje Avi Controller na Google GKE. Będziemy wdrażać tylko jedną klasę kontrolera z jedną lub trzema kontrolerami w każdym namespace.

Uwaga:

  • Rola nadpisze jakąkolwiek istniejącą konfigurację (jeśli jakaś wartość jest inna niż w konfiguracji k8s, zostanie nadpisana)

Wymagania

  • Klaster GKE
  • Pula węzłów GKE z etykietami, jeśli używasz affinities lub nodeSelector

Wymagane pakiety systemowe

  • python >= 2.7

Wymagane biblioteki Pythona

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

Wymagane zmienne środowiskowe

Podczas korzystania z GKE i K8s, odkryliśmy, że niektóre zmienne muszą być zdefiniowane na poziomie środowiska, aby odpowiednio obsłużyć autoryzację do GKE.

K8S_AUTH_KUBECONFIG=/ścieżka/do/.kubeconfig
# GOOGLE_APPLICATION_CREDENTIALS jest używane przy próbie autoryzacji do K8s, nie mogłem
# znaleźć alternatywnego sposobu na to i żeby działało
GOOGLE_APPLICATION_CREDENTIALS=/ścieżka/do/pliku_konta_serwisowego.json

Wymagane kroki

  1. Będziesz musiał ustawić swój obecny klaster poprzez gcloud, aby skonfigurować odpowiednie dane .kube/config. Aby to zrobić, uruchom następujące polecenie

    gcloud container clusters get-credentials <nazwa-klastra> --region=<region> --zone=<strefa>
    
  2. Sprawdź, czy jesteś w odpowiednim kontekście, wpisując

    kubectl config current-context
    

    Powinno zwrócić coś w tym formacie.

    gke_{{ gke_project }}_{{ region }}_{{ nazwaklastra }}
    

Zmienne roli

Opis zmiennych, które można ustawić dla tej roli, powinien być tutaj, w tym wszystkie zmienne, które znajdują się w defaults/main.yml, vars/main.yml oraz wszelkie zmienne, które mogą powinny być ustawione jako parametry do roli. Wszelkie zmienne, które są odczytywane z innych ról i/lub globalnego zasięgu (np. hostvars, grupy vars itp.) powinny być również wspomniane.

Zmienne

Zmienna Wymagana Domyślna Uwagi
avi_namespace Tak Namespace, w którym powinien być utworzony kontroler
avi_controller_state Nie present Ustawia stan wdrożenia. np. present, absent, suspended, resume
avi_force_state Nie false Pozwala wymusić stan wdrożenia. Pomija kontrole. true, false
avi_controller_count Nie 1 Ile kontrolerów powinno zostać utworzonych. np. 1 lub 3
avi_controller_prefix Nie avi-controller Prefiks, który powinien mieć nazwa kontrolera i zasobów
avi_controller_username Tak (brak) admin Wymagany tylko gdy stan jest absent, używany do weryfikacji braku SE lub Virtual Services
avi_controller_password Tak (brak) None Wymagany tylko gdy stan jest absent, używany do weryfikacji braku SE lub Virtual Services
avi_gcp_region Nie Region GCP, w którym chcemy wdrożyć kontroler
avi_gcp_project Nie Projekt GCP, w którym powinien być wdrożony kontroler
avi_gcp_auth_kind Nie Typ autoryzacji, którego chcesz użyć w GCP
avi_gcp_service_account_file Nie Ścieżka do pliku konta serwisowego przy korzystaniu z serviceaccount
avi_k8s_auth_kubeconfig Nie {{ ansible_env.HOME }}/.kube/config Ścieżka do kubeconfig, którego użyjemy
avi_controller_storage_class_name Nie {{ avi_controller_prefix }}-regionalpd-storageclass-ssd Nazwa klasy pamięci, która będzie używana przez dysk kontrolera
avi_controller_req_cpu Nie {{ avi_controller_cpu_count // 2 }} Początkowa żądana moc CPU z K8s do uruchomienia kontrolera.
avi_controller_req_mem Nie {{ avi_controller_memory_size // 2 }} Początkowo żądana pamięć z K8s do uruchomienia kontrolera.
avi_controller_cpu_count Tak 8 Liczba CPU kontrolera
avi_controller_memory_size Tak 27 Rozmiar pamięci kontrolera w GB
avi_controller_disk_size Nie 64 Rozmiar dysku SSD kontrolera w GB
avi_controller_version Nie 18.2.3-9063-20190501.224326 Wersja Avi, która powinna być używana w podzie
avi_controller_container_image Nie avinetworks/controller:{{ avi_controller_version }} Obraz, który zostanie użyty do utworzenia podu kontrolera
avi_controller_namespace_labels Nie None Etykiety K8s, które chcesz przypisać do namespace
avi_gcp_compute_addresses Nie Auto-generated Tablica adresów komputerowych utworzonych przez rolę dla kontrolerów
avi_controller_affinity Nie None Ustawia affinities K8s dla podu kontrolera
avi_controller_nodeselector Nie None Ustawia nodeSelector dla podu kontrolera
avi_setup_yaml Nie None Przekazywane jako setup.json do kontrolera przez K8s ConfigMap

Zmienne zaawansowane

Te wartości nie są wymagane i są zaawansowane, nie są przeznaczone do aktualizacji, chyba że konieczne dla szczególnych nadpisania.

Zmienne domyślne

Zmienna Uwagi
avi_controller_k8s_namespace Definicja namespace
avi_controller_k8s_external_service Zapewnia, że zewnętrzna usługa istnieje
avi_controller_k8s_service Zapewnia, że usługa istnieje
avi_controller_k8s_statefulset Zapewnia, że statefulset istnieje
avi_controller_k8s_storage_class Zapewnia, że StorageClass istnieje

Zależności

Lista innych ról hostowanych na Galaxy powinna być tutaj, plus wszelkie szczegóły dotyczące parametrów, które mogą muszą być ustawione dla innych ról, lub zmiennych, które są używane z innych ról.

Użycie

Proszę pamiętać, że przy wznawianiu wdrożenia, nie różni się to od stanu obecnego, gdy robisz proszę użyj deployment_state: present przy wznawianiu zawieszonego wdrożenia.

Przykład playbooka

Tworzenie klastra kontrolera

Zamieszczenie przykładu, jak używać swojej roli (na przykład, z przekazanymi zmiennymi jako parametry) jest zawsze miłe dla użytkowników:

- 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

Usuwanie klastra kontrolera

Podczas usuwania klastra kontrolera sprawdzamy i upewniamy się, że nie masz żadnych aktualnych VS-ów ani silników usług, aby nie skończyć z osieroconymi silnikami usług.

- 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

Licencja

Apache 2.0

Informacje o autorze

Eric Anderson

Avi Networks

O projekcie

Ansible role to deploy the Avi Controller on GKE

Zainstaluj
ansible-galaxy install avinetworks.avicontroller_gke
Licencja
apache-2.0
Pobrania
2.2k
Właściciel