将证书管理器证书从一个群集转移到另一个群集以进行e2e测试

时间:2019-08-23 16:25:17

标签: kubernetes ssl-certificate gcloud e2e-testing cert-manager

我想将我的生产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的名称空间。

缺少的颁发者是什么?如何使已经从生产到本地的证书转移工作正常进行。

1 个答案:

答案 0 :(得分:1)

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