首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Certmanager跨项目DNS01挑战赛失败

问Certmanager跨项目DNS01挑战赛失败
EN

Stack Overflow用户
提问于 2020-12-08 18:16:22
回答 1查看 382关注 0票数 1

已经设置了项目Prod和Project Staging,并且每个都运行一个GKE集群。安装证书管理器是为了按照官方文档中的说明自动执行证书颁发过程。

Project Prod具有映射到prod和临时群集istio网关IP地址的DNS。

在Project Prod中集群的DNS01质询中,管理身份验证,并成功颁发证书。

但是在Project Staging中运行的集群,由于没有足够的权限通过Project Prod中的云DNS设置进行认证和验证,导致无法获得证书。

在Project Prod中,有一个具有dns/admin角色的服务帐户,该帐户通过GKE secret设置,并在集群颁发者中进行访问,如下所示

代码语言:javascript
复制
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod-clusterissuer
  namespace: cert-manager
spec:
  acme:
    # The ACME server URL
    server: https://acme-v02.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email: name@name.com
    # Name of a secret used to store the ACME account private key
    privateKeySecretRef:
      name: letsencrypt-prod-clusterissuer
    solvers:
    # ACME DNS-01 provider configurations
    - dns01:
        # Google Cloud DNS
        cloudDNS:
          # Secret from the google service account key
          serviceAccountSecretRef:
            name: cloud-dns-key
            key: key.json
          # The project in which to update the DNS zone
          project: iprocure-server-prod

在Project Prod GKE集群中成功颁发证书。

项目登台GKE集群,集群颁发者拥有其dns/admin角色的服务帐户,就像在项目生产中一样,但无法在项目生产DNS中执行dns01 challenge。

当使用kubectl describe challenge时,会看到以下错误

代码语言:javascript
复制
Type     Reason        Age                     From          Message
----     ------        ----                    ----          -------
Warning  PresentError  2m56s (x19 over 7h14m)  cert-manager  Error presenting challenge: GoogleCloud API call failed: googleapi: Error 403: Forbidden, forbidden

要在项目产品Clous DNS中执行dns01 challenge,应对项目过渡服务帐户执行哪些操作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-03 09:01:37

我也遇到过这个问题。我必须将我的Prod项目中具有DNS管理员权限的服务帐户复制到Staging Project,以便Staging中的GKE集群可以有足够的权限通过Prod项目中的Cloud DNS设置进行身份验证和验证

您必须在Prod项目中创建一个具有DNS ADMIN权限的SA,并掌握该SA的电子邮件,然后转到项目B,通过将其添加为具有DNS ADMIN权限的成员,使该SA电子邮件成为成员。

代码语言:javascript
复制
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: {{ .Values.app.certificate.issuer.name }}
  namespace: {{ .Values.app.namespace }}
  labels:
    app.kubernetes.io/managed-by: "Helm"
spec:
  acme:
    email: {{ .Values.app.certificate.acme.email }}
    privateKeySecretRef:
      name: {{ .Values.app.certificate.issuer.name }}
    server: {{ .Values.app.certificate.acme.server }}
    solvers:
      - dns01:
          cloudDNS:
            project: {{ .Values.app.project_id }} ## Make sure this is the project of where DNS is e.g Prod Project
            serviceAccountSecretRef:
              name: {{ .Values.secrets.name }}
              # Secret from the google service account key
              key: key.json
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65196988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档