anmoel.kubernetes

Ansible Rolle: Kubernetes

Pipeline-Status Abdeckungsbericht

Einführung

Eine Ansible-Rolle, die Kubernetes auf Linux installiert.

Anforderungen

  • Docker; empfohlene Rolle für die Docker-Installation: geerlingguy.docker.
  • Loadbalancer oder keepalived für HA; empfohlene Rolle für die keepalived-Installationen: evrardjp.keepalived.

Abhängigkeiten

  • Python-Bibliothek Docker

Variablen

Allgemein

Name Standard Beschreibung
kubernetes_cluster_name "kubernetes" Name des Kubernetes-Clusters
kubernetes_master_version "v1.13.2" Version der Kubernetes-Masterkomponenten
kubernetes_version_rhel_package '1.13.2' nur Redhat, Version von kubectl, kubeadm, kubelet
kubernetes_yum_arch x86_64 nur Redhat
kubernetes_apt_repo_url http://apt.kubernetes.io/ nur Debian, Kubernetes-Repository
kubernetes_apt_repo_pool kubernetes-xenial nur Debian, Repository-Pool
kubernetes_useHyperKubeImage "false" Umschalter für die Verwendung des Hyperkube-Docker-Images
kubernetes_dns_type "CoreDNS" DNS-Plugin in Kubernetes, kann "kube-dns" oder "CoreDNS" sein
kubernetes_imageRepository "k8s.gcr.io" Docker-Registry für Kubernetes-Masterkomponenten
kubernetes_config_dir "/etc/kubernetes" Konfigurationspfad
kubernetes_certs_dir "{{ kubernetes_config_dir }}/pki" Zertifikatsordner
kubernetes_pod_manifest_path Absoluter Pfad, wo die statischen Pod-Manifestdateien gespeichert werden "{{ kubernetes_config_dir }}/manifests"
kubernetes_log_dir "{{ kubernetes_log_dir }}/audit" Protokollordner
kubernetes_audit_log_dir "/var/log/kubernetes/audit" Audit-Protokollordner
kubernetes_log_age 2 Maximales Alter der Protokolldateien
kubernetes_authorization_mode "Node,RBAC" Autorisierungsmodus in Kubernetes
kubernetes_enable_admission_plugins "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" Aktivierte Admission-Plugins in Kubernetes
kubernetes_dns_domain "cluster.local" Interne DNS-Domäne im Kubernetes-Cluster
kubernetes_pod_subnet "10.244.0.0/16" IPv4-Subnetz für Pods, muss eine CIDR sein
kubernetes_service_subnet "10.96.0.0/16" IPv4-Subnetz für Services, muss eine CIDR sein
kubernetes_kubelet_extra_args "" Zusätzliche Argumente für den Kubelet-Daemon
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 von kubeadm

API-Server

Name Standard Beschreibung
kubernetes_apiserver_dns "" DNS-Name für den Kubernetes-API-Server
kubernetes_apiserver_ip - Virtuelle IP des Kubernetes-API-Server-Loadbalancers
kubernetes_apiserver_port 6443 Port des Kubernetes-API-Servers
kubernetes_apiserver_manifest_file '{{ kubernetes_pod_manifest_path }}/kube-apiserver.yaml' Absoluter Pfad zur Manifestdatei

Etcd

Name Beschreibung Standard
kubernetes_etcd_certs_dir Pfad zum Speichern der Etcd-Zertifikate '{{ kubernetes_certs_dir }}/etcd'
kubernetes_etcd_ca_cert_file Etcd Root CA-Zertifikatdatei '{{ kubernetes_etcd_certs_dir }}/ca.crt'
kubernetes_etcd_ca_key_file Etcd Root CA-Schlüsseldatei '{{ kubernetes_etcd_certs_dir }}/ca.key'
kubernetes_etcd_server_cert_file Etcd Server-Zertifikatdatei '{{ kubernetes_etcd_certs_dir }}/server.crt'
kubernetes_etcd_server_key_file Etcd Server-Schlüsseldatei '{{ 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 Ordner für Etcd-Daten /var/etcd
kubernetes_etcd_server_port Kommunikationsport des Etcd-Servers 2380
kubernetes_etcd_client_port Kommunikationsport des Etcd-Clients 2379

Controller-Manager

Name Beschreibung Standard
kubernetes_controller_manager_manifest_file Absoluter Pfad zur Manifestdatei '{{ kubernetes_pod_manifest_path }}/kube-controller-manager.yaml'

kubeadm

Name Beschreibung Standard
kubernetes_kubeadm_config_file_path Pfad zum Speichern der kubeadm-Konfigurationsdatei '{{ kubernetes_config_dir }}/kubeadm'
kubernetes_kubeadm_config_file_name Name der kubeadm-Konfigurationsdatei clusterconfig.yaml

Scheduler

Name Beschreibung Standard
kubernetes_scheduler_manifest_file Absoluter Pfad zur Manifestdatei '{{ kubernetes_pod_manifest_path }}/kube-scheduler.yaml'

Cloud-Provider

Name Beschreibung Standard
kubernetes_cloud_provider Wählen Sie unterstützten Cloud-Anbieter, Werte: "" oder "vsphere" ""
kubernetes_cloud_config_file Pfad zur cloud_config-Datei "{{ kubernetes_config_dir }}/{{ kubernetes_cloud_provider }}.conf"
kubernetes_cloud_vsphere_workspace_server Serveroption im Bereich [workspace] der cloud_config (nur vsphere) ""
kubernetes_cloud_vsphere_workspace_datacenter Datacenter-Option im Bereich [workspace] der cloud_config (nur vsphere) ""
kubernetes_cloud_vsphere_workspace_default_datastore Option default_datastore im Bereich [workspace] der cloud_config (nur vsphere) ""
kubernetes_cloud_vsphere_workspace_folder Ordneroption im Bereich [workspace] der cloud_config (nur vsphere) ""
kubernetes_cloud_vsphere_default_user Benutzeroption im Bereich [global] der cloud_config (nur vsphere) ""
kubernetes_cloud_vsphere_default_password Passwortoption im Bereich [global] der cloud_config (nur vsphere) ""
kubernetes_cloud_vsphere_datacenters Liste von Datacentern mit den Attributen: server, datacenters, username, password der cloud_config (nur vsphere) []
kubernetes_cloud_vsphere_network_options Alle Optionen im Bereich [network] der cloud_config (nur vsphere) []
kubernetes_cloud_vsphere_disk_options Alle Optionen im Bereich [disk] der cloud_config (nur vsphere) []

Beispiel-Playbooks

Es gibt eine Vagrantfile, um alle Server für alle Szenarien zu erstellen: Vagrantfile servers.yml (benötigt für Vagrantfile)

All-in-One

inventory

site.yml

Einzelner Master-Cluster

inventory

site.yml

Getrennter etcd, einzelner Master-Cluster

inventory

site.yml

HA-Master-Cluster

inventory

site.yml

Getrennter etcd, HA-Master-Cluster

inventory

site.yml

Lizenz

Apache 2.0

Mitwirkende

Autoreninformationen

Erstellt 2018 von André Möller

Über das Projekt

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

Installieren
ansible-galaxy install anmoel.kubernetes
Lizenz
apache-2.0
Downloads
3k
Besitzer