访问 Sutroplanet Kubernetes 集群

本文档将指导您如何通过 OIDC 认证访问 Sutroplanet 的 Kubernetes 集群。

前提条件

第一步:注册 Authentik 账号

  1. 打开 authentik.sutroplanet.com
  2. 点击登录页底部的 Sign up 链接
  3. 填写用户名、邮箱和密码,提交注册
  4. 检查您的邮箱,点击验证链接完成注册
  5. 联系管理员 (fhan0520@gmail.com) 将您的账号加入对应的 Kubernetes 用户组(如 k8s-usersk8s-agentforge 等),否则您将无法访问集群资源

第二步:安装 kubectl(如未安装)

如果您还没有安装 kubectl:

macOS:

brew install kubectl

Linux:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/

Windows:

下载 kubectl.exe,放到 PATH 目录中。

第三步:安装 kubelogin 插件

kubelogin 是 kubectl 的 OIDC 认证插件,用于通过浏览器登录获取访问令牌。

macOS:

brew install int128/kubelogin/kubelogin

Linux:

curl -LO https://github.com/int128/kubelogin/releases/latest/download/kubelogin_linux_amd64.zip
unzip kubelogin_linux_amd64.zip
sudo mv kubelogin /usr/local/bin/kubectl-oidc_login

Windows:

kubelogin releases 下载 kubelogin_windows_amd64.zip,解压后将 kubelogin.exe 重命名为 kubectl-oidc_login.exe,放到 PATH 目录中。

安装完成后验证:

kubectl oidc-login --help

第四步:配置 kubeconfig

将以下内容保存为 ~/.kube/config(如果已有其他集群配置,可以保存为 ~/.kube/sutro-config 并通过 KUBECONFIG 环境变量指定):

apiVersion: v1
kind: Config
clusters:
- cluster:
    server: https://sutroplanet.com:6443
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTmpBM05EY3hNak13SGhjTk1qVXhNREU0TURBeU5USXpXaGNOTXpVeE1ERTJNREF5TlRJegpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTmpBM05EY3hNak13V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFSYzVIcjl3SlVFSlJBVndyaVF3N2w5YXc5bEdtVFM2QXIrbGZzT3BkKzkKeENiVUE0TUpUWFY4cjBza2FIVUczUm5qVkVmUExIVVZLOEV6ZnlmYTRoNVFvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVWpoY3RuQVQwTlBieFdqMzgzamhZCkdTUnlUK1F3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnVUJDSGYxNWFrNEI2NlpxbUlyY0d3SzJFcDYvL3V6RnQKK09XSWUyMm1KT2tDSVFEQVdRRHpFVXBmdnVIRWMrNEpPZkhFT0h6OS9YRVNtcFhoV24vYmZwUkliQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
  name: sutro-cluster
contexts:
- context:
    cluster: sutro-cluster
    user: oidc-user
    namespace: agentforge
  name: sutro
current-context: sutro
users:
- name: oidc-user
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1beta1
      command: kubectl
      args:
        - oidc-login
        - get-token
        - --oidc-issuer-url=https://authentik.sutroplanet.com/application/o/kubernetes/
        - --oidc-client-id=bszmEYTqWfb0B7A9M6GfiWgXYpvpWn9wcB0eIhNn
        - --oidc-client-secret=xEGjzu9reT8omk7jTZn23Ri0oJDfhpcpTN6S33aj3gxeaxNjpILO5Xito2wHQHh807YTTG97OlZK9XTZWIs8dftNGR5mMbhgWOe9AzFF6ABzOtRJ7Fjn4d28QbQBKdN6
        - --oidc-extra-scope=email
        - --oidc-extra-scope=profile
        - --oidc-extra-scope=groups
      interactiveMode: IfAvailable

如果保存为单独文件,使用前设置环境变量:

export KUBECONFIG=~/.kube/sutro-config

第五步:登录并验证

运行任意 kubectl 命令触发登录:

kubectl get pods

浏览器会自动打开 Authentik 登录页面,使用您的邮箱账号登录。登录成功后,终端会自动获取到访问令牌。

验证您的权限:

# 查看可访问的命名空间
kubectl get namespaces

# 查看当前命名空间的 Pod
kubectl get pods

# 查看当前用户信息
kubectl auth whoami

权限说明

您的访问权限由管理员在 Authentik 中分配的用户组决定:

用户组权限范围
k8s-users可以列出集群中的命名空间(只读)
k8s-agentforgeagentforge 命名空间内拥有完整的管理权限

如果您在执行操作时收到 Forbidden 错误,说明您的账号没有对应资源的权限,请联系管理员。

常见问题

登录后仍然报 Unauthorized

清除本地缓存的 token 后重试:

rm -rf ~/.kube/cache/oidc-login
kubectl get pods

浏览器没有自动打开

手动复制终端中显示的 URL 到浏览器中打开。

Token 过期

重新运行 kubectl 命令会自动触发重新登录。如果需要强制刷新:

rm -rf ~/.kube/cache/oidc-login

连接超时

确保 VPN 已连接,并且可以访问 sutroplanet.com:6443

curl -k https://sutroplanet.com:6443/healthz

联系管理员

如有问题请联系: Fang Han fhan0520@gmail.com