使用 kOps 将 kubernetes 集群部署到 AWS,我正在尝试配置外部 Hashicorp Vault 以使用 JWT/OIDC 身份验证。按照 https://www.vaultproject.io/docs/auth/jwt/oidc_providers#kubernetes 上的教程,我尝试从保险库发出:
vault write auth/jwt/config oidc_discovery_url="${ISSUER}" [email protected]
但它返回 401/Unauthorized。在此之前,我在 kubernetes 集群上做了:
kubectl create clusterrolebinding oidc-reviewer --clusterrole=system:service-account-issuer-discovery --group=system:unauthenticated
据称确保 OIDC 发现 URL 不需要身份验证。
从外部金库机器,我只是尝试:
curl --cacert ca.crt $ISSUER/.well-known/openid-configuration
我也得到了 401/Unauthorized。它正在正常到达服务器,所以这不是证书问题或任何问题,只是与 kubernetes/API 配置有关。
另外,我将 kOps 部署更改为 AlwaysAllow API 调用:
apiVersion: kops.k8s.io/v1alpha2
kind:Cluster
spec:
api:
dns: { }
authorization:
alwaysAllow: { }
但这没有任何区别。
有人知道我可能会遗漏什么吗?
否则我可以创建一个 kubectl 代理并从那里访问端点就好了。
您可能希望从 kOps 启用 OIDC 发现。这会将 OIDC 发现文件放在 S3 中,而不是从 APIServer 上经过身份验证的端点提供它们:
spec:
serviceAccountIssuerDiscovery:
discoveryStore: s3://publicly-readable-store
我也希望能够快速得到这个。看起来你有 kubectl 访问权限,所以你可以使用原始请求来获取 openid-config
kubectl get --raw=/.well-known/openid-configuration