Kubernetes身份认证的操作方法是什么

本篇内容介绍了“Kubernetes身份认证的操作方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

成都创新互联"三网合一"的企业建站思路。企业可建设拥有电脑版、微信版、手机版的企业网站。实现跨屏营销,产品发布一步更新,电脑网络+移动网络一网打尽,满足企业的营销需求!成都创新互联具备承接各种类型的成都网站设计、成都网站建设项目的能力。经过十载的努力的开拓,为不同行业的企事业单位提供了优质的服务,并获得了客户的一致好评。

在生产环境中,Kubernetes管理员使用命名空间来隔离资源和部署。命名空间作为一个逻辑边界来强制基本访问控制。

假设现在我们有个新的管理员叫Bob,要加入开发团队为研发组管理Kubernetes部署。我们现在需要给他提供足够的访问权限以便于他管理工程命名空间。假设你是集群管理员并且拥有管理全局资源和对象的权限,你需要登上Bob的账户并帮助他获取访问Kubernetes集群所需的凭据。

我在操作中使用的是Minikube,但本文示例的场景适用于任何使用其他方式配置的Kubernetes集群(只要你是集群管理员身份就行)。

首先,创建一个名为cred的目录,并运行以下命令为Bob生成一个私钥。

mkdir cred
cd cred
openssl genrsa -out bob.key 2048
Generating RSA private key, 2048 bit long modulus
..................................................................................................................+++
................................................+++
e is 65537 (0x10001)

我们还需要一个可以从私钥生成的证书签名请求。

openssl req -new -key bob.key -out bob.csr -subj "/CN=bob/O=eng"\n

将密钥移动到父级文件夹并在Base64中对其进行编码。

cp bob.key ..
cd ..
cat cred/bob.csr | base64 | tr -d '\n'
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1lqQ0NBVW9DQVFBd0hURU1NQW9HQTFVRUF3d0RZbTlpTVEwd0N3WURWUVFLREFSbGJtZHVNSUlCSWpBTgpCZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEzSU9oUTArMFJUakpqZjBKTkd2Rmo0YWFlN1hYCkkrZWkzTzZWTEpqMHNKNDBvengyUTVndXBmeFc5b0lEYTJETnhVZjZkNHVMOUJ3V2lhdFdQdnBDNm80MHJQc2EKTjBUdEhEekFYeWppc0E5VXVRMVNKMWg5Mkg0TU9XWEpWNWJWaTlXYjBKU3hLbXVrSUVtaERJcW9TcEh7MU5xaApQMWNXOFFpNXpoVVBmWlpnOUhSaWVUQ2xEMmR3bWRtS1JjbU9uenNGVWhJWmZWanVZNzZJUm9KbksyaHNzVjZoCmMyY1JNTVNEdFA0ZDArYkxOY1BKdExpS3JjQkdwUGxLUEdrSHovM2NNbVhpVi8wY2xqUlppMzJCb3B4NlI1NUIKc0Z6cXZwcWgzNWxLNUVOUGxPZy9sdURFdllGeUtzOUY2aERBRFhDNzQxU0ZCQTI0TERzcTFiWWtVUUlEQVFBQgpvQUF3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUxTejgxL2N3bjQxbVRrUDhabWhhUUx3MkpIRkN4ZUlaOFdpCkZOV0U1cnRVd3hrSjJGWVJKRlFUL1hJN0FoL0pXTkhqeHlhOUNyN3c0OThmanN3bDF2ZzQ1QUgrR29DeVEwTWkKOU1MMHl0WmZyaG5jYmtpRG9oSUpuaWhJTjlCUGpHVkw2SG1USytGc0sybG1ZZ1JDdk9Cclg3Rkh7ZjgwM0ZFNAp4ZkgrZlFsdGxDdEZTSEhuaUlzZTFEQ2J4cFVTdnRISXpYMFcyb2hXV3RPVkRpOTAzOW8zY2VaWmdVK3VRYno0Cmp2djJoeVdRNDhORFl3RWF1UUU2S3NBQTFLT0IyUkI2dE45bjFTVWoxU1B2WnBsQkVieDZ5MTkzaUJSVFJRM2wKM2JhdFRNUUEzelBsdk01ZEE2Vy8rQWcwVm0xMk1SR091VFRLSEU2bE5INE1DbHQvRGZZPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K

我们需要将生成的base64编码的字符串嵌入到YAML文件中,并将其作为证书签名请求提交给Kubernetes。这一步骤基本上可以将Bob的私钥与Kubernetes集群相关联。

apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
  name: bob-csr
spec:
  groups:
  - system:authenticated
 
  request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1lqQ0NBVW9DQVFBd0hURU1NQW9HQTFVRUF3d0RZbTlpTVEwd0N3WURWUVFLREFSbGJtZHVNSUlCSWpBTgpCZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEzSU9oUTArMFJUakpqZjBKTkd2Rmo0YWFlN1hYCkkrZWkzTzZWTEpqMHNKNDBvengyUTVndXBmeFc5b0lEYTJETnhVZjZkNHVMOUJ3V2lhdFdQdnBDNm80MHJQc2EKTjBUdEhEekFYeWppc0E5VXVRMVNKMWg5Mkg0TU9XWEpWNWJWaTlXYjBKU3hLbXVrSUVtaERJcW9TcEh7MU5xaApQMWNXOFFpNXpoVVBmWlpnOUhSaWVUQ2xEMmR3bWRtS1JjbU9uenNGVWhJWmZWanVZNzZJUm9KbksyaHNzVjZoCmMyY1JNTVNEdFA0ZDArYkxOY1BKdExpS3JjQkdwUGxLUEdrSHovM2NNbVhpVi8wY2xqUlppMzJCb3B4NlI1NUIKc0Z6cXZwcWgzNWxLNUVOUGxPZy9sdURFdllGeUtzOUY2aERBRFhDNzQxU0ZCQTI0TERzcTFiWWtVUUlEQVFBQgpvQUF3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUxTejgxL2N3bjQxbVRrUDhabWhhUUx3MkpIRkN4ZUlaOFdpCkZOV0U1cnRVd3hrSjJGWVJKRlFUL1hJN0FoL0pXTkhqeHlhOUNyN3c0OThmanN3bDF2ZzQ1QUgrR29DeVEwTWkKOU1MMHl0WmZyaG5jYmtpRG9oSUpuaWhJTjlCUGpHVkw2SG1USytGc0sybG1ZZ1JDdk9Cclg3Rkh7ZjgwM0ZFNAp4ZkgrZlFsdGxDdEZTSEhuaUlzZTFEQ2J4cFVTdnRISXpYMFcyb2hXV3RPVkRpOTAzOW8zY2VaWmdVK3VRYno0Cmp2djJoeVdRNDhORFl3RWF1UUU2S3NBQTFLT0IyUkI2dE45bjFTVWoxU1B2WnBsQkVieDZ5MTkzaUJSVFJRM2wKM2JhdFRNUUEzelBsdk01ZEE2Vy8rQWcwVm0xMk1SR091VFRLSEU2bE5INE1DbHQvRGZZPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K
  
  usages:
  - digital signature
  - key encipherment
  - server auth
kubectl create -f signing-request.yaml
certificatesigningrequest.certificates.k8s.io/bob-csr created

使用以下kubectl命令验证CSR:

kubectl get csr
NAME      AGE   REQUESTOR       CONDITION
bob-csr   41s   minikube-user   Pending

请注意,请求此时依旧处于pending状态。集群管理员需要批准它,才会变成active状态。

kubectl certificate approve bob-csr
certificatesigningrequest.certificates.k8s.io/bob-csr approved
kubectl get csr
NAME      AGE    REQUESTOR       CONDITION
bob-csr   104s   minikube-user   Approved,Issued

既然证书已经批准并发布,我们需要从集群中获取签名证书。这是登录Bob账户最关键的一步。

kubectl get csr bob-csr -o jsonpath='{.status.certificate}' | base64 --decode > bob.crt

bob.crt这一文件是用于Bob身份认证的客户端证书。我们现在拥有Kubernetes的私钥(bob.key)和批准的证书(bob.crt)。只要Bob拥有这两个凭据,他就可以通过集群进行身份认证。

那么,现在就可以将Bob作为用户添加到Kubernetes中。

kubectl config set-credentials bob --client-certificate=bob.crt --client-key=bob.key
User "bob" set.

打开~/.kube/config 文件确认凭据已经设置完成。

Kubernetes身份认证的操作方法是什么

让我们创建一个名为engineering的新命名空间,Bob是其管理员。

kubectl create namespace engineering
namespace/engineering created
kubectl get namespace
NAME              STATUS   AGE
default           Active   37m
engineering       Active   0s
kube-node-lease   Active   37m
kube-public       Active   37m
kube-system       Active   37m

kubectl CLI以auth的形式提供了非常有用的开关,可以验证特定用户的权限。让我们检查一下当前的管理员用户是否可以访问engineering命名空间。鉴于您集群管理员的身份,因此可以轻易看到输出结果。

 kubectl auth can-i list pods --namespace engineering
yes

我们也能够检查Bob能否访问engineering命名空间。

kubectl auth can-i list pods --namespace engineering --as bob
no

很显然,Bob无法访问命名空间,这是因为我们创建了凭据但是没有明确授权Bob对任何对象进行任何特定的动作。

“Kubernetes身份认证的操作方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


分享题目:Kubernetes身份认证的操作方法是什么
URL标题:http://hbruida.cn/article/ijeecg.html