AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1157120
Accepted
Lasse Michael Mølgaard
Lasse Michael Mølgaard
Asked: 2024-03-30 04:17:52 +0800 CST2024-03-30 04:17:52 +0800 CST 2024-03-30 04:17:52 +0800 CST

Kubernetes:无法从默认命名空间访问 cert-manager 命名空间中的资源

  • 772

我正在尝试了解 Kubernetes 的工作原理,因此我使用快速入门指南K3S创建了自己的集群。

然后我使用Helm 指南安装了 Cert Manager 。

我想为我的集群使用 Let's Encrypt 证书,并dns01通过我的 DNS 提供商 Simply.com 使用 webhook 来验证它们。

这可以通过使用此处找到的 Webhook 来完成:

https://github.com/RunnerM/simply-dns-webhook

目前我正在测试是否可以使用他们的临时服务器从 Let's Encrypt 获得证书。

letsencrypt-staging.yaml我制作了包含以下内容的Yaml 文件ClusterIssuer:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
  namespace: default
spec:
  acme:
    email: [email protected]
    privateKeySecretRef:
      name: letsencrypt-staging-key
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    solvers:
    - dns01:
        webhook:
          groupName: com.github.runnerm.cert-manager-simply-webhook
          solverName: simply-dns-solver
          config:
            secretName: simply-credentials # notice the name
      selector:
        dnsZones:
        - 'cluster.example.com'
        - '*.cluster.example.com'

我的配置文件基本上是从 RunnerM GitHub 页面上找到的示例中逐字复制粘贴的。

为了颁发证书,我创建了一个名为certificate-test.yaml以下内​​容的 Yaml 文件:

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: test-certificate
spec:
  dnsNames:
  - test.cluster.example.com
  issuerRef:
    name: letsencrypt-staging
    kind: ClusterIssuer

  secretName: test-certificate-tls

然后我应该能够通过使用以下命令获得颁发的证书:

kubectl apply -f letsencrypt-staging.yaml
kubectl apply -f certificate-test.yaml

但是我没有收到颁发的证书。

运行时kubectl describe challenge test-certificate-1-1965387138-1295925723我收到以下错误消息:

...
Status:
  Presented:   false
  Processing:  true
  Reason:      secrets "simply-credentials" is forbidden: User "system:serviceaccount:default:my-simply-dns-webhook" cannot get resource "secrets" in API group "" in the namespace "cert-manager"
  State:       pending
E
...

我发现 Simply DNS Webhookmy-simply-dns-webhook正在命名空间中运行default,并且 Simply DNS 凭据存储在cert-manager命名空间中。

那么如何允许 Simply DNS webhook 访问 cert-manager 命名空间中的资源呢?

附加信息

运行该命令kubectl get clusterrolebindings会提供以下信息:

my-simply-dns-webhook:secret-access                    ClusterRole/my-simply-dns-webhook:secret-access                    76s
simply-dns-webhook:challenge-management                ClusterRole/simply-dns-webhook:challenge-management                76s
my-simply-dns-webhook:domain-solver                    ClusterRole/my-simply-dns-webhook:domain-solver                    76s
my-simply-dns-webhook:flow-control                     ClusterRole/my-simply-dns-webhook:flow-control                     76s
my-simply-dns-webhook:auth-delegator                   ClusterRole/system:auth-delegator                                  76s

输出kubectl get clusterrole my-simply-dns-webhook:secret-access给出以下结果:

Name:         my-simply-dns-webhook:secret-access
Labels:       app=simply-dns-webhook
              app.kubernetes.io/managed-by=Helm
              chart=simply-dns-webhook-1.5.4
              heritage=Helm
              release=my-simply-dns-webhook
Annotations:  meta.helm.sh/release-name: my-simply-dns-webhook
              meta.helm.sh/release-namespace: default
PolicyRule:
  Resources  Non-Resource URLs  Resource Names  Verbs
  ---------  -----------------  --------------  -----
  secrets.*  []                 []              [get]

该命令kubectl describe clusterrolebindings my-simply-dns-webhook:secret-access给出输出:

Name:         my-simply-dns-webhook:secret-access
Labels:       app=simply-dns-webhook
              app.kubernetes.io/managed-by=Helm
              chart=simply-dns-webhook-1.5.4
              heritage=Helm
              release=my-simply-dns-webhook
Annotations:  meta.helm.sh/release-name: my-simply-dns-webhook
              meta.helm.sh/release-namespace: default
Role:
  Kind:  ClusterRole
  Name:  my-simply-dns-webhook:secret-access
Subjects:
  Kind            Name                   Namespace
  ----            ----                   ---------
  ServiceAccount  my-simply-dns-webhook  cert-manager

那么我错过了什么?

kubernetes
  • 1 1 个回答
  • 58 Views

1 个回答

  • Voted
  1. Best Answer
    larsks
    2024-03-30T10:14:31+08:002024-03-30T10:14:31+08:00

    我认为 simple-dns-webhook helm 图表有问题。

    simply-dns-webhook它创建一个在default命名空间(或传递给 的helm install参数的任何命名空间)中命名的 ServiceAccount -n,但simply-dns-webhook:secret-accessClusterRoleBinding 指定:

    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: simply-dns-webhook:secret-access
    subjects:
    - kind: ServiceAccount
      name: simply-dns-webhook
      namespace: cert-manager
    

    那永远不会匹配。

    如果将所有内容都部署到cert-manager命名空间中,它可能会起作用:

    helm install -n cert-manager simply-dns-webhook simply-dns-webhook/simply-dns-webhook
    
    • 0

相关问题

  • Nvidia Config 后 Containerd 无法启动

  • 在使用 kubeadm 引导集群之前,如何修改 CoreDNS 配置映射?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve