【问题标题】:traefik, bare-metal kubernetes : secret doesnt existtraefik,裸机 kubernetes:秘密不存在
【发布时间】:2018-11-06 22:34:29
【问题描述】:

我在裸机 (v1.10.2) 和最新的 traefik (v1.6.2) 上使用 kubernetes 作为入口。当我想启用 traefik 路由到 httpS 服务时,我看到以下问题。 Error configuring TLS for ingress default/cheese: secret default/traefik-cert does not exist

秘密存在!为什么它报告它没有?

根据评论:无法从 traefik 服务帐户访问机密。但我不明白为什么。

详情如下:

kubectl get secret dex-tls -oyaml --as gem-lb-traefik
Error from server (Forbidden): secrets "dex-tls" is forbidden: User "gem-lb-traefik" cannot get secrets in the namespace "default"
$ kubectl describe clusterrolebinding gem-lb-traefik
Name:         gem-lb-traefik
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  gem-lb-traefik
Subjects:
  Kind            Name            Namespace
  ----            ----            ---------
  ServiceAccount  gem-lb-traefik  default
$ kubectl describe clusterrole gem-lb-traefik
Name:         gem-lb-traefik
Labels:       <none>
Annotations:  <none>
PolicyRule:
  Resources             Non-Resource URLs  Resource Names  Verbs
  ---------             -----------------  --------------  -----
  endpoints             []                 []              [get list watch]
  pods                  []                 []              [get list watch]
  secrets               []                 []              [get list watch]
  services              []                 []              [get list watch]
  ingresses.extensions  []                 []              [get list watch]

我仍然不明白为什么我从服务帐户收到秘密无法访问的错误

【问题讨论】:

  • 也许 Traefik 没有访问该密钥的权限,您是如何部署 Traefik 的?您的 Kubernetes 集群是否使用 RBAC?
  • kubectl get secret dex-tls --as gem-lb-traefik Error from server (Forbidden): secrets "dex-tls" is forbidden: User "gem-lb-traefik" cannot get secrets in the namespace "default" 谢谢。我看到它不能得到秘密。让我看看!
  • 这里是使用 RBAC 部署的官方文档:docs.traefik.io/user-guide/kubernetes/…

标签: kubernetes traefik


【解决方案1】:

首先,在这种情况下,您无法使用--as gem-lb-traefik 密钥检查对机密的访问,因为它会尝试以 user gem-lb-traefik 的身份运行命令,但您没有这样的用户,您只有 ServiceAccountClusterRole gem-lb-traefik。此外,对任何不存在的用户使用 --as &lt;user&gt; 键会产生与您类似的错误:

Error from server (Forbidden): secrets "<secretname>" is forbidden: User "<user>" cannot get secrets in the namespace "<namespace>"

因此,正如@Ignacio Millán 所提到的,您需要检查 Traefik 的设置并根据官方documentation 进行修复。可能你错过了 Traefik DaemonSet 描述中的 ServiceAccount。此外,您需要检查 Traefik DaemonSet 是否与您使用 ClusterRoleBinding 的 ServiceAccount 位于同一命名空间中。

【讨论】:

  • 感谢您的信息。我在 slack 上与一位 traefik 开发人员讨论过。创建了一个问题github.com/containous/traefik/issues/3402。顺便说一句,我确实检查了挂载 traefik pod 的服务帐户是否有足够的访问权限来查看机密。我不知道是什么问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 2018-09-05
  • 2019-03-02
相关资源
最近更新 更多