diff --git a/k8s-test/.gitignore b/k8s-test/.gitignore new file mode 100644 index 0000000..f3c8358 --- /dev/null +++ b/k8s-test/.gitignore @@ -0,0 +1,2 @@ +venv/ +ansible_roles/*/ diff --git a/k8s-test/Makefile b/k8s-test/Makefile new file mode 100644 index 0000000..9ba5342 --- /dev/null +++ b/k8s-test/Makefile @@ -0,0 +1,29 @@ +KUBE_CONTEXT ?= kubernetes-admin@kubernetes + +.PHONY: all +all: cluster core + +venv/bin/ansible: + python3 -m venv venv + ./venv/bin/pip install ansible + # ./venv/bin/pip install python-consul + +.PHONY: cluster +cluster: venv/bin/ansible + ./venv/bin/ansible-galaxy install -p ansible_roles -r ansible_roles/requirements.yml + env ANSIBLE_ROLES_PATH=./ansible_roles ./venv/bin/ansible-playbook -K -vv \ + -i ansible_hosts.yml ./cluster-bootstrap.yml + +.PHONY: core +core: + cd core && terraform init + cd core && terraform apply -var "kube_config_context=$(KUBE_CONTEXT)" + +.PHONY: destroy-core +destroy-core: + cd core && terraform destroy -var "kube_config_context=$(KUBE_CONTEXT)" + +# Install CNI on hosts? +# curl -L -o cni-plugins.tgz "https://github.com/containernetworking/plugins/releases/download/v1.0.0/cni-plugins-linux-$( [ $(uname -m) = aarch64 ] && echo arm64 || echo amd64)"-v1.0.0.tgz +# sudo mkdir -p /opt/cni/bin +# sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz diff --git a/k8s-test/ansible_hosts.yml b/k8s-test/ansible_hosts.yml new file mode 100644 index 0000000..72fd1fd --- /dev/null +++ b/k8s-test/ansible_hosts.yml @@ -0,0 +1,9 @@ +--- +all: + children: + servers: + hosts: + k0.thefij: + kubernetes_role: "master" + k1.thefij: + kubernetes_role: "node" diff --git a/k8s-test/ansible_roles/requirements.yml b/k8s-test/ansible_roles/requirements.yml new file mode 100644 index 0000000..fc7a66a --- /dev/null +++ b/k8s-test/ansible_roles/requirements.yml @@ -0,0 +1,7 @@ +--- +- src: geerlingguy.kubernetes + version: 7.1.1 +- src: geerlingguy.docker + version: 4.2.2 +# - src: geerlingguy.docker_arm +# version: 5.0.0 diff --git a/k8s-test/cluster-bootstrap.yml b/k8s-test/cluster-bootstrap.yml new file mode 100644 index 0000000..82441a4 --- /dev/null +++ b/k8s-test/cluster-bootstrap.yml @@ -0,0 +1,20 @@ +--- +- name: Install Docker and k8s + hosts: servers + become: true + + vars: + kubernetes_allow_pods_on_master: true + deb_arch: "{% if ansible_architecture == 'x86_64' %}amd64{% elif ansible_architecture == 'armv7l' %}armhf{% endif %}" + docker_apt_arch: "{{ deb_arch }}" + docker_compose_arch: "{{ (ansible_architecture == 'armv7l') | ternary('armv7', ansible_architecture) }}" + + pre_tasks: + - name: Verify we have an arch detected + fail: + msg: Could not determine architecture + when: deb_arch|length == 0 + + roles: + - geerlingguy.docker + - geerlingguy.kubernetes