Hướng dẫn đăng nhập Kubernetes Cluster bằng OIDC

Tính năng tích hợp OIDC cho phép người dùng xác thực và truy cập vào Kubernetes Cluster (BKE) thông qua một nhà cung cấp danh tính bên thứ ba (OIDC Provider) như Google, Keycloak, Dex, v.v.

1. Yêu cầu hệ thống (Prerequisites)

Để sử dụng OIDC kubeconfig, máy cá nhân của bạn cần cài đặt sẵn công cụ kubelogin (plugin hỗ trợ xác thực OIDC cho kubectl).

Cài đặt (Sử dụng Krew - plugin manager của kubectl):

kubectl krew install oidc-login

Hoặc cài đặt trực tiếp trên macOS (Homebrew):

brew install int128/kubelogin

2. Tải File Kubeconfig

  1. Đăng nhập vào hệ thống quản trị Cluster (Bizfly Cloud Dashboard / BKE API).
  2. Vào phần tải Kubeconfig của Cluster và chọn loại Kubeconfig là OIDC.
  3. Hệ thống sẽ trả về file kubeconfig chứa cấu hình OIDC tự động bao gồm issuer-url, client-id, cùng các scopes cần thiết (như email, profile).

3. Cấu hình thêm Client Secret (Đối với các OIDC Provider yêu cầu)

Vì lý do bảo mật, hệ thống không lưu hoặc không đính kèm client-secret vào file kubeconfig khi tải xuống. Một số Provider (ví dụ: Google Identity) yêu cầu bắt buộc phải có client-secret để cấp đổi token.

Nếu Provider của bạn nằm trong trường hợp này, bạn cần tự thêm client-secret thủ công vào file kubeconfig vừa tải.

Các bước thực hiện:

  1. Mở file kubeconfig vừa tải về bằng bất kỳ trình soạn thảo văn bản nào.
  2. Tìm đến block cấu hình users -> exec -> args của user có tên kết thúc bằng oidc.
  3. Bổ sung thêm dòng --oidc-client-secret=<secret của b> vào danh sách args.

Ví dụ minh họa:

Trước khi sửa:

users:
- name: admin-oidc
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1beta1
      command: kubectl
      args:
      - oidc-login
      - get-token
      - --oidc-issuer-url=https://accounts.google.com
      - --oidc-client-id=YOUR_CLIENT_ID
      - --oidc-extra-scope=email
      - --oidc-extra-scope=profile
      provideClusterInfo: false

Sau khi sửa (Thêm client-secret):

users:
- name: admin-oidc
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1beta1
      command: kubectl
      args:
      - oidc-login
      - get-token
      - --oidc-issuer-url=https://accounts.google.com
      - --oidc-client-id=YOUR_CLIENT_ID
      - --oidc-client-secret=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  # <-- BẠN THÊM DÒNG NÀY
      - --oidc-extra-scope=email
      - --oidc-extra-scope=profile
      provideClusterInfo: false

4. Xác thực và Truy cập Cluster

Sau khi đã hoàn tất cấu hình, bạn có thể thực hiện kiểm tra quyền truy cập vào Cluster bằng câu lệnh:

export KUBECONFIG=/đường/dẫn/đến/file/kubeconfig
kubectl get pods -A

Quá trình đăng nhập diễn ra như sau:

  1. Khi chạy lệnh kubectl, plugin oidc-login sẽ tự động mở trình duyệt web của bạn.
  2. Bạn sẽ được chuyển hướng tới trang đăng nhập của OIDC Provider (VD: Google).
  3. Sau khi xác thực thành công, trình duyệt sẽ báo bạn có thể đóng tab.
  4. Token sẽ được cấp và lưu cục bộ trên máy của bạn, kubectl sẽ ngay lập tức được xác thực và thực thi lệnh.