Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mnrgreg/ansible-kubernetes-kubeadm-ha
Installation of Highly Available 'Stacked Control Plane' Kubernetes cluster using Ansible and Kubeadm
https://github.com/mnrgreg/ansible-kubernetes-kubeadm-ha
ansible baremetal enterprise helm kubeadm-ha kubernetes-deployment local provisioner storage
Last synced: 11 days ago
JSON representation
Installation of Highly Available 'Stacked Control Plane' Kubernetes cluster using Ansible and Kubeadm
- Host: GitHub
- URL: https://github.com/mnrgreg/ansible-kubernetes-kubeadm-ha
- Owner: MnrGreg
- Created: 2019-01-15T06:34:02.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-10-15T04:38:38.000Z (about 5 years ago)
- Last Synced: 2024-10-16T09:34:36.241Z (22 days ago)
- Topics: ansible, baremetal, enterprise, helm, kubeadm-ha, kubernetes-deployment, local, provisioner, storage
- Size: 209 KB
- Stars: 34
- Watchers: 1
- Forks: 31
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ansible Playbooks to install an HA Kubernetes (multi-master) cluster using Kubeadm.
This repository provides Ansible Playbooks to install a Kubernetes HA cluster in an airgapped environment.
- Uses recently GA'd Kubeadm HA joining features# Prerequisites:
- Install Ansible and a forward proxy on the Ansible host
- Ansible:
for macos `brew install ansible`
for linux `yum install ansible`- Setup ssh access from Ansible host to Kubernetes nodes.
```ssh-copy-id -i ~/.ssh/id_rsa.pub ```# Environment preparation:
Specify the Master and Workers in the `inventory/*cluster*` file:
```
[k8s-masters] # these are all the masters
[k8s-workers] # these are all the worker nodes
```Update the `inventory/group_vars/*cluster*` section:
- choose the desired versions for kubernetes and docker
- setup the pod network cidr (default setup is for calico - modify in calico.yaml as well)
- specify the version of Helm to use
- specify the Local Storage Provisioner version# Install a highly available kubernetes using kubeadm
You can now run install-all.yaml playbook to get your cluster setup.
You can also run the different playbooks separately for different purposes (setting up docker, masters, kubeadm, heml ...).```
ansible-playbook -i inventory/cluster1-prod playbooks/install-all.yaml --private-key=~/.ssh/id_rsa -u %username% -v
```# Restarting the install:
If you need to restart the process using kubeadm reset, please use the uninstall.yaml playbook that deletes the state from all vms.# Upgrade a highly available kubernetes using kubeadm
To upgrade the kubernetes control plane run:
```
ansible-playbook -i inventory/cluster1-prod playbooks/upgrade-all.yaml --private-key=~/.ssh/id_rsa -u username -v
```# What install-all.yaml includes:
- Adding the required yum repositories
- Installing docker
- Installing kubeadm, kubelet and kubectl
- Initializing the first master with etcd and kubernetes-api
- Join replica master nodes to the primary master
- Adding the worker nodes to the cluster
- Installing Helm & Tiller
- Installing Local Storage Provisioner
- Enable Azure AD OIDC authentication# Restarting the install:
If you need to restart the process using kubeadm reset, please use the uninstall.yaml playbook that deletes the state from all vms.
# To sequentially drain and patch the underlying OS hosts:
```
ansible-playbook -i inventory/cluster1-prod playbooks/os-patch-updates.yaml --private-key=~/.ssh/id_rsa -u username -v
```