Tôi đã trích xuất được nội dung từ các hình ảnh. Dưới đây là các bước chi tiết dựa trên bài lab Kubernetes:
Bài Lab Kubernetes – Triển khai và quản lý người dùng trên cluster
Bước 1: Kiểm tra cấu hình mặc định
Mặc định, kubectl sử dụng file cấu hình từ thư mục: $HOME/.kube/config.
Nếu muốn chỉ định file khác để kubectl kết nối đến cụm Kubernetes, sử dụng lệnh:
kubectl --kubeconfig=$HOME/config get node
Bước 2: Cấu trúc file config
File cấu hình bao gồm:
- Danh sách các clusters: thông tin kết nối đến cụm Kubernetes.
- Danh sách các users: thông tin người dùng.
- Danh sách các context: nhóm user và cluster thành một context để sử dụng dễ dàng.
Bước 3: Chuẩn bị môi trường (Base Node)
- Cài đặt
kubectltrên một máy (gọi là base node). Không cần init cụm. - Copy file cấu hình từ máy master sang base node:
scp /root/.kube/config ubuntu@<BASE_NODE_IP>:/home/ubuntu/config
- Trên base node:
- Kiểm tra kết nối với file cấu hình vừa copy:
kubectl --kubeconfig=$HOME/config get node
Bước 4: Thiết lập biến môi trường
- Set biến môi trường
$KUBECONFIGđể sử dụng file config mặc định:
export KUBECONFIG="$HOME/config"
- Kiểm tra:
kubectl get node
Bước 5: Tạo namespace và cấp quyền
- Tạo namespace:
kubectl create namespace backend1
- Tạo private key cho user:
openssl genrsa -out pnh1.key 2048
- Tạo file CSR:
openssl req -new -key pnh1.key -out pnh1.csr -subj "/CN=pnh1/O=pnh"
- Tạo chứng chỉ từ CSR trên máy master:
sudo openssl x509 -req -in pnh1.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out pnh1.crt -days 500
Bước 6: Thiết lập user và context
- Copy file chứng chỉ và key về base node:
scp master:/root/pnh1.* /home/ubuntu/
- Thêm user vào config:
kubectl config set-credentials pnh1 --client-certificate=/home/ubuntu/pnh1.crt --client-key=/home/ubuntu/pnh1.key
- Tạo context cho user:
kubectl config set-context pnh1-context --cluster=kubernetes --namespace=backend1 --user=pnh1
Bước 7: Tạo Role và phân quyền
- Tạo Role (phân quyền cụ thể trong namespace
backend1):
# File: pnh1role.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: backend1
name: deploy-manager
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["deployments", "replicasets", "pods"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
Áp dụng Role:
kubectl apply -f pnh1role.yml
- Tạo RoleBinding:
kubectl create rolebinding rolebinding-deploy --role=deploy-manager --user=pnh1 -n backend1
Bước 8: Kiểm tra quyền
- Đặt context:
kubectl config use-context pnh1-context
- Kiểm tra quyền hạn:
kubectl get pod -n backend1
Bước 9: Mở rộng quyền (ClusterRole)
Nếu cần quyền trên toàn bộ các namespace:
# File: pnh1clusterrole.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: deploy-cluster-manager
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["namespaces", "deployments", "replicasets", "pods"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
Áp dụng và tạo ClusterRoleBinding:
kubectl apply -f pnh1clusterrole.yml
kubectl create clusterrolebinding clusterbinding-deploy --clusterrole=deploy-cluster-manager --user=pnh1
Hãy cho tôi biết nếu bạn cần giải thích thêm phần nào!