Feature/dev 243
parent
83c0473afe
commit
aecd51a58b
@ -1,4 +1,7 @@
|
||||
---
|
||||
- hosts: k8s-cluster
|
||||
roles:
|
||||
- kubernetes-ccm
|
||||
- kubernetes-base
|
||||
# - kubernetes-ccm # DEV-243 is waiting for hetzner support << Ticket#2021110303010972 RE: Anderes Problem (Server: #15275628) >>
|
||||
- kubernetes-certmanager
|
||||
- kubernetes-ingress
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
---
|
||||
- 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]
|
||||
@ -0,0 +1,12 @@
|
||||
---
|
||||
k8s_certmanager_helm__release_values:
|
||||
installCRDs: true
|
||||
webhook.timeoutSeconds: 4
|
||||
|
||||
k8s_certmanager_helm__cluster_issuers:
|
||||
prod:
|
||||
email: friedrich.goerz@netgo.de
|
||||
server: https://acme-v02.api.letsencrypt.org/directory
|
||||
staging:
|
||||
email: friedrich.goerz@netgo.de
|
||||
server: https://acme-staging-v02.api.letsencrypt.org/directory
|
||||
@ -0,0 +1,51 @@
|
||||
---
|
||||
- name: k8s-certmanager | install cert-manager via helm
|
||||
community.kubernetes.helm:
|
||||
name: cert-manager
|
||||
chart_ref: "{{ k8s_certmanager_helm__chart_ref | default('jetstack/cert-manager') }}"
|
||||
chart_version: "{{ k8s_certmanager_helm__chart_version | default('v1.5.4') }}"
|
||||
release_namespace: "{{ k8s_certmanager_helm__release_namespace | default('cert-manager') }}"
|
||||
create_namespace: yes
|
||||
release_values: "{{ k8s_certmanager_helm__release_values }}"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: k8s-certmanager | create secret for digitalocean-dns
|
||||
community.kubernetes.k8s:
|
||||
definition:
|
||||
api_version: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
namespace: "{{ k8s_certmanager_helm__release_namespace | default('cert-manager') }}"
|
||||
name: digitalocean-dns
|
||||
type: Opaque
|
||||
data:
|
||||
access-token: "{{ digitalocean_authentication_token | string | b64encode }}"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: k8s-certmanager | create ClusterIssuer_letsencrypt_prod
|
||||
community.kubernetes.k8s:
|
||||
definition:
|
||||
api_version: cert-manager.io/v1
|
||||
kind: ClusterIssuer
|
||||
metadata:
|
||||
name: "letsencrypt-{{ item.key }}"
|
||||
spec:
|
||||
acme:
|
||||
email: "{{ item.value.email }}"
|
||||
server: "{{ item.value.server }}"
|
||||
privateKeySecretRef:
|
||||
name: issuer-account-key
|
||||
solvers:
|
||||
- dns01:
|
||||
digitalocean:
|
||||
tokenSecretRef:
|
||||
name: digitalocean-dns
|
||||
key: access-token
|
||||
selector:
|
||||
dnsZones:
|
||||
- 'smardigo.digital'
|
||||
loop: "{{ k8s_certmanager_helm__cluster_issuers | dict2items }}"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
@ -0,0 +1,31 @@
|
||||
---
|
||||
k8s_ingress_helm__release_values:
|
||||
controller:
|
||||
replicaCount: 2
|
||||
config:
|
||||
use-forwarded-headers: "true"
|
||||
compute-full-forwarded-for: "true"
|
||||
use-proxy-protocol: "true"
|
||||
ssl-ciphers: "EECDH+AESGCM:EDH+AESGCM"
|
||||
ssl-protocols: "TLSv1.3"
|
||||
service:
|
||||
externalTrafficPolicy: Local
|
||||
healthCheckNodePort: &healthchecknodeport 31066
|
||||
nodePorts:
|
||||
http: &httpnodeport 30473
|
||||
https: 30474
|
||||
annotations:
|
||||
load-balancer.hetzner.cloud/location: nbg1
|
||||
load-balancer.hetzner.cloud/name: "{{ stage }}-ingress"
|
||||
load-balancer.hetzner.cloud/type: "lb11"
|
||||
load-balancer.hetzner.cloud/disable-public-network: "true"
|
||||
load-balancer.hetzner.cloud/network-zone: "dev"
|
||||
load-balancer.hetzner.cloud/use-private-ip: "true"
|
||||
load-balancer.hetzner.cloud/uses-proxyprotocol: "true"
|
||||
load-balancer.hetzner.cloud/health-check-interval: "3s"
|
||||
load-balancer.hetzner.cloud/health-check-timeout: "1s"
|
||||
load-balancer.hetzner.cloud/health-check-retries: 3
|
||||
load-balancer.hetzner.cloud/health-check-protocol: "tcp"
|
||||
load-balancer.hetzner.cloud/health-check-port: *httpnodeport
|
||||
defaultBackend:
|
||||
enabled: true
|
||||
@ -0,0 +1,65 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app: hello-node
|
||||
name: hello-node
|
||||
namespace: default
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: hello-node
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: hello-node
|
||||
spec:
|
||||
containers:
|
||||
- image: k8s.gcr.io/echoserver:1.4
|
||||
name: echoserver
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
app: hello-node
|
||||
name: hello-node
|
||||
namespace: default
|
||||
spec:
|
||||
ports:
|
||||
- port: 8080
|
||||
protocol: TCP
|
||||
targetPort: 8080
|
||||
selector:
|
||||
app: hello-node
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||
cert-manager.io/issue-temporary-certificate: "true"
|
||||
kubernetes.io/ingress.class: nginx
|
||||
nginx.ingress.kubernetes.io/preserve-trailing-slash: "true"
|
||||
nginx.ingress.kubernetes.io/rewrite-target: /
|
||||
nginx.ingress.kubernetes.io/ssl-redirect: "false"
|
||||
name: ingress-nginx-helloworld
|
||||
namespace: default
|
||||
spec:
|
||||
rules:
|
||||
- host: microservice.smardigo.digital
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: hello-node
|
||||
port:
|
||||
number: 8080
|
||||
path: /
|
||||
pathType: Prefix
|
||||
tls:
|
||||
- hosts:
|
||||
- microservice.smardigo.digital
|
||||
secretName: myingress-cert
|
||||
@ -0,0 +1,24 @@
|
||||
---
|
||||
- name: k8s-ingress | install ingress via helm
|
||||
community.kubernetes.helm:
|
||||
name: ingress
|
||||
chart_repo_url: "{{ k8s_ingress_helm__chart_repo_url | default('https://kubernetes.github.io/ingress-nginx') }}"
|
||||
chart_ref: "{{ k8s_ingress_helm__chart_ref | default('ingress-nginx') }}"
|
||||
chart_version: "{{ k8s_ingress_helm__chart_version | default('4.0.6') }}"
|
||||
release_namespace: "{{ k8s_ingress_helm__release_namespace | default('ingress') }}"
|
||||
create_namespace: yes
|
||||
release_values: "{{ k8s_ingress_helm__release_values }}"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- set_fact:
|
||||
ingress_demo_app: "{{ lookup('file','hello-node__fullobjects.yaml') }}"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
|
||||
- name: k8s-ingress | adding hello-node test app
|
||||
community.kubernetes.k8s:
|
||||
state: "{{ k8s_ingress_helm__enable_demoapp | default('absent') }}"
|
||||
definition: "{{ ingress_demo_app }}"
|
||||
when:
|
||||
- inventory_hostname == groups['kube-master'][0]
|
||||
Loading…
Reference in New Issue