准备集群访问凭证

本指南展示了如何创建集群访问凭证,以帮助您运行 Tekton Tasks 和 Pipelines。

目录

前提条件

  • 已安装并配置 kubectl 以访问集群。
  • 具有读取和写入 Secrets 的权限。

步骤

选项 1:创建 Kubeconfig Secret

提供一个包含正确集群/权限上下文的 kubeconfig。

保持此 kubeconfig 精简(仅包含您需要的上下文)。定期轮换并严格限定 RBAC 范围。

您可以使用以下命令生成包含 kubeconfig 文件的 Secret。将 /path/to/kubeconfig 替换为您实际的 kubeconfig 文件路径。

kubectl -n <target-namespace> create secret generic <kubeconfig-secret-name> --from-file=kubeconfig=/path/to/kubeconfig
apiVersion: v1
kind: Secret
metadata:
  name: <kubeconfig-secret-name>
  namespace: <target-namespace>
type: Opaque
stringData:
  kubeconfig: |
    # 在此粘贴一个精简的 kubeconfig(带正确的上下文)

选项 2:创建带 RBAC 的 ServiceAccount

使用专用的 ServiceAccount。仅绑定您的 charts 所需的权限。

何时使用哪种范围?

  • 命名空间范围(Role + RoleBinding)——当您的 charts 仅管理单个命名空间中的资源时使用(典型的应用部署)。
  • 集群范围(ClusterRole + ClusterRoleBinding)——如果您的 charts 创建集群范围资源(例如 CRDs、webhooks、ClusterRoles、StorageClasses)或跨多个命名空间操作,则需要使用。

提示:从命名空间 Role 开始;仅在严格需要时授予集群范围权限。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: <service-account-name>
  namespace: <target-namespace>
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: <role-name>
  namespace: <target-namespace>
rules:
  # 替换为您的资源
  - apiGroups: ["apps"]
    resources: ["deployments", "statefulsets", "daemonsets", "replicasets"]
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: <role-binding-name>
  namespace: <target-namespace>
subjects:
  - kind: ServiceAccount
    name: <service-account-name>
    namespace: <target-namespace>
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: <role-name>