按照https://docs.traefik.io/configuration/acme/
我已经这样创建了一个秘密:
kubectl --namespace=gitlab-managed-apps create secret generic traefik-credentials \
--from-literal=GCE_PROJECT=<id> \
--from-file=GCE_SERVICE_ACCOUNT_FILE=key.json \
并通过使用--set acme.dnsProvider.$name=traefik-credentials
但是我仍然遇到以下错误:
{"level":"error","msg":"Unable to obtain ACME certificate for domains \"traefik.my.domain.com\" detected thanks to rule \"Host:traefik.my.domain.com\" : cannot get ACME client googlecloud: Service Account file missing","time":"2019-01-14T21:44:17Z"}
答案 0 :(得分:0)
我不知道为什么/如果traefik使用GCE_SERVICE_ACCOUNT_FILE
变量。为此,所有Google工具和第三方集成都使用GOOGLE_APPLICATION_CREDENTIALS
环境变量(所有Google API客户端会自动选择此变量)。因此,看起来traefik在这里称其为别的东西可能做得很差。
我建议您查看traefik吊舱的Pod规格(字段volumes
和volumeMounts
,以查看Secret是否已正确安装到吊舱)。
如果您遵循本教程https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform,则可以学习如何将IAM服务帐户安装到任何Pod。因此,也许您可以将其与Helm图表本身结合起来,弄清楚进行这项工作所需要做的事情。