【发布时间】:2019-08-23 16:25:17
【问题描述】:
我想将我的生产 Kubernetes 集群的 letencrypt 证书转移到我正在为 GitLab CI 中的 e2e 测试启动的集群。
我的目标是避免将证书存储在 CI 中并通过环境注入,因为这样我需要手动更新并始终将其保存在那里,而不仅仅是 CI 工作的时间。我假设我无法为 e2e 集群的域创建证书,因为生产集群一直在运行。
我正在使用kubectl get -o yaml 导出入口使用的机密,并使用kubectl apply 将其导入新创建的集群。这适用于本地 microk8s。
我的生产和 e2e 集群位于 Google Cloud 中。入口没有获得 IP 外部地址,因为他们在抱怨 Issuer resource "letsencrypt-prod" not found。我需要 IP 地址来配置名称解析,以便测试指向 e2e 集群而不是生产。
我尝试添加一个
apiVersion: certmanager.k8s.io/v1alpha1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# The ACME server URL
server: https://acme-staging.api.letsencrypt.org/directory
# Email address used for ACME registration
email: admin@mereet.com
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-prod
# Enable the HTTP-01 challenge provider
http01: {}
进入创建入口的命名空间和安装cert-manager的命名空间。
缺少的颁发者指的是什么以及如何使已经从生产到本地的证书转移工作。
【问题讨论】:
-
想要使用您在 prod 中使用的相同证书进行测试听起来很粗略。为什么没有单独的测试证书?
-
@AmitKumarGupta 这是一个很好的观点。我想我想在自动创建证书之前进行高度自动化的 e2e 测试。故意做错事情很难:)如果你在一句话中放弃它,我会奖励你正确的答案。
-
好的,很高兴这让您朝着正确的方向前进 ????????。我现在就把它放在一个答案中。
-
可在cert-manager.io/docs/tutorials/backup找到用于备份/恢复(包括证书)的官方证书管理器文档
标签: kubernetes ssl-certificate gcloud e2e-testing cert-manager