使用kOps将kubernetes集群部署到AWS,我尝试配置外部Hashicorp Vault以使用JWT/OIDC身份验证。按照https://www.vaultproject.io/docs/auth/jwt/oidc_providers#kubernetes上的教程,我尝试从Vault发出:
vault write auth/jwt/config oidc_discovery_url="${ISSUER}" oidc_discovery_ca_pem=@ca.crt
但是它返回了一个401/未经授权。在此之前,在kubernetes集群上,我做了:
kubectl create clusterrolebinding oidc-reviewer --clusterrole=system:service-account-issuer-discovery --group=system:unauthenticated
以确保OIDC发现URL不需要身份验证。
从外部Vault计算机,我只是尝试:
curl --cacert ca.crt $ISSUER/.well-known/openid-configuration
我还收到了401/未经授权。它可以正常到达服务器,所以这不是证书问题或其他问题,只是与kubernetes/API配置有关。
此外,我还将kOps部署更改为AlwaysAllow API调用:
apiVersion: kops.k8s.io/v1alpha2
kind:Cluster
spec:
api:
dns: { }
authorization:
alwaysAllow: { }
但这并没有改变什么。
有人知道我错过了什么吗?
我也可以创建一个kubectl代理并从那里访问端点。
2条答案
按热度按时间vngu2lb81#
您可能希望从kOps启用OIDC发现。这会将OIDC发现文件放在S3中,而不是从APIServer上的已验证端点提供这些文件:
wmomyfyw2#
我也希望能够快速地得到这个。看起来你有kubectl访问权限,所以你可以使用一个原始请求来得到openid-config