Unë kam një grup K8s që funksionon mirë, me një domen që ka një certifikatë SSL të personalizuar, dhe të gjithë nëndomainët e tjerë përdorin një shkronjë të egër Let's encrypt.
Tani, dua të shtoj një domen tjetër që do të përdorë SSL Cert të personalizuar, por duket se nuk funksionon.
Së pari, unë krijoj një configMap me skedarët .crt
dhe .key
kubectl create configmap traefik-sge-certificate --from-file=certificate/sge-prod.crt --from-file=certificate/sge-prod.key --dry-run -o yaml | kubectl apply -f -
Pastaj shtoj certifikatat e mia në traefik.toml
traefik.toml:
----
# traefik.toml
defaultEntryPoints = ["http","https"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[[entryPoints.https.tls.certificates]]
certFile = "/etc/ene-certificate/api.crt"
keyFile = "/etc/ene-certificate/api.key"
[[entryPoints.https.tls.certificates]]
certFile = "/etc/sge-certificate/sge-prod.crt"
keyFile = "/etc/sge-certificate/sge-prod.key"
[acme] # Automatically add Let's Encrypt Certificate.
storage= "/etc/certificate/acme.json"
email = "[email protected]"
entryPoint = "https"
onHostRule = true
caServer = "https://acme-v02.api.letsencrypt.org/directory"
[acme.dnsChallenge]
provider = "route53"
delayBeforeCheck = 0
[[acme.domains]]
main = "*.company.fr"
Dhe tani vendosja:
kind: Deployment
apiVersion: apps/v1
metadata:
name: traefik-deployment
labels:
app: traefik
spec:
replicas: 1
selector:
matchLabels:
app: traefik
template:
metadata:
labels:
app: traefik
spec:
serviceAccountName: traefik-ingress-controller
terminationGracePeriodSeconds: 60
volumes:
- name: traefik-certificate
persistentVolumeClaim:
claimName: traefik-certificate
- name: config
configMap:
name: traefik-config
- name: traefik-ene-certificate
configMap:
name: traefik-ene-certificate
- name: traefik-sge-certificate
configMap:
name: traefik-sge-certificate
containers:
- name: traefik
image: "traefik:1.7"
envFrom:
- secretRef:
name: traefik-env
volumeMounts:
- mountPath: "/etc/traefik/config"
name: config
- mountPath: "/etc/certificate"
name: traefik-certificate
- mountPath: "/etc/ene-certificate/api.crt"
name: traefik-ene-certificate
subPath: api.crt
- mountPath: "/etc/ene-certificate/api.key"
name: traefik-ene-certificate
subPath: api.key
- mountPath: "/etc/sge-certificate/sge-prod.crt"
name: traefik-sge-certificate
subPath: sge-prod.crt
- mountPath: "/etc/sge-certificate/sge-prod.key"
name: traefik-sge-certificate
subPath: sge-prod.key
args:
- --configfile=/etc/traefik/config/traefik.toml
- --api
- --kubernetes
Por kur e bëj këtë, ka 2 probleme:
- Aplikacioni im i ri: https://sge.company.fr po përdor çertifikata të karakterit wild, në vend të atyre të personalizuara ( qëllimi i këtij operacioni)
- Aplikacioni që përdorte certifikatat e personalizuara api.crt (më parë punonte mirë me certifikatën e personalizuar SSL ) nuk po përdor çertifikata me shkronja të egra, ky është një regresion.
Kontrollova regjistrat e traefikut dhe nuk duket se ka ndonjë problem.
Ajo që gjithashtu nuk e kuptoj, është se ku është i lidhur Certifikata SSL e personalizuar me domenin.
A mund të më thotë dikush pse po ndodh kjo dhe si duhet ta rregulloj?
PD: E kuptoj që duhet të përdor sekretet në vend të configMaps, por gjëja e parë e para!