• Русский
  • Подготовка учетных данных для доступа к кластеру

    В этом руководстве показано, как создать учетные данные для доступа к кластеру, которые помогут вам запускать ваши Tekton Tasks и Pipelines.

    Предварительные требования

    • Установлен и настроен kubectl для доступа к кластеру.
    • Разрешения на чтение и запись Secrets.

    Шаги

    Вариант 1: Создание Secret с kubeconfig

    Предоставьте kubeconfig с контекстом, который имеет необходимые права доступа к кластеру.

    Держите этот kubeconfig минимальным (только с нужным контекстом). Регулярно обновляйте и строго ограничивайте RBAC.

    Вы можете использовать следующую команду для создания Secret, содержащего файл kubeconfig. Замените /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: Создание ServiceAccount с RBAC

    Используйте выделенный ServiceAccount. Назначайте только те разрешения, которые необходимы вашим charts.

    Когда использовать какой уровень доступа?

    • Область namespace (Role + RoleBinding) — используйте, если ваши charts управляют ресурсами только в одном namespace (типичный сценарий развертывания приложений).
    • Область кластера (ClusterRole + ClusterRoleBinding) — требуется, если ваши charts создают ресурсы с областью кластера (например, CRDs, webhooks, ClusterRoles, StorageClasses) или работают в нескольких namespace.

    Совет: начинайте с Role в области namespace; предоставляйте доступ на уровне кластера только при строгой необходимости.

    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>