cloudlabsinfra.k8s_cluster
ansible-k8s-cluster
Rôle Ansible pour configurer un cluster Kubernetes
Ce rôle initialise un cluster Kubernetes depuis le début, en ajoutant tous les nœuds de contrôle et de travail définis. La fonctionnalité clé de ce rôle est la possibilité de définir toutes les options que vous souhaitez. Cela se fait en utilisant la configuration de kubeadm.
Exigences
- runtime de conteneur. Containerd est désormais le seul runtime de conteneur supporté.
- plugin CNI
- Paquet
iproute2
(collecte des informations réseau pour les systèmes d'exploitation de type Debian) - Certificats client (si vous utilisez un cluster etcd externe avec TLS)
Variables de rôle
Toutes les variables sont définies par défaut dans defaults/main.yml et peuvent être remplacées:
Nom | Valeur par défaut | Description |
---|---|---|
k8s_cluster_kube_version |
1.28.8-1.1 | Versions de kubelet , kubeadm et kubectl |
k8s_cluster_apt_key_url |
https://packages.cloud.google.com/apt/doc/apt-key.gpg | URL de la clé Apt |
k8s_cluster_apt_key_file |
/usr/share/keyrings/kubernetes-archive-keyring.gpg | Fichier de clé Apt |
k8s_cluster_apt_repository |
deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main | Dépôt Apt |
k8s_cluster_kubernetes_version |
1.28.8 | Version de Kubernetes |
k8s_cluster_kubelet_config_root_dir |
/etc/kubernetes | Répertoire de configuration par défaut de kubelet |
k8s_cluster_node_type |
worker | Type de nœud par défaut. Si vous avez besoin d'initier ou de rejoindre le maître, vous devez définir cette variable sur 'master' |
k8s_cluster_node_name |
inventory_hostname | Nom du nœud k8s |
k8s_cluster_initial_master |
false | Cette variable identifie le nœud maître initial pour initialiser le cluster. Elle doit être assignée au seul nœud avec la valeur 'true' |
k8s_cluster_init_configuration |
Voir defaults/main.yml | Représente kind: InitConfiguration du cluster en format yaml pur |
k8s_cluster_cluster_configuration |
Voir defaults/main.yml | Représente kind: ClusterConfiguration du cluster en format yaml pur |
k8s_cluster_kubelet_configuration |
Voir defaults/main.yml | Représente kind: KubeletConfiguration en format yaml pur |
k8s_cluster_kubeproxy_configuration |
"" | Représente kind: KubeproxyConfiguration en format yaml pur |
k8s_cluster_join_configuration |
Voir defaults/main.yml | Représente kind: JoinConfiguration du cluster en format yaml pur |
k8s_cluster_flannel_apply |
https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml | Manifest Flannel par défaut. En savoir plus sur Flannel |
k8s_cluster_custom_networking_tasks_path |
"" | Chemin vers le fichier avec un ensemble de tâches pour configurer le réseau. Cela peut être un ensemble de tâches ou même une déclaration include_role . Il s'exécutera une seule fois lors de l'initialisation du cluster. |
* sauf les champs apiVersion
et kind
Dépendances
Nous recommandons les rôles suivants pour installer Containerd et le plugin CNI :
- geerlingguy.containerd
- githubixx.cni
Exemple de Playbook
Vous pouvez également trouver des exemples d'utilisation de rôle dans les playbooks de convergence du répertoire molecule/
.
L'exemple ci-dessous crée un cluster Kubernetes à maître unique avec trois nœuds de travail (etcd sera provisionné automatiquement par kubeadm dans le cadre du nœud maître) :
# inventory.ini
[masters]
master.example.com k8s_cluster_node_type="master" k8s_cluster_initial_master="true"
[workers]
worker-1.example.com
worker-2.example.com
worker-3.example.com
# playbook.yml
- hosts: all
become: true
roles:
- { role: geerlingguy.containerd }
- { role: cloudlabsinfra.k8s_cluster }
Licence
Apache 2.0
Informations sur l'auteur
Rôles partagés par Cloud Labs
Ansible role for configuring Kubernetes cluster
ansible-galaxy install cloudlabsinfra.k8s_cluster