Настройка необязательных параметров конфигурации подкомпонентов
Обзор функции
Настраивая конфигурацию 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 у других компонентов.
Ссылки