You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从堡垒节点生成oc集群token实现脚本自动登录

Bash环境OpenShift集群自动认证方案

脚本自动登录实现(规避未授权报错)

不要直接用手动登录生成的临时token做脚本认证,按以下步骤配置稳定的认证逻辑:

  • 为备份脚本创建专用的服务账号(ServiceAccount),绑定集群管理员权限,避免直接使用kubeadmin账号带来的权限管控和token过期问题
    执行以下命令完成配置:
    # 在openshift-config项目下创建备份专用服务账号
    oc create sa backup-script-sa -n openshift-config
    # 为服务账号绑定集群管理员角色
    oc adm policy add-cluster-role-to-user cluster-admin -z backup-script-sa -n openshift-config
    
  • 提取服务账号的认证token:
    4.11以前版本直接执行oc sa get-token backup-script-sa -n openshift-config即可获取;4.11及以后版本需要手动创建长期Token Secret,配置如下:
    # sa-long-term-token.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: backup-sa-perm-token
      namespace: openshift-config
      annotations:
        kubernetes.io/service-account.name: backup-script-sa
    type: kubernetes.io/service-account-token
    
    执行oc apply -f sa-long-term-token.yaml创建后,通过oc extract secret/backup-sa-perm-token -n openshift-config --keys=token --to=-提取token值。
  • 在备份脚本头部加入登录状态预校验逻辑,执行操作前先确认认证状态,避免触发未授权报错,参考代码:
    #!/bin/bash
    CLUSTER_API="https://<你的集群API地址>:6443"
    AUTH_TOKEN="<上一步提取的长期token>"
    
    # 校验当前登录状态,未认证则自动登录
    if ! oc whoami >/dev/null 2>&1; then
        oc login --token="${AUTH_TOKEN}" --server="${CLUSTER_API}"
        # 登录失败直接终止脚本
        if [ $? -ne 0 ]; then
            echo "集群认证失败,退出备份流程"
            exit 1
        fi
    fi
    
    # 后续写入你的备份业务逻辑即可
    

生产环境不推荐直接使用kubeadmin账号生成长期token,权限粒度过粗存在安全风险。

Token有效期说明

执行oc login --token=sometext --server=https://example.com:6443时使用的token是否需要24小时更换,取决于token类型:

  • 手动通过网页控制台复制、或者默认oc login交互流程生成的用户会话token,默认有效期为24小时,到期后必须重新获取,否则就会抛出error: you must be logged in to the server (unauthorised)报错。
  • 按照上文流程创建的ServiceAccount绑定长期Secret生成的token,默认永久有效,不需要每24小时更换,仅在手动删除服务账号、删除对应Token Secret、或者集群配置了强制SA Token轮转策略时才会失效。

内容的提问来源于stack exchange,提问作者Vj Thakur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 03:12:23