【发布时间】:2021-01-31 21:56:49
【问题描述】:
是否可以在 AWS EKS 中启用 k8s 基本身份验证?
当 Jenkins 部署在 k8s 之外时,我需要它来使 Jenkins Kubernetes 插件工作。
【问题讨论】:
标签: kubernetes amazon-eks
是否可以在 AWS EKS 中启用 k8s 基本身份验证?
当 Jenkins 部署在 k8s 之外时,我需要它来使 Jenkins Kubernetes 插件工作。
【问题讨论】:
标签: kubernetes amazon-eks
【讨论】:
您可以使用服务帐户令牌(作为不记名令牌)。
服务帐户不记名令牌完全可以在集群外使用,并可用于为希望与 Kubernetes API 对话的长期工作创建身份。要手动创建服务帐户,只需使用kubectl create serviceaccount (NAME) 命令。这会在当前命名空间中创建一个服务帐户和一个关联的机密。
kubectl create serviceaccount jenkins
serviceaccount "jenkins" created
检查关联的秘密:
kubectl get serviceaccounts jenkins -o yaml
apiVersion: v1
kind: ServiceAccount
metadata:
# ...
secrets:
- name: jenkins-token-1yvwg
创建的密钥包含 API 服务器的公共 CA 和签名的 JSON Web 令牌 (JWT)。
kubectl get secret jenkins-token-1yvwg -o yaml
apiVersion: v1
data:
ca.crt: (APISERVER'S CA BASE64 ENCODED)
namespace: ZGVmYXVsdA==
token: (BEARER TOKEN BASE64 ENCODED)
kind: Secret
metadata:
# ...
type: kubernetes.io/service-account-token
签名的 JWT 可用作不记名令牌,以作为给定服务帐户进行身份验证。
【讨论】:
如果您需要更多控制,请安装 nginx-ingress,然后告诉它强制执行 HTTP Basic 身份验证。
https://kubernetes.github.io/ingress-nginx/examples/auth/basic/
https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/
【讨论】: