Bài Lab Kubernetes – Triển khai và quản lý người dùng trên cluster

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)

  1. Cài đặt kubectl trên một máy (gọi là base node). Không cần init cụm.
  2. Copy file cấu hình từ máy master sang base node:
scp /root/.kube/config ubuntu@<BASE_NODE_IP>:/home/ubuntu/config
  1. 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

  1. Set biến môi trường $KUBECONFIG để sử dụng file config mặc định:
export KUBECONFIG="$HOME/config"
  1. Kiểm tra:
kubectl get node

Bước 5: Tạo namespace và cấp quyền

  1. Tạo namespace:
kubectl create namespace backend1
  1. Tạo private key cho user:
openssl genrsa -out pnh1.key 2048
  1. Tạo file CSR:
openssl req -new -key pnh1.key -out pnh1.csr -subj "/CN=pnh1/O=pnh"
  1. 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

  1. Copy file chứng chỉ và key về base node:
scp master:/root/pnh1.* /home/ubuntu/
  1. Thêm user vào config:
kubectl config set-credentials pnh1 --client-certificate=/home/ubuntu/pnh1.crt --client-key=/home/ubuntu/pnh1.key
  1. 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

  1. 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
  1. Tạo RoleBinding:
kubectl create rolebinding rolebinding-deploy --role=deploy-manager --user=pnh1 -n backend1

Bước 8: Kiểm tra quyền

  1. Đặt context:
kubectl config use-context pnh1-context
  1. 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!

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top