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

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

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

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

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

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

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

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

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

    • Изменение конфигурации Deployment для компонентов, например:
      • конфигурации labels и annotations
      • количество реплик replicas
      • правила привязки affinity
      • класс приоритета priorityClassName
      • селектор узлов nodeSelector
      • правила toleration 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:
          # Whether to enable options configuration, default value is false. When set to true, all configurations under options will not take effect.
          disabled: false
    
          # Configure ConfigMap's configurations
          configMaps:
            # Name of the ConfigMap to be modified or added
            config-defaults:
              data:
                # Configuration items to be modified or added
                default-container-resource-requirements: |
                  place-scripts: # updates resource requirements of a 'place-scripts' container
                    requests:
                      memory: "64Mi"
                      cpu: "50m"
                    limits:
                      memory: "128Mi"
                      cpu: "100m"
    
          # Configure Deployment's configurations
          deployments:
            # Name of the Deployment to be modified
            tekton-events-controller:
              metadata:
                # Labels configuration of the Deployment to be modified
                labels:
                  key: value
                # Annotations configuration of the Deployment to be modified
                annotations:
                  key: value
              spec:
                # Number of replicas of the Deployment to be modified
                replicas: 1
                # Template configuration to be modified
                template:
                  metadata:
                    # Labels configuration to be modified
                    labels:
                      key1: value
                    # Annotations configuration to be modified
                    annotations:
                      key1: value
                  spec:
                    # Affinity configuration to be modified
                    affinity:
                      nodeAffinity:
                        requiredDuringSchedulingIgnoredDuringExecution:
                          nodeSelectorTerms:
                            - matchExpressions:
                              - key: kubernetes.io/os
                                operator: In
                                values:
                                  - linux
    
                    # Node selector configuration to be modified
                    nodeSelector:
                      kubernetes.io/os: linux
    
                    # Tolerations configuration to be modified
                    tolerations:
                      - effect: NoSchedule
                        key: node-role.kubernetes.io/master
                        operator: Exists
    
                    # priorityClassName: ""
                    # topologySpreadConstraints: ""
                    # runtimeClassName: ""
                    # volumes: []
                    # initContainers: []
    
                    containers:
                      # Name of the container to be modified
                      - name: tekton-events-controller
                        # Resource quotas to be modified
                        resources:
                          limits:
                            cpu: "1"
                            memory: 1Gi
                          requests:
                            cpu: 500m
                            memory: 512Mi
    
                        # Environment variables to be modified
                        env:
                          - name: key
                            value: value
    
                        # Volume configuration to be modified
                        # volumes: []
    
                        # Execution arguments to be added
                        # args: []
    
          # HorizontalPodAutoscalers configuration to be modified or added
          horizontalPodAutoscalers:
            # Name of the horizontalPodAutoscaler to be modified
            tekton-pipelines-remote-resolvers:
              metadata:
                # Annotations configuration to be modified
                # Labels configuration to be modified
                labels:
                  key: value
                annotations:
                  key: value
              spec:
                # MinReplicas configuration to be modified
                minReplicas: 1
                # MaxReplicas configuration to be modified
                maxReplicas: 5
                # Metrics configuration to be modified
                metrics:
                  - resource:
                      name: cpu
                      target:
                        averageUtilization: 50
                        type: Utilization
                    type: Resource
                  - resource:
                      name: memory
                      target:
                        averageUtilization: 50
                        type: Utilization
                    type: Resource
                # scaleTargetRef configuration to be modified
                scaleTargetRef:
                  apiVersion: apps/v1
                  kind: Deployment
                  name: tekton-pipelines-remote-resolvers

    Порядок выполнения

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

    Step 1

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

    $ kubectl edit tektonconfigs.operator.tekton.dev config

    Step 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

    Step 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 у других компонентов.

    Ссылки