-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathingress.yaml
73 lines (65 loc) · 3.2 KB
/
ingress.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# è necessario un ingress controller, guida: https://docs.microsoft.com/it-it/azure/aks/ingress-basic?tabs=azure-cli :
# helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
# helm repo update
# helm install ingress-nginx ingress-nginx/ingress-nginx {--create-namespace} --namespace ingress-basic
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
#cert-manager.io/cluster-issuer: "letsencrypt-prod"
#kubernetes.io/ingress.class: "nginx"
#nginx.ingress.kubernetes.io/cors-allow-origin: "*"
#nignx.ingress.kubernetes.io/force-ssl-redirect: "true"
#nginx.ingress.kubernetes.io/enable-modsecurity: "true"
#nginx.ingress.kubernetes.io/enable-owasp-core-rules: "true"
#nginx.ingress.kubernetes.io/modsecurity-snippet: |
# SecRuleEngine On
spec:
defaultBackend:
service:
name: nginxservice
port:
number: 80
ingressClassName: nginx
#tls:
#- hosts:
# - nginxtest.local
# secretName: echo-tls
rules:
- host: nginxtest.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginxservice
port:
number: 80
# CERTIFICATI AUTOFIRMATI (Il browser darà errore perchè non sarà in grado di verificare l'autorità):
# per i certificati: $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ${KEY_FILE} -out ${CERT_FILE} -subj "/CN=${HOST}/O=${HOST}"
# nel nostro caso:
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
# -out aks-ingress-tls.crt \
# -keyout aks-ingress-tls.key \
# -subj "/CN=antoniomaritato.it/O=aks-ingress-tls"
# kubectl create secret tls ${CERT_NAME} --key ${KEY_FILE} --cert ${CERT_FILE}
# kubectl create secret tls aks-ingress-tls \
# --key aks-ingress-tls.key \
# --cert aks-ingress-tls.crt
# CERTIFICATI VERIFICATI DA LET'S ENCRYPT:
# con helm:
# helm repo add jetstack https://charts.jetstack.io
# helm repo update
# helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set installCRDs=true
# se per qualche ragione non funziona per timeout error o altro:
# kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.8.0/cert-manager.yaml
# potrebbe essere necessario aggionrare la versione
# fare apply di staging e prod issuer (file yaml) (fallirà se non installiamo prima il cert manager, non trovando corrispondenza per cos'è un ClusterIssuer)
# fare apply di questo yaml (con letsencrypt-staging) e genererà un certificato
# verifichiamo che sia tutto a posto: kubectl describe ingress, kubectl describe certificate
# procediamo ora a cambiare con letsencrypt-prod e rifacciamo apply di questo file
# verifichiamo sia tutto a posto: kubectl describe certificate echo-tls (potrebbe volerci qualche decina di secondi per farci confermare che il certificato è stato emesso)
# guida (da punto 4, saltare il 5): https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes
# immagine riassuntiva: https://kenanbek.github.io/kubernetes-https-nginx-ingress-cert-manager-digitalocean