geerlingguy.k8s_manifests
Rola Ansible: Manifesty K8s
Rola Ansible, która stosuje manifesty Kubernetes (zarówno szablonowe, jak i bezpośrednie) do klastrów Kubernetes.
Wymagania
- Pakiet Pip:
openshift
- Jeśli uruchamiasz na localhost (np. z
connection: local
), może być konieczne ustawienieansible_python_interpreter: "{{ ansible_playbook_python }}"
, aby rola działała poprawnie.
Zmienne roli
Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (zobacz defaults/main.yml
):
k8s_manifests:
# Może być ścieżką w obrębie `k8s_manifests_base_dir`.
- monitoring/prometheus
# Użyj wyszukiwania `file`, jeśli nie chcesz tworzyć szablonu pliku manifestu.
- dir: monitoring/grafana-configmap
lookup_type: 'file'
# Możesz ustawić przestrzeń nazw dla każdego manifestu (szablonowane do `manifest_namespace`).
- dir: docker-registry
namespace: registry
Lista katalogów manifestów Kubernetes do zastosowania w klastrze Kubernetes. Ta lista może być jednak zarówno surowymi ścieżkami katalogów lub nazwami folderów, lub może być słownikiem z dir
(ścieżka katalogu/nazwa folderu), opcjonalnym lookup_type
(typ wyszukiwania Ansible używany dla pliku manifest.yml
) i opcjonalnym namespace
(szablonowane do manifest_namespace
).
Rola przeszukuje określony katalog w poszukiwaniu każdego manifestu i stosuje plik manifest.yml
(oraz wszystkie jego zawartości) za pomocą modułu k8s
Ansible.
Jeśli potrzebujesz stworzyć szablon pliku, ta rola domyślnie tworzy szablon dla pliku manifest.yml
(i automatycznie dodaje wszelkie zmienne w pliku vars.yml
obok pliku manifest.yml
). Możesz jednak również wyłączyć tworzenie szablonów i zastosować manifest bezpośrednio, ustawiając lookup_type: file
.
k8s_manifests_base_dir: '' # uwzględnij ukośnik, np. 'base_dir/'
Jeśli ustawione, ten ciąg zostanie dodany na początku każdej manifestu dir
/ścieżki określonej w k8s_manifests
. Jest to przydatne, jeśli przechowujesz wszystkie swoje manifesty Kubernetes w katalogu poza katalogiem playbooka Ansible, aby nie musieć uwzględniać pełnej ścieżki w każdym zdefiniowanym elemencie listy k8s_manifests
.
k8s_manifests_state: present
Określa, czy stan
dla modułu k8s
powinien być present
czy absent
. Należy zauważyć, że użycie absent
nie zawsze usuwa wszystkie zasoby Kubernetes zdefiniowane w manifeście.
k8s_force: false
Jeśli ustawione na true
, a k8s_manifests_state
jest ustawione na present
, istniejący obiekt zostanie zastąpiony. W przeciwnym razie domyślne zachowanie modułu k8s
Ansible i samego Kubernetes (np. przy użyciu apply
) polega na aktualizacji zasobu.
k8s_kubeconfig: ~/.kube/config
Ścieżka do pliku kubeconfig
, który będzie używany do połączenia z klastrem Kubernetes.
k8s_resource_namespace: ''
k8s_manage_namespace: true
Domyślnie ta rola zakłada, że będziesz wdrażać zasoby w określonej przestrzeni nazw. Jeśli więc ustawisz k8s_resource_namespace
na przestrzeń nazw, w której działasz, rola upewni się, że ta przestrzeń istnieje przed zastosowaniem jakichkolwiek manifestów. Możesz wyłączyć zarządzanie przestrzenią nazw przez tę rolę (np. jeśli manifest, który stosujesz, nie powinien być zgrupowany w przestrzeni nazw lub jeśli stosujesz przestrzenie nazw w każdym manifeście), ustawiając k8s_manage_namespace: false
.
k8s_no_log: true
Określa, czy logować szczegóły zastosowania każdego manifestu do klastra w zaktualizowanej wersji Ansible. Sekrety i inne poufne dane mogą być częścią manifestu, dlatego domyślnie jest to ustawione na bezpieczne. Ustaw na false
w celach debugowania.
Zależności
Brak.
Przykładowe playbooki
Prosty przykład - uruchamianie na localhost
---
- hosts: localhost
connection: local
gather_facts: no
vars:
ansible_python_interpreter: "{{ ansible_playbook_python }}"
k8s_kubeconfig: ~/.kube/config-my-cluster
k8s_manifests_base_dir: k8s-manifests/
k8s_manifests:
- storageclass
roles:
- role: geerlingguy.k8s_manifests
Zobacz katalog k8s-manifests
i jego README dla przykładowego układu z szablonowanymi manifestami z odpowiednim plikiem zmiennych.
Uruchamianie jako część większego play
---
- hosts: k8s_cluster
become: true
vars:
ansible_python_interpreter: python
k8s_manage_namespace: false
k8s_no_log: false
k8s_manifests_base_dir: k8s-manifests/
k8s_manifests:
- storageclass
- dir: docker-registry
namespace: registry
tasks:
- name: Ustawienie odpowiedniego interpretera Pythona.
set_fact:
ansible_python_interpreter: "{{ ansible_playbook_python }}"
- import_role:
name: geerlingguy.k8s_manifests
tags: ['kubernetes', 'nfs', 'drupal', 'registry']
delegate_to: localhost
become: false
run_once: true
Licencja
MIT / BSD
Informacje o autorze
Ta rola została stworzona w 2018 roku przez Jeffa Geerlinga, autora Ansible for DevOps.
Kubernetes manifest management role.
ansible-galaxy install geerlingguy.k8s_manifests