Если вы хотите указать свою собственную конфигурацию при развертывании nginx-ingress-controller
, вы можете иметь диаграмму Helm-оболочки поверх исходной nginx-ingress
диаграммы Helm и предоставить свою собственную values.yaml
, которая может иметь настраиваемую конфигурацию.
Здесь используется Helm 3.
Создайте диаграмму:
$ helm create custom-nginx
$ tree custom-nginx
Итак, моя структура диаграммы выглядит так:
custom-nginx/
├── Chart.yaml
├── charts
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
Здесь есть несколько дополнительных вещей. В частности, мне не нужен полный каталог templates/
и его содержимое, поэтому я просто удалю их:
$ rm custom-nginx/templates/*
$ rmdir custom-nginx/templates
Теперь структура диаграммы должна выглядеть так:
custom-nginx/
├── Chart.yaml
├── charts
└── values.yaml
Поскольку мы должны включить исходную диаграмму nginx-ingress
в качестве зависимости, моя Chart.yaml
выглядит так:
$ cat custom-nginx/Chart.yaml
apiVersion: v2
name: custom-nginx
description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.39.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
appVersion: 0.32.0
dependencies:
- name: nginx-ingress
version: 1.39.1
repository: https://kubernetes-charts.storage.googleapis.com/
Здесь appVersion
- это nginx-controller
версия образа докера, а version
совпадает с nginx-ingress
версией диаграммы, которую я использую.
Осталось только указать вашу индивидуальную конфигурацию. Вот урезанная версия моей пользовательской конфигурации:
$ cat custom-nginx/values.yaml
# Default values for custom-nginx.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
nginx-ingress:
controller:
ingressClass: internal-nginx
replicaCount: 1
service:
externalTrafficPolicy: Local
publishService:
enabled: true
autoscaling:
enabled: true
minReplicas: 1
maxReplicas: 3
targetCPUUtilizationPercentage: "80"
targetMemoryUtilizationPercentage: "80"
resources:
requests:
cpu: 1
memory: 2Gi
limits:
cpu: 1
memory : 2Gi
metrics:
enabled: true
config:
compute-full-forwarded-for: "true"
Мы можем проверить ключи, которые доступны для использования в качестве конфигурации (раздел config
в values.yaml
) в https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/
Остальную конфигурацию можно найти здесь: https://github.com/helm/charts/tree/master/stable/nginx-ingress#configuration
После того, как конфигурации установлены, просто загрузите зависимость вашей диаграммы:
$ helm dependency update <path/to/chart>
Перед развертыванием диаграммы рекомендуется выполнить базовую проверку:
$ helm lint <path/to/chart>
$ helm install --debug --dry-run --namespace <namespace> <release-name> <path/to/chart>
Затем разверните свою диаграмму (которая развернет ваш nginx-ingress-controller
с вашими собственными настройками).
Кроме того, поскольку теперь у вас есть диаграмма, вы можете обновить и откатить диаграмму.
person
Shubham
schedule
09.06.2020