您好,登錄后才能下訂單哦!
本篇內容介紹了“Kubernetes身份認證的操作方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在生產環(huán)境中,Kubernetes管理員使用命名空間來隔離資源和部署。命名空間作為一個邏輯邊界來強制基本訪問控制。
假設現(xiàn)在我們有個新的管理員叫Bob,要加入開發(fā)團隊為研發(fā)組管理Kubernetes部署。我們現(xiàn)在需要給他提供足夠的訪問權限以便于他管理工程命名空間。假設你是集群管理員并且擁有管理全局資源和對象的權限,你需要登上Bob的賬戶并幫助他獲取訪問Kubernetes集群所需的憑據(jù)。
我在操作中使用的是Minikube,但本文示例的場景適用于任何使用其他方式配置的Kubernetes集群(只要你是集群管理員身份就行)。
首先,創(chuàng)建一個名為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集群相關聯(lián)。
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狀態(tài)。集群管理員需要批準它,才會變成active狀態(tài)。
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
既然證書已經(jīng)批準并發(fā)布,我們需要從集群中獲取簽名證書。這是登錄Bob賬戶最關鍵的一步。
kubectl get csr bob-csr -o jsonpath='{.status.certificate}' | base64 --decode > bob.crt
bob.crt這一文件是用于Bob身份認證的客戶端證書。我們現(xiàn)在擁有Kubernetes的私鑰(bob.key)和批準的證書(bob.crt)。只要Bob擁有這兩個憑據(jù),他就可以通過集群進行身份認證。
那么,現(xiàn)在就可以將Bob作為用戶添加到Kubernetes中。
kubectl config set-credentials bob --client-certificate=bob.crt --client-key=bob.key User "bob" set.
打開~/.kube/config 文件確認憑據(jù)已經(jīng)設置完成。
讓我們創(chuàng)建一個名為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無法訪問命名空間,這是因為我們創(chuàng)建了憑據(jù)但是沒有明確授權Bob對任何對象進行任何特定的動作。
“Kubernetes身份認證的操作方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。