Files
semaphore/kubernetes.yml
2023-11-26 19:22:30 +01:00

125 lines
5.0 KiB
YAML

---
- name: Main playbook for Kubernetes cluster
hosts: kubernetes
become: true
roles:
- { role: ansible-role-linux-kubernetes, tags: [setup-cluster] }
- { role: geerlingguy.helm, tags: helm, when: "{{ inventory_hostname in groups['kubemaster'] }}" }
tasks:
- name: Add kubectl alias and completion only on master nodes
ansible.builtin.lineinfile:
path: "{{ item.path }}"
regexp: "{{ item.regexp }}"
state: "{{ item.state|default('present') }}"
line: "{{ item.line|default(omit) }}"
loop: "{{ kubernetes_alias_bashrc }}"
when:
- inventory_hostname in groups['kubemaster']
tags:
- kubernetes
# pip install kubernetes
# install argocd
- block:
- name: Download manifest on master
ansible.builtin.get_url:
url: "{{ item.url }}"
dest: "~/{{ item.url.split('/') | last }}"
mode: '0664'
run_once: true
loop: "{{ kubernetes_app }}"
- name: Create namespace
kubernetes.core.k8s:
name: "{{ item.namespace }}"
api_version: v1
kind: Namespace
state: present
loop: "{{ kubernetes_app }}"
- name: Apply manifest
kubernetes.core.k8s:
namespace: "{{ item.namespace }}"
state: present
src: "~/{{ item.url.split('/') | last }}"
loop: "{{ kubernetes_app }}"
when:
- inventory_hostname in groups['kubemaster']
- kubernetes_init_app
tags:
- kubernetes
# Install clabernetes (docker on worker and master ? No, docker ok on worker but doesn't work ) ----> https://containerlab.dev/install/
# - name: login helm registry
# shell: "helm registry login {{ github_registry_containerlab }} -u {{ github_user }} -p {{ github_token }}"
# when: "{{ inventory_hostname in groups['kubemaster'] }}"
# tags: helm
# helm upgrade --install --create-namespace --namespace clabernetes clabernetes oci://ghcr.io/srl-labs/clabernetes/clabernetes
# clabverter : Converting the containerlab topology to clabernetes manifests (kubernetes style) and applying it
# docker pull ghcr.io/srl-labs/clabernetes/clabverter
# alias clabverter="mkdir -p converted && chown -R 65532:65532 converted && \
# docker run -v $(pwd):/clabernetes/work --rm \
# ghcr.io/srl-labs/clabernetes/clabverter"
# Install loablancer with VIP (but not necessary) -> if no external access to the nodes is required, load balancer installation can be skipped altogether.
# kubectl apply -f https://kube-vip.io/manifests/rbac.yaml
# kubectl apply -f https://raw.githubusercontent.com/kube-vip/kube-vip-cloud-provider/main/manifest/kube-vip-cloud-controller.yaml
# kubectl create configmap --namespace kube-system kubevip --from-literal range-global=172.18.1.10-172.18.1.250
# CLI
#KVVERSION=$(curl -sL https://api.github.com/repos/kube-vip/kube-vip/releases | jq -r ".[0].name")
#alias kube-vip="docker run --network host --rm ghcr.io/kube-vip/kube-vip:$KVVERSION"
# install kube-vip load balancer daemonset in ARP mode:
# I have set on public IP and listening on port kubernetes, 6443
#kube-vip manifest daemonset --services --inCluster --arp --interface eth0 | kubectl apply -f -
#root@ovh-master:/tmp/srl02# mkdir -p converted && chown -R 65532:65532 converted && docker run -v $(pwd):/clabernetes/work --rm ghcr.io/srl-labs/clabernetes/clabverter --topologyFile srl02.clab.yml --stdout | kubectl apply -f -
# mkdir -p converted && chown -R 65532:65532 converted && docker run -v $(pwd):/clabernetes/work --rm ghcr.io/srl-labs/clabernetes/clabverter --topologyFile srl02.clab.yml --stdout | kubectl apply -f -
# docker run -v $(pwd):/clabernetes/work --rm ghcr.io/srl-labs/clabernetes/clabverter --topologyFile srl02.clab.yml --stdout | kubectl apply -f -
# INFO | clabverter | starting clabversion!
# INFO | clabverter | loading and validating provided containerlab topology file...
# INFO | clabverter | handling containerlab associated file(s) if present...
# INFO | clabverter | handling containerlab topology startup config(s) if present...
# INFO | clabverter | rendering clabernetes startup config outputs...
# INFO | clabverter | handling containerlab extra file(s) if present...
# INFO | clabverter | rendering clabernetes extra file(s) outputs...
# INFO | clabverter | clabversion complete!
# configmap/srl02-srl1-startup-config created
# configmap/srl02-srl2-startup-config created
# containerlab.topology.clabernetes/srl02 created
# kubectl exec -n clabernetes -it srl02-srl1-646dbff599-c65gw -- bash
# kubectl get --namespace clabernetes Containerlab
# kubectl delete --namespace clabernetes Containerlab
# containerlab
# echo "deb [trusted=yes] https://apt.fury.io/netdevops/ /" | \
# sudo tee -a /etc/apt/sources.list.d/netdevops.list
# sudo apt update && sudo apt install containerlab