DEV-222 kubernetes setup with ansible
parent
aecd51a58b
commit
3d00fdc7a0
@ -1,3 +1,3 @@
|
||||
[defaults]
|
||||
inventory_plugins = ./inventory_plugins
|
||||
callback_whitelist = profile_tasks
|
||||
callbacks_enabled = timer
|
||||
@ -1,7 +1,25 @@
|
||||
---
|
||||
- hosts: k8s-cluster
|
||||
|
||||
- name: 'apply kubernetes setup to {{ host | default("all") }}'
|
||||
hosts: '{{ host | default("k8s-cluster") }}'
|
||||
serial: "{{ serial_number | default(5) }}"
|
||||
become: yes
|
||||
|
||||
pre_tasks:
|
||||
- name: "Check if ansible version is at least 2.10.x"
|
||||
assert:
|
||||
that:
|
||||
- ansible_version.major >= 2
|
||||
- ansible_version.minor >= 10
|
||||
msg: "The ansible version has to be at least ({{ ansible_version.full }})"
|
||||
delegate_to: 127.0.0.1
|
||||
become: false
|
||||
|
||||
roles:
|
||||
- kubernetes-base
|
||||
# - kubernetes-ccm # DEV-243 is waiting for hetzner support << Ticket#2021110303010972 RE: Anderes Problem (Server: #15275628) >>
|
||||
- kubernetes-certmanager
|
||||
- kubernetes-ingress
|
||||
- { role: kubernetes/base }
|
||||
# DEV-243 is waiting for hetzner support << Ticket#2021110303010972 RE: Anderes Problem (Server: #15275628) >>
|
||||
# - { role: kubernetes/cloud-controller-manager }
|
||||
- { role: kubernetes/cert-manager }
|
||||
- { role: kubernetes/ingress-controller }
|
||||
- { role: kubernetes/apps, tags: prometheus }
|
||||
- { role: kubernetes/apps, tags: argo-cd }
|
||||
|
||||
@ -1,17 +0,0 @@
|
||||
---
|
||||
- name: k8s-base | install needed pip dependencies
|
||||
ansible.builtin.package:
|
||||
name: "{{ item }}"
|
||||
state: latest
|
||||
loop:
|
||||
- python3-pip
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: k8s-base | install needed pip dependencies
|
||||
pip:
|
||||
name: "{{ item }}"
|
||||
loop:
|
||||
- kubernetes
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
@ -1,33 +0,0 @@
|
||||
---
|
||||
- name: k8s-CCM | download Hetzner CCM
|
||||
ansible.builtin.get_url:
|
||||
url: https://github.com/hetznercloud/hcloud-cloud-controller-manager/releases/download/v1.12.0/ccm-networks.yaml
|
||||
dest: /tmp/ccm.yaml
|
||||
mode: '0664'
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: k8s-CCM | create secret for Hetzner CCM
|
||||
community.kubernetes.k8s:
|
||||
definition:
|
||||
api_version: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
namespace: kube-system
|
||||
name: hcloud
|
||||
label:
|
||||
app: ccm
|
||||
provider: hcloud
|
||||
type: Opaque
|
||||
data:
|
||||
network: "{{ stage | string | b64encode }}"
|
||||
token: "{{ hetzner_authentication_token | string | b64encode }}"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: k8s-CCM | Apply Hetzner CCM manifest to the cluster.
|
||||
community.kubernetes.k8s:
|
||||
state: present
|
||||
src: /tmp/ccm.yaml
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
@ -0,0 +1 @@
|
||||
---
|
||||
@ -0,0 +1,48 @@
|
||||
---
|
||||
|
||||
### tags:
|
||||
### prometheus
|
||||
### argo-cd
|
||||
|
||||
- name: Add prometheus-community chart repo
|
||||
kubernetes.core.helm_repository:
|
||||
name: prometheus-community
|
||||
repo_url: "https://prometheus-community.github.io/helm-charts"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
tags:
|
||||
- prometheus
|
||||
|
||||
# TODO
|
||||
# https://stackoverflow.com/questions/65806507/how-to-change-kube-proxy-config
|
||||
# https://stackoverflow.com/questions/65901186/kube-prometheus-stack-issue-scraping-metrics
|
||||
- name: Deploy kube-prometheus-stack inside monitoring namespace
|
||||
kubernetes.core.helm:
|
||||
name: prometheus
|
||||
chart_ref: prometheus-community/kube-prometheus-stack
|
||||
release_namespace: monitoring
|
||||
create_namespace: true
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
tags:
|
||||
- prometheus
|
||||
|
||||
- name: Add argo-cd chart repo
|
||||
kubernetes.core.helm_repository:
|
||||
name: argo-cd
|
||||
repo_url: "https://argoproj.github.io/argo-helm"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
tags:
|
||||
- argo-cd
|
||||
|
||||
- name: Deploy Argo-CD inside argo-cd namespace
|
||||
kubernetes.core.helm:
|
||||
name: argo-cd
|
||||
chart_ref: argo-cd/argo-cd
|
||||
release_namespace: argo-cd
|
||||
create_namespace: true
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
tags:
|
||||
- argo-cd
|
||||
@ -0,0 +1 @@
|
||||
---
|
||||
@ -0,0 +1,29 @@
|
||||
---
|
||||
|
||||
### tags:
|
||||
|
||||
- name: Install dependencies
|
||||
ansible.builtin.package:
|
||||
name: "{{ item }}"
|
||||
state: latest
|
||||
loop:
|
||||
- python3-pip
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: Install pip dependencies
|
||||
ansible.builtin.pip:
|
||||
name: "{{ item }}"
|
||||
loop:
|
||||
- kubernetes
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: Install Helm plugins
|
||||
kubernetes.core.helm_plugin:
|
||||
plugin_path: "{{ item }}"
|
||||
state: present
|
||||
loop:
|
||||
- https://github.com/databus23/helm-diff
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
@ -1,12 +1,13 @@
|
||||
---
|
||||
|
||||
k8s_certmanager_helm__release_values:
|
||||
installCRDs: true
|
||||
webhook.timeoutSeconds: 4
|
||||
|
||||
k8s_certmanager_helm__cluster_issuers:
|
||||
prod:
|
||||
email: friedrich.goerz@netgo.de
|
||||
email: "{{ lets_encrypt_email }}"
|
||||
server: https://acme-v02.api.letsencrypt.org/directory
|
||||
staging:
|
||||
email: friedrich.goerz@netgo.de
|
||||
email: "{{ lets_encrypt_email }}"
|
||||
server: https://acme-staging-v02.api.letsencrypt.org/directory
|
||||
@ -0,0 +1 @@
|
||||
---
|
||||
@ -0,0 +1,75 @@
|
||||
---
|
||||
|
||||
### tags:
|
||||
### ccm
|
||||
|
||||
- name: Download Hetzner CCM
|
||||
ansible.builtin.get_url:
|
||||
url: https://github.com/hetznercloud/hcloud-cloud-controller-manager/releases/download/v1.12.0/ccm-networks.yaml
|
||||
dest: /tmp/ccm.yaml
|
||||
mode: '0664'
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
tags:
|
||||
- ccm
|
||||
|
||||
- name: Create secret for Hetzner CCM
|
||||
kubernetes.core.k8s:
|
||||
definition:
|
||||
api_version: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
namespace: kube-system
|
||||
name: hcloud
|
||||
label:
|
||||
app: ccm
|
||||
provider: hcloud
|
||||
type: Opaque
|
||||
data:
|
||||
network: "{{ stage | string | b64encode }}"
|
||||
token: "{{ hetzner_authentication_token | string | b64encode }}"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
tags:
|
||||
- ccm
|
||||
|
||||
- name: Apply Hetzner CCM manifest to the cluster.
|
||||
kubernetes.core.k8s:
|
||||
state: present
|
||||
src: /tmp/ccm.yaml
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
tags:
|
||||
- ccm
|
||||
|
||||
- name: Add prometheus-community chart repo
|
||||
kubernetes.core.helm_repository:
|
||||
name: prometheus-community
|
||||
repo_url: "https://prometheus-community.github.io/helm-charts"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: Add argo-cd chart repo
|
||||
kubernetes.core.helm_repository:
|
||||
name: argo-cd
|
||||
repo_url: "https://argoproj.github.io/argo-helm"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: Deploy Prometheus inside monitoring namespace
|
||||
kubernetes.core.helm:
|
||||
name: prometheus
|
||||
chart_ref: prometheus-community/kube-prometheus-stack
|
||||
release_namespace: monitoring
|
||||
create_namespace: true
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: Deploy Argo-CD inside argo-cd namespace
|
||||
kubernetes.core.helm:
|
||||
name: argo-cd
|
||||
chart_ref: argo-cd/argo-cd
|
||||
release_namespace: argo-cd
|
||||
create_namespace: true
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
@ -1,4 +1,5 @@
|
||||
---
|
||||
|
||||
k8s_ingress_helm__release_values:
|
||||
controller:
|
||||
replicaCount: 2
|
||||
Loading…
Reference in New Issue