anmoel.kubernetes

Ansible Role: Kubernetes

estado de la pipeline informe de cobertura

Introducción

Un rol de Ansible que instala Kubernetes en Linux.

Requisitos

  • Docker; se recomienda el rol para la instalación de Docker: geerlingguy.docker.
  • Balanceador de carga o keepalived para HA; se recomienda el rol para la instalación de keepalived: evrardjp.keepalived

Dependencias

  • Biblioteca de Python Docker

Variables

Comunes

Nombre Predeterminado Descripción
kubernetes_cluster_name "kubernetes" nombre del cluster de Kubernetes
kubernetes_master_version "v1.13.2" Esta es la versión de los componentes maestros de Kubernetes
kubernetes_version_rhel_package '1.13.2' solo Red Hat, versión de kubectl, kubeadm, kubelet
kubernetes_yum_arch x86_64 solo Red Hat
kubernetes_apt_repo_url http://apt.kubernetes.io/ solo Debian, repositorio de Kubernetes
kubernetes_apt_repo_pool kubernetes-xenial solo Debian, pool de repositorio de Kubernetes
kubernetes_useHyperKubeImage "false" opción para cambiar la imagen de Docker del plano de control a hyperkube
kubernetes_dns_type "CoreDNS" plugin de DNS en Kubernetes, puede ser: "kube-dns" o "CoreDNS"
kubernetes_imageRepository "k8s.gcr.io" registro de Docker para los componentes maestros de Kubernetes
kubernetes_config_dir "/etc/kubernetes" ruta de configuración
kubernetes_certs_dir "{{ kubernetes_config_dir }}/pki" carpeta de certificados
kubernetes_pod_manifest_path Ruta absoluta donde se almacenarán los manifiestos de pods estáticos "{{ kubernetes_config_dir }}/manifests"
kubernetes_log_dir "{{ kubernetes_log_dir }}/audit" carpeta de registros
kubernetes_audit_log_dir "/var/log/kubernetes/audit" carpeta de registros de auditoría
kubernetes_log_age 2 edad máxima de los archivos de registro
kubernetes_authorization_mode "Node,RBAC" modo de autorización de Kubernetes
kubernetes_enable_admission_plugins "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" plugins de admisión habilitados en Kubernetes
kubernetes_dns_domain "cluster.local" dominio de DNS interno en el cluster de Kubernetes
kubernetes_pod_subnet "10.244.0.0/16" subred ipv4 para pods, debe ser un cidr
kubernetes_service_subnet "10.96.0.0/16" subred ipv4 para servicios, debe ser un cidr
kubernetes_kubelet_extra_args "" argumentos adicionales para el daemon 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 }}' versión de kubeadm

Servidor API

Nombre Predeterminado Descripción
kubernetes_apiserver_dns "" nombre DNS para el servidor API de Kubernetes
kubernetes_apiserver_ip - IP virtual del load balancer del servidor API de Kubernetes
kubernetes_apiserver_port 6443 puerto del servidor API de Kubernetes
kubernetes_apiserver_manifest_file '{{ kubernetes_pod_manifest_path }}/kube-apiserver.yaml' Ruta absoluta al archivo de manifiesto

Etcd

Nombre Descripción Predeterminado
kubernetes_etcd_certs_dir Ruta para almacenar los certificados de Etcd '{{ kubernetes_certs_dir }}/etcd'
kubernetes_etcd_ca_cert_file Archivo del certificado CA de Etcd '{{ kubernetes_etcd_certs_dir }}/ca.crt'
kubernetes_etcd_ca_key_file Archivo de la clave CA de Etcd '{{ kubernetes_etcd_certs_dir }}/ca.key'
kubernetes_etcd_server_cert_file Archivo del certificado del servidor Etcd '{{ kubernetes_etcd_certs_dir }}/server.crt'
kubernetes_etcd_server_key_file Archivo de la clave del servidor 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 carpeta para los datos de etcd /var/etcd
kubernetes_etcd_server_port Puerto de comunicación del servidor Etcd 2380
kubernetes_etcd_client_port Puerto de comunicación del cliente Etcd 2379

Controlador

Nombre Descripción Predeterminado
kubernetes_controller_manager_manifest_file Ruta absoluta al archivo de manifiesto '{{ kubernetes_pod_manifest_path }}/kube-controller-manager.yaml'

kubeadm

Nombre Descripción Predeterminado
kubernetes_kubeadm_config_file_path Ruta para almacenar el archivo de configuración de kubeadm '{{ kubernetes_config_dir }}/kubeadm'
kubernetes_kubeadm_config_file_name Nombre del archivo de configuración de kubeadm clusterconfig.yaml

Programador

Nombre Descripción Predeterminado
kubernetes_scheduler_manifest_file Ruta absoluta al archivo de manifiesto '{{ kubernetes_pod_manifest_path }}/kube-scheduler.yaml'

Proveedor de Nube

Nombre Descripción Predeterminado
kubernetes_cloud_provider elige el proveedor de nube compatible, valores: "" o "vsphere" ""
kubernetes_cloud_config_file ruta para el archivo cloud_config "{{ kubernetes_config_dir }}/{{ kubernetes_cloud_provider }}.conf"
kubernetes_cloud_vsphere_workspace_server opción servidor en el área [workspace] del cloud_config (solo vsphere) ""
kubernetes_cloud_vsphere_workspace_datacenter opción datacenter en el área [workspace] del cloud_config (solo vsphere) ""
kubernetes_cloud_vsphere_workspace_default_datastore opción default_datastore en el área [workspace] del cloud_config (solo vsphere) ""
kubernetes_cloud_vsphere_workspace_folder opción folder en el área [workspace] del cloud_config (solo vsphere) ""
kubernetes_cloud_vsphere_default_user opción user en el área [global] del cloud_config (solo vsphere) ""
kubernetes_cloud_vsphere_default_password opción password en el área [global] del cloud_config (solo vsphere) ""
kubernetes_cloud_vsphere_datacenters lista de datacenters con los atributos: server,datacenters,username,password del cloud_config (solo vsphere) []
kubernetes_cloud_vsphere_network_options todas las opciones en el área [network] del cloud_config (solo vsphere) []
kubernetes_cloud_vsphere_disk_options todas las opciones en el área [disk] del cloud_config (solo vsphere) []

Ejemplos de Playbooks

Hay un Vagrantfile para crear todos los servidores para todos los escenarios: Vagrantfile servers.yml (necesario para el Vagrantfile)

Todo en Uno

inventario

site.yml

Cluster de un solo maestro

inventario

site.yml

etcd separado, Cluster de un solo maestro

inventario

site.yml

Cluster de maestro HA

inventario

site.yml

etcd separado, Cluster de maestro HA

inventario

site.yml

Licencia

Apache 2.0

Contribuidores

Información del autor

creado en 2018 por André Möller

Acerca del proyecto

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

Instalar
ansible-galaxy install anmoel.kubernetes
Licencia
apache-2.0
Descargas
3k
Propietario