geerlingguy.k8s_manifests

Rôle Ansible : Manifests K8s

CI

Un rôle Ansible qui applique des manifests Kubernetes (soit en tant que modèles, soit directement) aux clusters Kubernetes.

Exigences

  • Paquet Pip : openshift
  • Si vous exécutez sur localhost (par exemple avec connection: local), vous devrez peut-être définir ansible_python_interpreter: "{{ ansible_playbook_python }}" pour que le rôle fonctionne correctement.

Variables de Rôle

Les variables disponibles sont listées ci-dessous, avec des valeurs par défaut (voir defaults/main.yml):

k8s_manifests:
  # Peut être un chemin à l'intérieur du `k8s_manifests_base_dir`.
  - monitoring/prometheus

  # Utilisez un `lookup_type: 'file'` si vous ne voulez pas utiliser le modèle pour le fichier de manifeste.
  - dir: monitoring/grafana-configmap
    lookup_type: 'file'

  # Vous pouvez définir un namespace par manifeste (modélisé à `manifest_namespace`).
  - dir: docker-registry
    namespace: registry

Une liste de répertoires de manifests Kubernetes à appliquer à un cluster Kubernetes. Cette liste peut être des chemins de répertoires bruts ou des noms de dossiers, ou peut être un dictionnaire avec dir (le chemin du répertoire/nombre de dossier), un lookup_type optionnel (le type de recherche Ansible utilisé pour le fichier manifest.yml), et un namespace optionnel (modélisé à manifest_namespace).

Ce rôle examine ensuite le répertoire spécifié pour chaque manifeste et applique un fichier manifest.yml (et tout son contenu) en utilisant le module Ansible k8s.

Si vous devez modéliser le fichier, ce rôle modélise par défaut le fichier manifest.yml (et ajoute automatiquement toutes les variables d'un fichier vars.yml à côté du fichier manifest.yml). Mais vous pouvez également désactiver le modèle et appliquer le manifeste directement en définissant lookup_type: file.

k8s_manifests_base_dir: '' # inclure / à la fin, par exemple 'base_dir/'

Si défini, cette chaîne sera ajoutée devant chaque manifeste dir/chemin spécifié dans k8s_manifests. Cela est utile si vous stockez tous vos manifests Kubernetes dans un répertoire en dehors du répertoire de playbook Ansible, afin de ne pas avoir à inclure le chemin complet dans chaque élément de la liste k8s_manifests.

k8s_manifests_state: présent

Détermine si l’état pour le module k8s doit être présent ou absent. Notez que l'utilisation de absent ne supprime pas toujours toutes les ressources Kubernetes définies dans un manifeste.

k8s_force: faux

S'il est défini sur vrai, et que k8s_manifests_state est défini sur présent, un objet existant sera remplacé. Sinon, le comportement par défaut du module k8s d'Ansible et de Kubernetes lui-même (par exemple, si vous utilisez apply) est de patcher la ressource.

k8s_kubeconfig: ~/.kube/config

Le chemin vers le fichier kubeconfig à utiliser pour se connecter au cluster Kubernetes.

k8s_resource_namespace: ''
k8s_manage_namespace: vrai

Par défaut, ce rôle suppose que vous déployez des ressources dans un namespace particulier. Donc, si vous définissez k8s_resource_namespace sur le namespace sur lequel vous opérez, le rôle s'assurera que ce namespace existe avant d'appliquer des manifests. Vous pouvez désactiver la gestion des namespaces par ce rôle (par exemple, si le manifeste que vous appliquez ne doit pas être associé à un namespace, ou si vous appliquez des namespaces par manifeste) en définissant k8s_manage_namespace: faux.

k8s_no_log: vrai

Détermine si les détails de l'application de chaque manifeste au cluster doivent être enregistrés dans la sortie d'Ansible. Les secrets et autres données sensibles pourraient faire partie d'un manifeste, donc cela est configuré pour être sécurisé par défaut. Définissez sur faux à des fins de débogage.

Dépendances

Aucune.

Exemples de Playbooks

Exemple simple - exécution sur localhost

---
- hôtes: localhost
  connection: local
  gather_facts: non

  vars:
    ansible_python_interpreter: "{{ ansible_playbook_python }}"
    k8s_kubeconfig: ~/.kube/config-mon-cluster
    k8s_manifests_base_dir: k8s-manifests/
    k8s_manifests:
      - storageclass

  rôles:
    - rôle: geerlingguy.k8s_manifests

Consultez le répertoire k8s-manifests et son README pour un exemple de modèle de manifeste avec un fichier vars défini à côté.

Exécution dans le cadre d'un play plus grand

---
- hôtes: k8s_cluster
  devenir: vrai

  vars:
    ansible_python_interpreter: python
    k8s_manage_namespace: faux
    k8s_no_log: faux
    k8s_manifests_base_dir: k8s-manifests/
    k8s_manifests:
      - storageclass
      - dir: docker-registry
        namespace: registry

  tâches:
    - nom: Définir correctement l'interpréteur python.
      set_fact:
        ansible_python_interpreter: "{{ ansible_playbook_python }}"

    - import_role:
        nom: geerlingguy.k8s_manifests
      tags: ['kubernetes', 'nfs', 'drupal', 'registry']
      delegate_to: localhost
      devenir: faux
      run_once: vrai

Licence

MIT / BSD

Informations sur l'Auteur

Ce rôle a été créé en 2018 par Jeff Geerling, auteur d'Ansible for DevOps.

À propos du projet

Kubernetes manifest management role.

Installer
ansible-galaxy install geerlingguy.k8s_manifests
Licence
mit
Téléchargements
15.2k
Propriétaire
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns