我们计划在 Kubernetes 中实现 OpenID 身份验证,我正在寻找一种将 oidc-issue-url 添加到 Kubernetes 集群的方法,如下所述Kubernetes OpenID
但是我无法找到集群配置。如何使用 kubectl 添加或编辑 Kubernetes 集群 API 服务器的值?
答案1
你应该使用kube-api服务器。
Kubernetes API 服务器验证并配置 API 对象(包括 Pod、服务、复制控制器等)的数据。API 服务器为 REST 操作提供服务,并为集群的共享状态提供前端,所有其他组件都通过该前端进行交互。
kube-apiserver [flags]
如果使用 科普斯,运行 kops edit cluster
并添加:
spec:
kubeAPIServer:
oidcIssuerURL: ISSUER_URL
oidcClientID: YOUR_CLIENT_ID
如果你正在使用 kube-aws,添加以下内容至 cluster.yaml
:
oidc:
enabled: true
issuerUrl: ISSUER_URL
clientId: YOUR_CLIENT_ID
您可以阅读更多关于设置的信息这里,你也可以考虑使用 库贝登录
编辑:
kube-apiserver
正在作为 Docker 容器在您的主节点上运行。因此,二进制文件位于容器内,而不是主机系统上。它由主节点kubelet
从位于的文件启动/etc/kubernetes/manifests
。kubelet
正在监视此目录,并将启动此处定义为“静态 Pod”的任何 Pod。
要配置kube-apiserver
命令行参数,您需要/etc/kubernetes/manifests/kube-apiserver.yaml
在主服务器上进行修改。
答案2
接受的答案是正确的,修改清单文件/etc/kubernetes/manifests/kube-apiserver.yaml
并添加 oidc 标志,如https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/将为您的 apiserver 配置 oidc。
当我在研究配置 oidc 时遇到的问题时遇到此线程时,我想添加两个对我有帮助的内容:
- 如果要配置带冒号的组或用户前缀,语法需要像这样,以避免在解析清单时出现语法错误
- "--oidc-groups-prefix=oidc:"
- "--oidc-username-prefix=oidc:"
- 设置 --oidc-ca-file 时,请确保指向的 ca 文件首先存在。如果不存在,apiserver 将不会启动,日志也不会很有用