我们需要在托管于我们的 EKS 集群中的 vault 中启用 JWT 身份验证,以准备使用 K8s 1.24 OIDC 并使用 Vault 测试令牌更新。我正在关注几个地方的文档:
https://banzaicloud.com/blog/kubernetes-oidc/
https://www.vaultproject.io/docs/auth/jwt/oidc-providers/kubernetes
https://www.vaultproject.io/docs/auth/kubernetes#discovering-the-service-account-issuer
https://learn.hashicorp.com/tutorials/vault/agent-kubernetes?in=vault/auth-methods
配置看起来相当简单。我困惑的是,当需要将 JWT 配置写入 vault 时,配置失败,如下所示:
vault write -tls-skip-verify auth/jwt/config oidc_discovery_url=https://oidc.eks.us-west-2.amazonaws.com/id/xxxxxxxxxxxxxxxxxxxxxx oidc_discovery_ca_pem=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt bound_issuer=https://oidc.eks.us-west-2.amazonaws.com/id/xxxxxxxxxxxxxxxxxxxxxx
...
...
...
* error checking oidc discovery URL: error creating provider with given values: Get "https://vault.vault:8200/.well-known/openid-configuration": x509: certificate signed by unknown authority
获取 CA:
at 22:37:06 ❯ \kubectl config view --raw --minify --flatten --output 'jsonpath={.clusters[].cluster.certificate-authority-data}' | base64 --decode | openssl x509 -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 0 (0x0)
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN = kubernetes
Validity
Not Before: Oct 15 05:07:03 2022 GMT
Not After : Oct 12 05:07:03 2032 GMT
Subject: CN = kubernetes
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
此处使用的 CA 是集群各处提供的 CA。它位于 kubeconfig 中,位于集群的颁发者中,并与 pod 中的服务帐户数据一起安装,就像我在上面命令中使用的一样。据我所知没有其他 CA。此外,使用-tls-skip-verify
不受尊重,这让我有点困惑。
如能就此处发生的情况提供任何指点,我将不胜感激。