В нашем конвейере CI мы переключились на использование имен хостов, основанных на соглашениях (в основном для динамических сред разработки на основе PR). Эта новая функциональность требует, чтобы мы уважали устаревшие имена хостов, которые установлены в Схемах управления, так как другие службы указывают на эти старые имена хостов.
Мы хотим добавить или добавить наше имя хоста на основе соглашения к существующему списку имен хостов, не перезаписывая ни одно из значений.
Мы нашли обходной путь, на данный момент; но надеемся найти более чистое решение. Обходной путь позволяет нам --set service.hostnames[10]="k8s-myapp-prod.website.com"
, где индекс 10 достаточно высок, чтобы не сталкиваться с именами хостов на диаграмме.
Мы ожидаем, что здесь будет только 2 или 3 имени хоста, поэтому решение работает, оно игнорирует, что не существует более одного другого имени хоста. Меня больше волнует будущее обновление, которое проверяет, что в списке есть только одно имя хоста, и выдает ошибку индекса вне границ.
Наша команда выглядит так:
helm upgrade --install \
--namespace "myapp" \
--values "./values-prod.yaml" \
--set service.hostnames[10]="k8s-myapp-prod.website.com" \
"myapp-prod" ./
Есть мысли о том, как сделать это чище, или какую-то другую магию, которую мы можем использовать?
Вот копия нашего файла values.yaml:
image:
repository: dockerhub.com/myorg
stack:
environment: prod
service:
ingress:
class: nginx
hostnames:
- legacy-url-myapp-prod.website.com
port: 80
healthcheck: /heartbeat
resources:
memory:
request: "512Mi"
limit: "512Mi"
cpu:
request: "500m"
limit: "500m"
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 6
cpu: 50
environment:
DEPLOY_ENV: prod
spec:
strategy:
type: RollingUpdate