save
This commit is contained in:
parent
0b6cd0c427
commit
348d567421
3 changed files with 43 additions and 61 deletions
6
.github/workflows/k8s_traefik_init_setup.yml
vendored
6
.github/workflows/k8s_traefik_init_setup.yml
vendored
|
|
@ -84,10 +84,8 @@ jobs:
|
||||||
# Install Traefik CRDs (idempotent)
|
# Install Traefik CRDs (idempotent)
|
||||||
- name: Install Traefik CRDs
|
- name: Install Traefik CRDs
|
||||||
run: |
|
run: |
|
||||||
if ! kubectl get crd ingressroutes.traefik.io >/dev/null 2>&1; then
|
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v2.11/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
|
||||||
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v2.10/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
|
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v2.11/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml
|
||||||
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v2.10/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Deploy Traefik
|
# Deploy Traefik
|
||||||
- name: Deploy Traefik
|
- name: Deploy Traefik
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,8 @@
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
namespace: default
|
|
||||||
name: traefik-ingress-controller
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
kind: Deployment
|
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
|
name: traefik
|
||||||
namespace: default
|
namespace: default
|
||||||
name: traefik-deployment
|
|
||||||
labels:
|
|
||||||
app: traefik
|
|
||||||
|
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
|
|
@ -25,35 +14,51 @@ spec:
|
||||||
app: traefik
|
app: traefik
|
||||||
spec:
|
spec:
|
||||||
serviceAccountName: traefik-ingress-controller
|
serviceAccountName: traefik-ingress-controller
|
||||||
|
volumes:
|
||||||
|
- name: acme
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: traefik-acme
|
||||||
containers:
|
containers:
|
||||||
- name: traefik
|
- name: traefik
|
||||||
image: traefik:v2.11
|
image: traefik:v2.11
|
||||||
|
ports:
|
||||||
|
- name: web
|
||||||
|
containerPort: 80
|
||||||
|
- name: websecure
|
||||||
|
containerPort: 443
|
||||||
|
- name: admin
|
||||||
|
containerPort: 8080
|
||||||
|
volumeMounts:
|
||||||
|
- name: acme
|
||||||
|
mountPath: /acme
|
||||||
args:
|
args:
|
||||||
- --api.insecure
|
- "--api.dashboard=true"
|
||||||
- --accesslog=True
|
- "--api.insecure=false"
|
||||||
- --entrypoints.web.Address=:80
|
- "--entrypoints.web.address=:80"
|
||||||
- --entrypoints.websecure.Address=:443
|
- "--entrypoints.websecure.address=:443"
|
||||||
- --providers.kubernetescrd
|
|
||||||
- --api.dashboard
|
# Redirect HTTP → HTTPS
|
||||||
- --serverstransport.insecureskipverify=true
|
|
||||||
# TLS (HTTPS)
|
|
||||||
- "--certificatesresolvers.myresolver.acme.dnschallenge=true"
|
|
||||||
- "--certificatesresolvers.myresolver.acme.httpChallenge=false"
|
|
||||||
- "--certificatesresolvers.myresolver.acme.tlsChallenge=false"
|
|
||||||
- "--certificatesresolvers.myresolver.acme.dnschallenge.provider=route53"
|
|
||||||
- "--certificatesresolvers.myresolver.acme.email=junte.kim@mealcraft.com"
|
|
||||||
- "--certificatesresolvers.myresolver.acme.storage=/certs/acme.json"
|
|
||||||
- "--certificatesresolvers.myresolver.acme.httpChallenge.entryPoint=web"
|
|
||||||
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
|
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
|
||||||
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
|
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
|
||||||
- "--providers.kubernetescrd.allowexternalnameservices=true"
|
|
||||||
- "--providers.kubernetescrd.allowcrossnamespace=false"
|
# Providers
|
||||||
- "--providers.kubernetescrd.legacyCRDDisabled=true"
|
- "--providers.kubernetescrd=true"
|
||||||
# 🔥 USE STAGING CERTIFICATES
|
|
||||||
|
# TLS + ACME
|
||||||
|
- "--certificatesresolvers.myresolver.acme.email=junte.kim@mealcraft.com"
|
||||||
|
- "--certificatesresolvers.myresolver.acme.storage=/acme/acme.json"
|
||||||
|
- "--certificatesresolvers.myresolver.acme.dnschallenge=true"
|
||||||
|
- "--certificatesresolvers.myresolver.acme.dnschallenge.provider=route53"
|
||||||
|
|
||||||
|
# STAGING (uncomment for first-time)
|
||||||
- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
|
- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
|
||||||
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
|
- name: AWS_REGION
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: aws-secrets
|
||||||
|
key: AWS_REGION
|
||||||
- name: AWS_ACCESS_KEY_ID
|
- name: AWS_ACCESS_KEY_ID
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
|
|
@ -64,24 +69,3 @@ spec:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: aws-secrets
|
name: aws-secrets
|
||||||
key: AWS_SECRET_ACCESS_KEY
|
key: AWS_SECRET_ACCESS_KEY
|
||||||
- name: AWS_REGION
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: aws-secrets
|
|
||||||
key: AWS_REGION
|
|
||||||
ports:
|
|
||||||
- name: web
|
|
||||||
containerPort: 80
|
|
||||||
- name: admin
|
|
||||||
containerPort: 8080
|
|
||||||
- name: websecure
|
|
||||||
containerPort: 443
|
|
||||||
volumeMounts:
|
|
||||||
- name: cert-volume
|
|
||||||
mountPath: /certs
|
|
||||||
imagePullSecrets:
|
|
||||||
- name: registrypullsecret
|
|
||||||
volumes:
|
|
||||||
- name: cert-volume
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: certs-pvc
|
|
||||||
|
|
@ -10,10 +10,10 @@ spec:
|
||||||
ports:
|
ports:
|
||||||
- name: web
|
- name: web
|
||||||
port: 80
|
port: 80
|
||||||
targetPort: web
|
targetPort: 80
|
||||||
- name: websecure
|
- name: websecure
|
||||||
port: 443
|
port: 443
|
||||||
targetPort: websecure
|
targetPort: 443
|
||||||
- name: admin
|
- name: admin
|
||||||
port: 8080
|
port: 8080
|
||||||
targetPort: admin
|
targetPort: 8080
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue