Настройка необязательных элементов конфигурации подкомпонентов
Обзор функциональности
С помощью настройки конфигурации options для каждого компонента в ресурсе TektonConfig можно задавать пользовательские конфигурации для подкомпонентов.
В этом документе описаны поддерживаемые options элементы конфигурации, а также способы их настройки.
Сценарии использования
Tekton поддерживает развертывание подкомпонентов через ресурс TektonConfig. Этот ресурс содержит общий элемент конфигурации options в полях spec.pipeline, spec.trigger, spec.hub, spec.chain и spec.result.
С помощью конфигурации options вы можете:
- Выполнять точечное развертывание компонентов
- Изменять параметры высокой доступности
- Изменять число реплик компонентов
- Изменять квоты ресурсов для компонентов
- Изменять элементы конфигурации
ConfigMap по умолчанию
Подробно настраиваемые элементы
- Изменение конфигурации
Deployment для компонентов, например:
- Конфигурации
labels и annotations
- Числа реплик
replicas
- Правил affinity
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; в этом разделе описано, как настроить квоты ресурсов.
Шаг 1
Отредактируйте ресурс TektonConfig
$ kubectl edit tektonconfigs.operator.tekton.dev config
Шаг 2
WARNING
Изменение конфигурации может привести к поэтапному обновлению Pods компонента, из-за чего служба может временно стать недоступной. Выполняйте это в подходящее время.
Измените конфигурацию 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
Примените конфигурацию и дождитесь обновления Pods.
$ 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 других компонентов.
Ссылки