K8s service account

Bạn đã cung cấp bài lab Kubernetes (K8s). Tôi sẽ hướng dẫn từng bước để thực hiện bài lab này.

Bước 1: ServiceAccount

  1. Kiểm tra ServiceAccount (SA):
    • Kiểm tra SA trong namespace default: kubectl get sa
    • Kiểm tra SA trong namespace khác (vd: pyapp-ns-pnh): kubectl get sa -n pyapp-ns-pnh
  2. Xem thông tin file mount trong Pod:
    • Truy cập Pod: kubectl exec -it pyapp-deployment-7c86b4cfff-b9n8g -n pyapp-ns-pnh -- /bin/sh
    • Liệt kê và kiểm tra nội dung file: ls /var/run/secrets/kubernetes.io/serviceaccount cat /var/run/secrets/kubernetes.io/serviceaccount/token cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  3. Kiểm tra Pod đang dùng ServiceAccount nào: kubectl get pod -n pyapp-ns-pnh -o yaml pyapp-deployment-7c86b4cfff-b9n8g | grep serviceAccount

Bước 2: Cập nhật ImagePullSecrets

  1. Thêm imagePullSecrets vào namespace: kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "registry-pnh-secret"}]}' -n pyapp-ns-pnh
  2. Xác minh cấu hình: kubectl get sa default -o yaml -n pyapp-ns-pnh

Bước 3: Xóa và cập nhật Deployment

  1. Xóa Deployment hiện tại: kubectl delete -f deploypython.yaml
  2. Chỉnh sửa file deploypython.yaml:
    • Thêm thông tin imagePullSecrets: imagePullSecrets: - name: registry-pnh-secret
  3. Triển khai lại Deployment: kubectl apply -f deploypython.yaml

Bước 4: ServiceAccount mặc định

  1. Kiểm tra Pod đã chạy thành công: kubectl get pod -n pyapp-ns-pnh
  2. Lý thuyết:
    • ServiceAccount mặc định không có quyền truy cập API Server trừ khi được cấu hình RBAC.

Bước 5: RBAC (Role-Based Access Control)

  1. Tạo Role và ClusterRoleBinding:
    • Xem tài nguyên khả dụng: kubectl api-resources -o wide
    • Tạo Role cho namespace test-ns: kubectl create ns test-ns kubectl run svcurl --image=luksa/kubectl-proxy:curl -i --tty -n test-ns

Bước 6: Tạo Role

  1. File role1.yaml: apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: pyapp-ns-pnh name: pod-reader rules: - apiGroups: [""] verbs: ["get", "list"] resources: ["pods"]
  2. Áp dụng Role: kubectl apply -f role1.yaml

Bước 7: Tạo RoleBinding

  1. File rolebind.yaml: apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: test-role namespace: pyapp-ns-pnh roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: pod-reader subjects: - kind: ServiceAccount name: default namespace: test-ns
  2. Áp dụng RoleBinding: kubectl apply -f rolebind.yaml

Nếu cần giải thích thêm hoặc gặp khó khăn ở bước nào, bạn hãy hỏi nhé!

Leave a Comment

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

Scroll to Top