anmoel.kubernetes

Rôle Ansible : Kubernetes

état de la pipeline
rapport de couverture

Introduction

Un rôle Ansible qui installe Kubernetes sur Linux.

Exigences

  • Docker ; le rôle recommandé pour l'installation de Docker : geerlingguy.docker.
  • Loadbalancer ou keepalived pour HA ; le rôle recommandé pour les installations de keepalived : evrardjp.keepalived.

Dépendances

  • Bibliothèque Python Docker

Variables

Communes

Nom Par défaut Description
kubernetes_cluster_name "kubernetes" nom du cluster Kubernetes
kubernetes_master_version "v1.13.2" version des composants maîtres de Kubernetes
kubernetes_version_rhel_package '1.13.2' uniquement pour Red Hat, version de kubectl, kubeadm, kubelet
kubernetes_yum_arch x86_64 uniquement pour Red Hat
kubernetes_apt_repo_url http://apt.kubernetes.io/ uniquement pour Debian, dépôt Kubernetes
kubernetes_apt_repo_pool kubernetes-xenial uniquement pour Debian, pool de dépôt Kubernetes
kubernetes_useHyperKubeImage "false" option pour changer l'image Docker du plan de contrôle en hyperkube
kubernetes_dns_type "CoreDNS" plugin DNS dans Kubernetes, peut être : "kube-dns" ou "CoreDNS"
kubernetes_imageRepository "k8s.gcr.io" registre Docker pour les composants maîtres de Kubernetes
kubernetes_config_dir "/etc/kubernetes" chemin de configuration
kubernetes_certs_dir "{{ kubernetes_config_dir }}/pki" dossier de certificats
kubernetes_pod_manifest_path Chemin absolu où les manifestes de pods statiques seront stockés "{{ kubernetes_config_dir }}/manifests"
kubernetes_log_dir "{{ kubernetes_log_dir }}/audit" dossier de logs
kubernetes_audit_log_dir "/var/log/kubernetes/audit" dossier de logs de audit
kubernetes_log_age 2 âge maximum des fichiers de log
kubernetes_authorization_mode "Node,RBAC" mode d'autorisation Kubernetes
kubernetes_enable_admission_plugins "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" plugins d'admission Kubernetes activés
kubernetes_dns_domain "cluster.local" domaine DNS interne dans le cluster Kubernetes
kubernetes_pod_subnet "10.244.0.0/16" sous-réseau IPv4 pour les pods, doit être un CIDR
kubernetes_service_subnet "10.96.0.0/16" sous-réseau IPv4 pour les services, doit être un CIDR
kubernetes_kubelet_extra_args "" arguments supplémentaires pour le démon kubelet
kubernetes_packages false - name: kubelet
state: present
- name: kubectl
state: present
- name: kubeadm
state: present
- name: kubernetes-cni
state: present
kubernetes_version_kubeadm 'stable-{{ kubernetes_version }}' version de kubeadm

Serveur API

Nom Par défaut Description
kubernetes_apiserver_dns "" nom DNS pour le serveur API Kubernetes
kubernetes_apiserver_ip - IP virtuelle du loadbalancer du serveur API Kubernetes
kubernetes_apiserver_port 6443 port du serveur API Kubernetes
kubernetes_apiserver_manifest_file '{{ kubernetes_pod_manifest_path }}/kube-apiserver.yaml' chemin absolu vers le fichier manifeste

Etcd

Nom Description Par défaut
kubernetes_etcd_certs_dir Chemin pour stocker les certificats Etcd '{{ kubernetes_certs_dir }}/etcd'
kubernetes_etcd_ca_cert_file Fichier de certificat CA racine Etcd '{{ kubernetes_etcd_certs_dir }}/ca.crt'
kubernetes_etcd_ca_key_file Fichier de clé CA racine Etcd '{{ kubernetes_etcd_certs_dir }}/ca.key'
kubernetes_etcd_server_cert_file Fichier de certificat serveur Etcd '{{ kubernetes_etcd_certs_dir }}/server.crt'
kubernetes_etcd_server_key_file Fichier de clé serveur Etcd '{{ kubernetes_etcd_certs_dir }}/server.key'
kubernetes_etcd_peer_cert_file '{{ kubernetes_etcd_certs_dir }}/peer.crt'
kubernetes_etcd_peer_key_file '{{ kubernetes_etcd_certs_dir }}/peer.key'
kubernetes_etcd_healthcheck_client_cert_file '{{ kubernetes_etcd_certs_dir }}/healthcheck-client.crt'
kubernetes_etcd_healthcheck_client_key_file '{{ kubernetes_etcd_certs_dir }}/healthcheck-client.key'
kubernetes_etcd_apiserver_client_cert_file '{{ kubernetes_certs_dir }}/apiserver-etcd-client.crt'
kubernetes_etcd_apiserver_client_key_file '{{ kubernetes_certs_dir }}/apiserver-etcd-client.key'
kubernetes_etcd_manifest_file '{{ kubernetes_pod_manifest_path }}/etcd.yaml'
kubernetes_etcd_data_dir dossier pour les données etcd /var/etcd
kubernetes_etcd_server_port Port de communication du serveur Etcd 2380
kubernetes_etcd_client_port Port de communication du client Etcd 2379

Gestionnaire de contrôleur

Nom Description Par défaut
kubernetes_controller_manager_manifest_file Chemin absolu vers le fichier manifeste '{{ kubernetes_pod_manifest_path }}/kube-controller-manager.yaml'

kubeadm

Nom Description Par défaut
kubernetes_kubeadm_config_file_path Chemin pour stocker le fichier de configuration kubeadm '{{ kubernetes_config_dir }}/kubeadm'
kubernetes_kubeadm_config_file_name Nom du fichier de configuration kubeadm clusterconfig.yaml

Planificateur

Nom Description Par défaut
kubernetes_scheduler_manifest_file Chemin absolu vers le fichier manifeste '{{ kubernetes_pod_manifest_path }}/kube-scheduler.yaml'

Fournisseur Cloud

Nom Description Par défaut
kubernetes_cloud_provider choisir le fournisseur cloud pris en charge, valeurs : "" ou "vsphere" ""
kubernetes_cloud_config_file chemin pour le fichier cloud_config "{{ kubernetes_config_dir }}/{{ kubernetes_cloud_provider }}.conf"
kubernetes_cloud_vsphere_workspace_server option serveur dans la zone [workspace] du cloud_config (uniquement vsphere) ""
kubernetes_cloud_vsphere_workspace_datacenter option centre de données dans la zone [workspace] du cloud_config (uniquement vsphere) ""
kubernetes_cloud_vsphere_workspace_default_datastore option default_datastore dans la zone [workspace] du cloud_config (uniquement vsphere) ""
kubernetes_cloud_vsphere_workspace_folder option dossier dans la zone [workspace] du cloud_config (uniquement vsphere) ""
kubernetes_cloud_vsphere_default_user option utilisateur dans la zone [global] du cloud_config (uniquement vsphere) ""
kubernetes_cloud_vsphere_default_password option mot de passe dans la zone [global] du cloud_config (uniquement vsphere) ""
kubernetes_cloud_vsphere_datacenters liste des centres de données avec les attributs : serveur, centres de données, nom d'utilisateur, mot de passe du cloud_config (uniquement vsphere) []
kubernetes_cloud_vsphere_network_options toutes les options dans la zone [network] du cloud_config (uniquement vsphere) []
kubernetes_cloud_vsphere_disk_options toutes les options dans la zone [disk] du cloud_config (uniquement vsphere) []

Exemples de Playbooks

Il y a un Vagrantfile pour créer tous les serveurs pour tous les scénarios : Vagrantfile
servers.yml (nécessaire pour Vagrantfile)

Tout-en-Un

inventory

site.yml

Cluster à un seul maître

inventory

site.yml

etcd séparé, cluster à un seul maître

inventory

site.yml

Cluster maître HA

inventory

site.yml

etcd séparé, cluster maître HA

inventory

site.yml

Licence

Apache 2.0

Contributeurs

Informations sur l'auteur

créé en 2018 par André Möller

À propos du projet

this role install an high available / non high available kubernetes cluster with kubeadm.

Installer
ansible-galaxy install anmoel.kubernetes
Licence
apache-2.0
Téléchargements
3k
Propriétaire