Skip to content

Ansible role to install kubeadm and bootstrap single node Kubernetes

License

Notifications You must be signed in to change notification settings

rolehippie/kubeadm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kubeadm

Source Code General Workflow Readme Workflow Galaxy Workflow License: Apache-2.0 Ansible Role

Ansible role to install kubeadm and bootstrap single node Kubernetes.

Sponsor

Building and improving this Ansible role have been sponsored by my current and previous employers like Cloudpunks GmbH and Proact Deutschland GmbH.

Table of content


Requirements

  • Minimum Ansible version: 2.10

Default Variables

kubeadm_apiserver_certsans

Extra sans for the apiserver

Default value

kubeadm_apiserver_certsans: []

kubeadm_apiserver_endpoint

Fixed endpoint for the controlplane

Default value

kubeadm_apiserver_endpoint: 127.0.0.1:6443

Example usage

kubeadm_apiserver_endpoint: kubernetes.example.com:6443

kubeadm_calico_manifests

List of manifests for calico networking

Default value

kubeadm_calico_manifests:
  - https://docs.projectcalico.org/v{{ kubeadm_calico_version }}/manifests/calico.yaml

kubeadm_calico_version

Version of calico manifest

Default value

kubeadm_calico_version: 3.21

kubeadm_canal_manifests

List of manifests for canal networking

Default value

kubeadm_canal_manifests:
  - https://docs.projectcalico.org/v{{ kubeadm_canal_version }}/manifests/canal.yaml

kubeadm_canal_version

Version of canal manifest

Default value

kubeadm_canal_version: 3.21

kubeadm_cluster_config

Kubeadm cluster configuration content

Default value

kubeadm_cluster_config: |
  apiVersion: kubeadm.k8s.io/v1beta3
  kind: ClusterConfiguration
  clusterName: {{ kubeadm_cluster_name }}
  kubernetesVersion: stable-{{ kubeadm_kubernetes_version }}
  controlPlaneEndpoint: {{ kubeadm_apiserver_endpoint }}
  apiServer:
    extraArgs: {{ kubeadm_default_apiserver_args | combine(kubeadm_extra_apiserver_args) }}
    certSANs: {{ kubeadm_apiserver_certsans | from_yaml }}
  scheduler:
    extraArgs: {{ kubeadm_default_scheduler_args | combine(kubeadm_extra_scheduler_args) }}
  controllerManager:
    extraArgs: {{ kubeadm_default_controller_args | combine(kubeadm_extra_controller_args) }}
  networking:
    serviceSubnet: {{ kubeadm_service_subnet }}
    podSubnet: {{ kubeadm_pod_subnet }}

kubeadm_cluster_name

Name of the Kubernetes cluster

Default value

kubeadm_cluster_name: kubernetes

kubeadm_cri_socket

Path to container runtime socket

Default value

kubeadm_cri_socket: /run/containerd/containerd.sock

kubeadm_default_apiserver_args

Default args for the apiserver

Default value

kubeadm_default_apiserver_args:
  bind-address: 0.0.0.0
  cloud-provider: external
  authorization-mode: Node,RBAC

kubeadm_default_controller_args

Default args for the controller

Default value

kubeadm_default_controller_args:
  bind-address: 0.0.0.0
  cloud-provider: external

kubeadm_default_scheduler_args

Default args for the scheduler

Default value

kubeadm_default_scheduler_args:
  bind-address: 0.0.0.0

kubeadm_extra_apiserver_args

Extra args for the apiserver

Default value

kubeadm_extra_apiserver_args: {}

kubeadm_extra_controller_args

Extra args for the controller

Default value

kubeadm_extra_controller_args: {}

kubeadm_extra_scheduler_args

Extra args for the scheduler

Default value

kubeadm_extra_scheduler_args: {}

kubeadm_flannel_manifests

List of manifests for flannel networking

Default value

kubeadm_flannel_manifests:
  - https://raw.githubusercontent.com/flannel-io/flannel/v{{ kubeadm_flannel_version
    }}/Documentation/kube-flannel.yml

kubeadm_flannel_version

Version of flannel manifest

Default value

kubeadm_flannel_version: 0.16.1

kubeadm_general_networking

List of manifests for general networking

Default value

kubeadm_general_networking: []

kubeadm_init_config

Kubeadm init configuration content

Default value

kubeadm_init_config: |
  apiVersion: kubeadm.k8s.io/v1beta3
  kind: InitConfiguration
  localAPIEndpoint:
    advertiseAddress: {{ kubeadm_local_address }}
    bindPort: {{ kubeadm_local_port }}
  nodeRegistration:
    criSocket: {{ kubeadm_cri_socket }}
    name: {{ inventory_hostname }}

kubeadm_keyring

Path for the repository keyring

Default value

kubeadm_keyring: /usr/share/keyrings/kubernetes-v{{ kubeadm_kubernetes_version }}-archive-keyring.gpg

kubeadm_kubelet_config

Kubelet configuration content, optionally available

Default value

kubeadm_kubelet_config: |
  apiVersion: kubelet.config.k8s.io/v1beta1
  kind: KubeletConfiguration

kubeadm_kubelet_config_enabled

Enable the kublet configuration

Default value

kubeadm_kubelet_config_enabled: false

kubeadm_kubeproxy_config

Kubeproxy configuration content, optionally available

Default value

kubeadm_kubeproxy_config: |
  apiVersion: kubeproxy.config.k8s.io/v1alpha1
  kind: KubeProxyConfiguration

kubeadm_kubeproxy_config_enabled

Enable the kubeproxy configuration

Default value

kubeadm_kubeproxy_config_enabled: false

kubeadm_kubernetes_version

Vrsion of Kubernetes to install

Default value

kubeadm_kubernetes_version: 1.29

kubeadm_local_address

Address to bind the controlplane to

Default value

kubeadm_local_address: 0.0.0.0

kubeadm_local_port

Port to bind the controlplane to

Default value

kubeadm_local_port: 6443

kubeadm_network_provider

Name of network provider to use, could be kuberouter, flannel, calico or canal

Default value

kubeadm_network_provider: none

kubeadm_pod_subnet

Used subnet for pods

Default value

kubeadm_pod_subnet: 10.244.0.0/16

kubeadm_service_subnet

Used subnet for services

Default value

kubeadm_service_subnet: 10.96.0.0/16

kubectl_keyring

Path to legacy keyring which got to be removed

kubectl_legacy_keyring

Default value

kubectl_legacy_keyring: /usr/share/keyrings/kubernetes-archive-keyring.gpg

kubectl_legacy_repo

Legacy repository that got to be removed

Default value

kubectl_legacy_repo: deb [signed-by={{ kubectl_legacy_keyring }}] http://apt.kubernetes.io/
  kubernetes-xenial main

Discovered Tags

kubeadm

Dependencies

  • None

License

Apache-2.0

Author

Thomas Boerger