将 cert-manager 证书从一个集群转移到另一个集群以进行端到端测试

Transfer cert-manager certificate from one cluster to another for e2e tests

我想将我的生产 Kubernetes 集群的 letsencrypt 证书传输到我正在为 GitLab 中的端到端测试启动的集群 CI。

我的目标是避免将证书存储在 CI 中并通过环境注入它,因为那时我需要手动更新并始终将其保存在那里,而不仅仅是 [=30= 的时间] 工作。我假设我无法为 e2e 集群的域创建证书,因为生产集群保持 运行.

我正在使用 kubectl get -o yaml 导出入口使用的秘密,并使用 kubectl apply 将其导入新创建的集群。这适用于 microk8s 本地。

我的生产和 e2e 集群在 Google 云中。入口没有获得 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 的命名空间。

缺少的颁发者指的是什么,我怎样才能使已经从生产到本地有效的证书转移工作。

为您的生产环境和测试环境使用相同的证书是一种糟糕的安全做法。您应该为测试环境生成一个单独的证书,并希望自动生成它以实现高度自动化的端到端测试。