首页 > 解决方案 > 将 cert-manager 证书从一个集群转移到另一个集群以进行 e2e 测试

问题描述

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

缺少的颁发者指的是什么以及如何使已经从生产到本地的证书转移工作。

标签: kubernetesssl-certificategcloude2e-testingcert-manager

解决方案


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


推荐阅读