Dans ce billet, nous aborderons une méthode pour opérer un rollout restart avec Ansible.
Pour ce faire, nous allons jouer avec les annotations du deployment pour y ajouter un clé « restartedAt » avec la date du jour en valeur.
Voici le module en question:
- name: Patch coredns configmap to handle the DNS server
delegate_to: localhost
run_once: true
kubernetes.core.k8s:
kubeconfig: "/etc/rancher/rke2/rke2.yaml"
namespace: kube-system
template:
path: rke2-coredns.yml.j2
register: coredns_change_dns
- name: Patch coredns deploy to force restart
delegate_to: localhost
run_once: true
kubernetes.core.k8s:
kubeconfig: "/etc/rancher/rke2/rke2.yaml"
state: patched
kind: Deployment
namespace: kube-system
name: rke2-coredns
definition:
spec:
template:
metadata:
annotations:
kubectl.kubernetes.io/restartedAt: "{{ now(fmt='%Y-%m-%dT%H:%M:%SZ') }}"
when: coredns_change_dns.changed
Nous utilisons donc ici le state patched du kubernetes.core.k8s pour générer une erreur dans le cas où le deployment n’existerait pas.
Et voilà, votre deployment redémarrera quand la configuration sera changée à l’étape précédente.