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
Będziesz musiał ustawić swój obecny klaster poprzez
gcloud
, aby skonfigurować odpowiednie dane .kube/config. Aby to zrobić, uruchom następujące poleceniegcloud container clusters get-credentials <nazwa-klastra> --region=<region> --zone=<strefa>
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
Ansible role to deploy the Avi Controller on GKE
ansible-galaxy install avinetworks.avicontroller_gke