Formula to install kubernetes cluster, control plane and worker.
Goal of this formula is to bootstrap a kubernetes cluster with a given version for the first CP then be able to add masters and workers taking the version from the main CP.
This way, the cluster can have its own lifecycle and still be able to grow using this formula.
Along with a proper pillar, this formula requires 3 ssh keys that can be generated using tools/genkey.sh
.
Assuming a cluster is named k8s01
, uses k8s01-mXX
for master and k8s01-wXX
for worker as naming convention and has the following pillar tree:
k8s01
├── cluster.sls # Cluster definition, see pillar.example
├── k8s_ssh_install.sls # Generated key pair for pki propagation between CP
├── k8s_ssh_join.sls # Generated key pair for getting join token
└── k8s_ssh_version.sls # Generated key pair for getting version
Here is what a pillar's top.sls
can look like:
base:
'k8s01-m\d+':
- match: pcre
- k8s01.k8s_ssh_install
'k8s01-[mw]\d+':
- match: pcre
- k8s01.cluster
- k8s01.k8s_ssh_join
- k8s01.k8s_ssh_version
k8s
Deploy kubernetes on the target node. Based on the minion_id
and the pillar, proper role will be assigned.
salt/top.sls
example:
base:
'k8s01-[mw]\d+':
- match: pcre
- k8s