geerlingguy.k8s_manifests

Rola Ansible: Manifesty K8s

CI

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 ustawienie ansible_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.

Zainstaluj
ansible-galaxy install geerlingguy.k8s_manifests
Licencja
mit
Pobrania
15.2k
Właściciel
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns