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

À propos du projet

Ansible role for configuring Kubernetes cluster

Installer
ansible-galaxy install cloudlabsinfra.k8s_cluster
Licence
apache-2.0
Téléchargements
93