Ansible et Kubernetes 24 min de lecture

Module Helm et deploiement de charts

Module helm

Le module helm permet d'installer, mettre a jour et desinstaller des charts Helm depuis Ansible.

- name: Ajouter un depot Helm
  kubernetes.core.helm_repository:
    name: bitnami
    repo_url: https://charts.bitnami.com/bitnami

- name: Deployer un chart Helm
  kubernetes.core.helm:
    name: my-redis
    chart_ref: bitnami/redis
    release_namespace: production
    create_namespace: true
    values:
      architecture: standalone
      auth:
        password: "{{ redis_password }}"
      master:
        persistence:
          size: 8Gi

Mettre a jour un release Helm

- name: Mettre a jour Redis
  kubernetes.core.helm:
    name: my-redis
    chart_ref: bitnami/redis
    release_namespace: production
    values:
      master:
        resources:
          requests:
            memory: "256Mi"
            cpu: "200m"
    wait: true
    timeout: "10m0s"

Gerer les informations de release

- name: Obtenir les infos du release
  kubernetes.core.helm_info:
    name: my-redis
    release_namespace: production
  register: helm_info

- name: Afficher la version
  ansible.builtin.debug:
    msg: "Version du chart : {{ helm_info.status.chart }}"

Desinstaller un release

- name: Supprimer le release Redis
  kubernetes.core.helm:
    name: my-redis
    release_namespace: production
    state: absent

Playbook complet de deploiement K8s

- hosts: localhost
  connection: local
  vars:
    app_version: "2.1.0"
  tasks:
    - name: Creer le namespace
      kubernetes.core.k8s:
        state: present
        definition:
          apiVersion: v1
          kind: Namespace
          metadata:
            name: staging

    - name: Deployer la base de donnees via Helm
      kubernetes.core.helm:
        name: db
        chart_ref: bitnami/postgresql
        release_namespace: staging
        values:
          auth:
            postgresPassword: "{{ db_password }}"
        wait: true

    - name: Deployer l'application
      kubernetes.core.k8s:
        state: present
        template: app-deployment.yaml.j2
Important : Le module helm necessite que le binaire helm soit installe sur la machine de controle Ansible.