Installation de k3s
Maintenant que le système est pret, setup de k3s
Installation de k3s
j’ai choisi k3s et archlinux justement parce que les packages de l’un sont dans les repos de l’autre, ca va etre rapide.
Il suffit d’installer, et de démarrer, et c’est tout
- name: Install common packages
kewlfft.aur.aur:
name:
# k3s
- k3s-bin
# kubernetes client (k3s fournit le sien mais je veux rester pure kube)
- kubectl
# interface terminal tres user friendly pour surveiller son cluster
- k9s
# module python pour que ansible puisse jouer avec kubernetes aussi
- python-openshift
# gestionnaire de packages applicatifs kubernetes
- helm
use: yay
state: present
become: true
become_user: aur_builder
- name: Start k3s
service:
name: k3s
state: started
enabled: true
become: true
Acces a k3s
k3s fournit un fichier de config utilisable, mais uniquement par l’user root. Pour permettre a l’user que ansible utilise sur le serveur, je le copie au bon endroit avec les bons droits:
- name: create kube directory
file:
path: "/home//.kube"
state: directory
mode: '700'
- name: copy kubeconfig
copy:
src: /etc/rancher/k3s/k3s.yaml
remote_src: true
dest: "/home//.kube/config"
owner: ""
group: ""
mode: '600'
become: true
Cet user aura aussi besoin d’un plugin helm pour qu’ansible m’assure l’idempotence de mes deploiements:
- name: Install Helm diff plugin
kubernetes.core.helm_plugin:
plugin_path: https://github.com/databus23/helm-diff
state: present
Et enfin, pour pouvoir acceder au cluster kubernetes directement depuis mon poste (uniquement depuis le reseau local) je télécharge localement le fichier de config que j’utiliserai avec export KUBECONFIG=kubeconfig
- name: check if kubeconfig exists locally
stat:
path: "../kubeconfig"
delegate_to: localhost
register: st
- name: fetch kubeconfig
fetch:
src: "/home//.kube/config"
dest: "../kubeconfig"
flat: true
when: not st.stat.exists
- name: set ip in kubeconfig
replace:
path: "../kubeconfig"
regexp: '127\.0\.0\.1'
replace: ""
delegate_to: localhost
Preparation des repos k8s-at-home
k8s-at-home fournit un grand nombre de charts assez homogènes dans lesquels je compte largement puiser. Entre autre confort, le user dans la plupart de leurs images est le meme pour faciliter les transferts donc je crée le meme udi chez moi
- name: Add k8s-at-home charts repository
kubernetes.core.helm_repository:
name: k8s-at-home
repo_url: https://k8s-at-home.com/charts/
- name: Add k8s-at-home group
group:
name: kah
gid: 568
become: true
- name: Add k8s-at-home user
user:
name: kah
uid: 568
group: kah
become: true
Le cluster est pret, plus qu’a deployer des machins dessus!