125 lines
5.0 KiB
YAML
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 |