feat(kubernetes): stable kubernetes with argo
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: argocd-ingress
|
||||
namespace: argocd
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: traefik
|
||||
cert-manager.io/cluster-issuer: "{{ argocd_cert_resolver }}"
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
cert-manager.io/cluster-issuer: "{{ argocd_cert_resolver }}"
|
||||
traefik.ingress.kubernetes.io/router.middlewares: default-redirect-https@kubernetescrd
|
||||
spec:
|
||||
rules:
|
||||
- host: {{ argocd_hostname }}
|
||||
@@ -22,5 +23,5 @@ spec:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- {{ argocd_hostname }}
|
||||
secretName: argocd-tls-secret
|
||||
- {{ argocd_hostname }}
|
||||
secretName: k3s-seyshiro-de-tls
|
||||
|
||||
@@ -67,3 +67,11 @@
|
||||
tags:
|
||||
- cert_manager
|
||||
- cluster_issuer
|
||||
|
||||
- name: Create Let's Encrypt Certificate
|
||||
kubernetes.core.k8s:
|
||||
state: present
|
||||
definition: "{{ lookup('ansible.builtin.template', 'certificate.yml.j2') | from_yaml }}"
|
||||
tags:
|
||||
- cert_manager
|
||||
- certificate
|
||||
|
||||
16
roles/kubernetes_cert_manager/templates/certificate.yml.j2
Normal file
16
roles/kubernetes_cert_manager/templates/certificate.yml.j2
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: k3s-seyshiro-de
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
secretName: k3s-seyshiro-de-tls
|
||||
issuerRef:
|
||||
name: {{ cert_manager_issuer_name }}
|
||||
kind: ClusterIssuer
|
||||
commonName: "*.k3s.seyshiro.de"
|
||||
dnsNames:
|
||||
- "k3s.seyshiro.de"
|
||||
- "*.k3s.seyshiro.de"
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
---
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: ClusterIssuer
|
||||
metadata:
|
||||
name: "{{ cert_manager_issuer_name }}"
|
||||
spec:
|
||||
# For staging: https://acme-staging-v02.api.letsencrypt.org/directory
|
||||
# For production: https://acme-v02.api.letsencrypt.org/directory
|
||||
acme:
|
||||
server: "{% if cert_manager_issuer_env == 'production' %}https://acme-v02.api.letsencrypt.org/directory{% else %}https://acme-staging-v02.api.letsencrypt.org/directory{% endif %}"
|
||||
email: "{{ cert_manager_email }}"
|
||||
privateKeySecretRef:
|
||||
name: "{{ cert_manager_issuer_name }}-account-key"
|
||||
|
||||
solvers:
|
||||
- dns01:
|
||||
- selector:
|
||||
dnsZones:
|
||||
- 'k3s.seyshiro.de'
|
||||
dns01:
|
||||
webhook:
|
||||
groupName: com.netcup.webhook
|
||||
solverName: netcup
|
||||
|
||||
6
roles/kubernetes_nfs/defaults/main.yml
Normal file
6
roles/kubernetes_nfs/defaults/main.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
kubernetes_nfs_helm_name: nfs-subdir-external-provisioner
|
||||
kubernetes_nfs_helm_url: https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
|
||||
kubernetes_nfs_helm_chart: nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
|
||||
|
||||
kubernetes_nfs_server_host: 192.168.20.1
|
||||
kubernetes_nfs_server_path: /nfs/
|
||||
16
roles/kubernetes_nfs/tasks/main.yml
Normal file
16
roles/kubernetes_nfs/tasks/main.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
# helm repo add
|
||||
|
||||
- name: Add a repository
|
||||
kubernetes.core.helm_repository:
|
||||
name: "{{ kubernetes_nfs_helm_name }}"
|
||||
repo_url: "{{ kubernetes_nfs_helm_url }}"
|
||||
|
||||
- name: Install NetCup Webhook
|
||||
kubernetes.core.helm:
|
||||
name: "{{ kubernetes_nfs_helm_name }}"
|
||||
chart_ref: "{{ kubernetes_nfs_helm_chart }}"
|
||||
create_namespace: true
|
||||
set_values:
|
||||
- value: "nfs.server={{ kubernetes_nfs_server_host }}"
|
||||
- value: "nfs.path={{ kubernetes_nfs_server_path }}"
|
||||
@@ -6,10 +6,12 @@ metadata:
|
||||
namespace: kube-system
|
||||
spec:
|
||||
valuesContent: |-
|
||||
dashboard:
|
||||
enabled: true
|
||||
ingressRoute: false
|
||||
ports:
|
||||
websecure:
|
||||
tls:
|
||||
enabled: true
|
||||
logs:
|
||||
access:
|
||||
enabled: true
|
||||
ingressRoute:
|
||||
dashboard:
|
||||
enabled: true
|
||||
websecure:
|
||||
tls:
|
||||
enabled: true
|
||||
|
||||
@@ -6,20 +6,22 @@ metadata:
|
||||
namespace: kube-system
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: traefik
|
||||
cert-manager.io/cluster-issuer: "{{ traefik_cert_resolver }}"
|
||||
cert-manager.io/cluster-issuer: {{ traefik_cert_resolver }}
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
spec:
|
||||
rules:
|
||||
- host: "{{ traefik_dashboard_hostname }}"
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: traefik
|
||||
port:
|
||||
name: traefik
|
||||
- host: {{ traefik_dashboard_hostname }}
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: traefik
|
||||
port:
|
||||
number: 8080
|
||||
tls:
|
||||
- hosts:
|
||||
- "{{ traefik_dashboard_hostname }}"
|
||||
secretName: traefik-dashboard-tls
|
||||
- hosts:
|
||||
- {{ traefik_dashboard_hostname }}
|
||||
secretName: k3s-seyshiro-de-tls
|
||||
|
||||
@@ -13,6 +13,8 @@ pubkey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqc9fnzfCz8fQDFzla+D8PBhvaMmFu2aF+
|
||||
public_domain: "tudattr.dev"
|
||||
internal_domain: "seyshiro.de"
|
||||
|
||||
nfs_server: 192.168.20.12
|
||||
|
||||
#
|
||||
# Packages
|
||||
#
|
||||
|
||||
@@ -13,3 +13,6 @@ argocd_hostname: "argocd.k3s.{{ domain }}"
|
||||
metallb_ip_range: "192.168.20.240-192.168.20.250"
|
||||
|
||||
traefik_password: "{{ vault_kubernetes.traefik_password }}"
|
||||
|
||||
kubernetes_nfs_server_host: "{{ nfs_server }}"
|
||||
kubernetes_nfs_server_path: /media/kubernetes
|
||||
|
||||
Reference in New Issue
Block a user