• Русский
  • Настройка необязательных элементов конфигурации подсистем

    Обзор функции

    Путём настройки конфигурации options каждого компонента в ресурсе TektonConfig можно добиться пользовательской конфигурации подсистем.

    В этом документе представлены поддерживаемые конфигурационные элементы options, а также способы их настройки.

    Сценарии использования

    Tekton поддерживает развертывание подсистем через ресурс TektonConfig. В этом ресурсе имеется общий конфигурационный элемент options в полях spec.pipeline, spec.trigger, spec.hub, spec.chain и spec.results.

    С помощью конфигурации options можно реализовать:

    • Точечное развертывание компонентов
    • Изменение настроек высокой доступности
    • Изменение количества реплик компонентов
    • Изменение квот ресурсов компонентов
    • Изменение стандартных конфигурационных элементов ConfigMap

    Подробные настраиваемые элементы

    • Изменение конфигурации Deployment для компонентов, например:
      • Конфигурации labels и annotations
      • Количество реплик replicas
      • Правила affinity affinity
      • Класс приоритета priorityClassName
      • Node selector nodeSelector
      • Правила толерантности tolerations
      • Ограничения распределения по топологии topologySpreadConstraints
      • Класс времени выполнения runtimeClassName
      • Тома volumes
      • Контейнеры containers и initContainers
        • Квоты ресурсов resources.limits и resources.requests
        • Переменные окружения env
        • Тома volumes
        • Аргументы запуска args
    • Изменение конфигурации ConfigMap для компонентов, например:
      • Конфигурации labels и annotations
      • Обновление или добавление новых элементов data
    • Изменение конфигурации Ingress для компонентов, например:
      • ingressClassName для переопределения стандартной конфигурации ingressClass
      • rules для переопределения стандартных правил маршрутизации
      • tls для переопределения стандартной конфигурации сертификатов
    • Изменение конфигурации автоматического масштабирования HorizontalPodAutoscaler для компонентов, например:
      • Добавление данной конфигурации
      • Изменение конфигураций minReplicas и maxReplicas
      • Изменение конфигураций targetCPUUtilizationPercentage и др.
    • Изменение конфигурации StatefulSet для компонентов
    • Изменение конфигурации ValidatingWebhookConfiguration и MutatingWebhookConfiguration для компонентов

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

    Перед использованием функции убедитесь, что:

    • Компонент Tekton Operator установлен
    • Ресурс TektonConfig автоматически создан в среде
    • Вы имеете базовое понимание конфигурационных элементов, поддерживаемых в TektonConfig

    Ниже приведён типичный пример конфигурации options:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      targetNamespace: tekton-pipelines
      hub: {}
      chain: {}
      trigger: {}
      pipeline:
        options:
          # Включена ли конфигурация options, значение по умолчанию false. При установке true все конфигурации внутри options не будут применяться.
          disabled: false
    
          # Конфигурация ConfigMap
          configMaps:
            # Имя ConfigMap для изменения или добавления
            config-defaults:
              data:
                # Конфигурационные элементы для изменения или добавления
                default-container-resource-requirements: |
                  place-scripts: # обновляет требования к ресурсам контейнера 'place-scripts'
                    requests:
                      memory: "64Mi"
                      cpu: "50m"
                    limits:
                      memory: "128Mi"
                      cpu: "100m"
    
          # Конфигурация Deployment
          deployments:
            # Имя Deployment для изменения
            tekton-events-controller:
              metadata:
                # Конфигурация labels для изменяемого Deployment
                labels:
                  key: value
                # Конфигурация annotations для изменяемого Deployment
                annotations:
                  key: value
              spec:
                # Количество реплик изменяемого Deployment
                replicas: 1
                # Конфигурация шаблона для изменения
                template:
                  metadata:
                    # Конфигурация labels для изменения
                    labels:
                      key1: value
                    # Конфигурация annotations для изменения
                    annotations:
                      key1: value
                  spec:
                    # Конфигурация affinity для изменения
                    affinity:
                      nodeAffinity:
                        requiredDuringSchedulingIgnoredDuringExecution:
                          nodeSelectorTerms:
                            - matchExpressions:
                              - key: kubernetes.io/os
                                operator: In
                                values:
                                  - linux
    
                    # Конфигурация nodeSelector для изменения
                    nodeSelector:
                      kubernetes.io/os: linux
    
                    # Конфигурация tolerations для изменения
                    tolerations:
                      - effect: NoSchedule
                        key: node-role.kubernetes.io/master
                        operator: Exists
    
                    # priorityClassName: ""
                    # topologySpreadConstraints: ""
                    # runtimeClassName: ""
                    # volumes: []
                    # initContainers: []
    
                    containers:
                      # Имя контейнера для изменения
                      - name: tekton-events-controller
                        # Квоты ресурсов для изменения
                        resources:
                          limits:
                            cpu: "1"
                            memory: 1Gi
                          requests:
                            cpu: 500m
                            memory: 512Mi
    
                        # Переменные окружения для изменения
                        env:
                          - name: key
                            value: value
    
                        # Конфигурация томов для изменения
                        # volumes: []
    
                        # Аргументы запуска для добавления
                        # args: []
    
          # Конфигурация HorizontalPodAutoscalers для изменения или добавления
          horizontalPodAutoscalers:
            # Имя horizontalPodAutoscaler для изменения
            tekton-pipelines-remote-resolvers:
              metadata:
                # Конфигурация annotations для изменения
                # Конфигурация labels для изменения
                labels:
                  key: value
                annotations:
                  key: value
              spec:
                # Конфигурация minReplicas для изменения
                minReplicas: 1
                # Конфигурация maxReplicas для изменения
                maxReplicas: 5
                # Конфигурация метрик для изменения
                metrics:
                  - resource:
                      name: cpu
                      target:
                        averageUtilization: 50
                        type: Utilization
                    type: Resource
                  - resource:
                      name: memory
                      target:
                        averageUtilization: 50
                        type: Utilization
                    type: Resource
                # Конфигурация scaleTargetRef для изменения
                scaleTargetRef:
                  apiVersion: apps/v1
                  kind: Deployment
                  name: tekton-pipelines-remote-resolvers

    Шаги выполнения

    На примере компонента pipeline описывается, как настроить квоты ресурсов.

    Шаг 1

    Отредактируйте ресурс TektonConfig

    $ kubectl edit tektonconfigs.operator.tekton.dev config

    Шаг 2

    WARNING

    Изменение конфигураций может вызвать rolling update Pod'ов компонента, что временно сделает сервис недоступным. Пожалуйста, выполняйте это в подходящее время.

    Измените конфигурацию spec.pipeline.options.deployments следующим образом:

    • Измените количество реплик для Deployment tekton-events-controller на 2
    • Измените конфигурацию resources для Deployment tekton-events-controller
    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      targetNamespace: tekton-pipelines
      hub: {}
      chain: {}
      trigger: {}
      pipeline:
        options:
          disabled: false
          deployments:
            tekton-events-controller:
              spec:
                replicas: 2
                template:
                  spec:
                    containers:
                      - name: tekton-events-controller
                        resources:
                          limits:
                            cpu: "1"
                            memory: 1Gi
                          requests:
                            cpu: 500m
                            memory: 512Mi

    Шаг 3

    Отправьте конфигурацию и дождитесь обновления Pod'ов.

    $ kubectl get pods -n tekton-pipelines -l app=tekton-events-controller -w
    
    NAME                                       READY   STATUS    RESTARTS   AGE
    tekton-events-controller-fcd56975b-knvzx   1/1     Running   0          20s
    tekton-events-controller-fcd56975b-qqprt   1/1     Running   0          31s

    Результат операции

    Вы можете увидеть, что количество реплик tekton-events-controller равно 2, а конфигурация resources применена.

    $ kubectl get deployments.apps -n tekton-pipelines tekton-events-controller -o yaml
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tekton-events-controller
      namespace: tekton-pipelines
    spec:
      replicas: 2
      template:
        metadata:
        spec:
          containers:
          - name: tekton-events-controller
            resources:
              limits:
                cpu: "1"
                memory: 1Gi
              requests:
                cpu: 500m
                memory: 512Mi

    Последующие действия

    Если необходимо изменить конфигурацию других компонентов, вы можете следовать приведённым выше шагам для изменения конфигурации options других компонентов.

    Ссылки