如何更新本地 Kubernetes API 服务器以使用 Dex 启用 OIDC?

How do I update an on-premise Kubernetes API server to enable OIDC with Dex?

我们的数据中心内部署了本地 kubernetes。我刚刚为 Dex 部署了 pods,配置为连接我们的 LDAP 服务器以允许通过 Dex 进行基于 LDAP 的身份验证,运行 测试并能够检索 OpenID 连接令牌以进行身份​​验证。

现在我想更改我们的本地 k8s API 服务器启动参数以启用 OIDC 并将其指向 Dex 容器。

如何在不让我们的 k8s 集群停机的情况下为 API 服务器启动命令启用 OIDC?正在阅读此文档 https://kubernetes.io/docs/reference/access-authn-authz/authentication/ 但该网站只是说“启用所需的标志”而没有步骤

谢谢!

OIDC 标志用于 Kubernetes API 服务器。您没有提到如何在 prem 上安装 Kubernetes。理想情况下,您应该有多个主节点,前面有一个 LoadBalancer。

因此,您将禁用从负载均衡器到一个主节点的流量并登录到该主节点并编辑 /etc/kubernetes/manifests 中 api 服务器的清单并添加 OIDC 标志。更改清单后 api 服务器 pod 将自动重新启动。

您对所有主节点重复相同的过程,因为在任何给定时间点您至少有一个可用的主节点,所以不应该有任何停机时间。

几个月前,我在 kubeadmn 安装的集群上安装了 Dex + Active Directory Integration。

Let's assume that Dex is now running and it can be accessible thru https://dex.example.com .

在这种情况下,..

在 API 服务器级别启用 ODIC 有 3 个步骤:

必须在每个 Kubernetes 主节点上完成这些步骤。

1- SSH 到您的主节点。

$ ssh root@master-ip

2- 编辑 Kubernetes API 配置。

添加 OIDC 参数并相应地修改发行者 URL。

$ sudo vim /etc/kubernetes/manifests/kube-apiserver.yaml
...
    command:
    - /hyperkube
    - apiserver
    - --advertise-address=x.x.x.x
... 

    - --oidc-issuer-url=https://dex.example.com # <--  Please focus here
    - --oidc-client-id=oidc-auth-client # <--  Please focus here
    - --oidc-username-claim=email # <--  Please focus here
    - --oidc-groups-claim=groups # <--  Please focus here
...

3- Kubernetes API 会自行重启。

我还建议查看像这样的完整指南 tuto