我正在尝试在Traefik实例上使用通配符域设置LetsEncrypt。 Traefik已从头盔图表stable/traefik
安装。
我们正在使用Google Cloud for DNS,所以我想使用gcloud
作为Traefik acme提供程序。
如上所述,它是一个通配符。我正在尝试让Traefik使用*.domain.com
作为SAN管理domain.com
的LetsEncrypt。
我目前正在使用K8s声明来存储acme.json
文件,并且该文件已填充有私钥,但没有证书。
Traefik Helm值
# LetsEncrypt
acme:
acmeLogging: true
challengeType: 'dns-01'
enabled: true
domains:
enabled: true
main: '*.<domain>'
sans:
- <domain>
defaultEntryPoints:
- http
- https
dnsProvider:
name: 'gcloud'
gcloud:
GCE_PROJECT: <redacted>
GCE_SERVICE_ACCOUNT_FILE: /secrets/gcloud-credentials.json
email: <redacted>
entryPoint: 'https'
entryPoints:
http:
address: ':80'
https:
address: ':443'
persistence:
enabled: true
existingClaim: 'certificate-store'
provider: 'gcloud'
staging: true
# SSL configuration
ssl:
enabled: true
enforced: true
acme.json
{
"Account": {
"Email": "<redacted>",
"Registration": {
"body": {
"status": "valid",
"contact": [
"mailto:<redacted>"
]
},
"uri": "https://acme-staging-v02.api.letsencrypt.org/acme/acct/9091953"
},
"PrivateKey": "<redacted>",
"KeyType": "4096"
},
"Certificates": null,
"HTTPChallenges": {},
"TLSChallenges": {}
}
对于来自Traefik的所有响应,都应使用该域的通配符LetsEncrypt证书,该证书应自动续订。
要让Traefik开始生成证书,我还需要执行哪些其他步骤,并且如何配置Traefik在默认情况下使用此证书? (而不是内置的)
谢谢
答案 0 :(得分:0)
您是否100%确定“域”节看起来像这样?在stable/traefik图表中,我稍微看到了另一种域格式:
domains:
enabled: false
# List of sets of main and (optional) SANs to generate for
# for wildcard certificates see https://docs.traefik.io/configuration/acme/#wildcard-domains
domainsList:
# - main: "*.example.com"
# - sans:
# - "example.com"
# - main: "*.example2.com"
# - sans:
# - "test1.example2.com"
# - "test2.example2.com"
但是可能只是新图表版本的问题,我不知道...如果您有旧图表版本,则可以尝试升级...
答案 1 :(得分:0)
我想出了这个。 我在Helm图表覆盖YAML中设置了以下内容(对上述内容进行了补充或替换)。
acme:
caServer: 'https://acme-v02.api.letsencrypt.org/directory'
domains:
enabled: true
domainsList:
- main: '*.<domain>'
- sans:
- <domain>
我也放弃了persistence.existingClaim
,让Traefik提出自己的主张,但是如果您已经有一个保留此定义的人,那么不会给您带来任何问题!
所有Traefik入口现在都可以提供正确的LetsEncrypt证书,而无需任何其他配置。
感谢瓦西里·安加波夫(Vasily Angapov)的回应-在acme.domains.domainsList
部分,您是正确的。 :-)