217 lines
7.8 KiB
YAML
217 lines
7.8 KiB
YAML
---
|
||
# Патч celery для контура УГМК.
|
||
#
|
||
# ВНИМАНИЕ: envs — список, kustomize заменяет его ЦЕЛИКОМ (JSON merge patch),
|
||
# поэтому здесь продублирован весь набор из apps/pm/base/celery.yaml.
|
||
# При добавлении переменной в base её нужно продублировать и сюда.
|
||
# podAnnotations — map, мержится по ключам, поэтому переопределён только
|
||
# один ключ agent-inject-template-pm-s3; остальные vault-аннотации берутся из base.
|
||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||
kind: HelmRelease
|
||
metadata:
|
||
name: celery
|
||
namespace: pm
|
||
spec:
|
||
values:
|
||
services:
|
||
celery:
|
||
# Образ общий с backend — держать в одной версии обязательно,
|
||
# иначе воркер разъедется с API по схеме задач и моделям.
|
||
image:
|
||
name:
|
||
_default: cr.yandex/crp3ccidau046kdj8g9q/pm-backend:production_fa0f1551
|
||
|
||
# base не переопределяет args, а нам нужно добавить sourcing pm-kafka —
|
||
# дублируем скрипт целиком (то же самое, что и в backend.yaml).
|
||
deployment:
|
||
args:
|
||
_default:
|
||
- |
|
||
set -a
|
||
[ -f /vault/secrets/pm-db ] && . /vault/secrets/pm-db
|
||
[ -f /vault/secrets/pm-rabbitmq ] && . /vault/secrets/pm-rabbitmq
|
||
[ -f /vault/secrets/pm-s3 ] && . /vault/secrets/pm-s3
|
||
[ -f /vault/secrets/pm-kafka ] && . /vault/secrets/pm-kafka
|
||
set +a
|
||
exec celery -A config worker -B -l info -E -Q pm -n default_worker.%h --concurrency=2
|
||
|
||
envs:
|
||
# base: http://backend-service.sarex.svc.cluster.local:8000 — ns sarex не существует
|
||
- name: USERS_INTERNAL_HOST
|
||
value:
|
||
_default: "http://backend-svc.django.svc.cluster.local:80"
|
||
|
||
- name: CELERY_REDIS_HOST
|
||
value:
|
||
_default: "redis.pm.svc.cluster.local"
|
||
|
||
# base: http://sarex-resources-service.resources — ns resources не развёрнут в контуре
|
||
- name: RESOURCES_INTERNAL_HOST
|
||
value:
|
||
_default: "http://iam-backend.iam.svc.cluster.local:8000"
|
||
|
||
# base: http://eav-service.eav — сервис называется backend-svc и слушает 80
|
||
- name: EAV_HOST
|
||
value:
|
||
_default: "http://backend-svc.eav.svc.cluster.local:80"
|
||
|
||
- name: EAV_API_PREFIX
|
||
value:
|
||
_default: "/api/v0"
|
||
|
||
- name: EAV_API_PREFIX_V1
|
||
value:
|
||
_default: "/api/v1"
|
||
|
||
- name: TRACING_INSECURE
|
||
value:
|
||
_default: "False"
|
||
|
||
- name: SERVER_ENABLE_SYNC_RESOURCES
|
||
value:
|
||
_default: "True"
|
||
|
||
- name: SERVER_DELETED_TASK_MAX_AGE_DAYS
|
||
value:
|
||
_default: "1"
|
||
|
||
- name: SERVER_EXPIRED_TASK_NOTIFICATION_HOUR
|
||
value:
|
||
_default: "17"
|
||
|
||
- name: LANG
|
||
value:
|
||
_default: "C.UTF-8"
|
||
|
||
- name: LC_ALL
|
||
value:
|
||
_default: "C.UTF-8"
|
||
|
||
- name: PYTHONUTF8
|
||
value:
|
||
_default: "1"
|
||
|
||
- name: CACHE_SSL
|
||
value:
|
||
_default: "False"
|
||
|
||
- name: CACHE_SSL_CA_CERTS
|
||
value:
|
||
_default: ""
|
||
|
||
# base: "False". Держим в одном значении с backend: при enable
|
||
# config/celery.py включает периодическую синхронизацию ресурсов,
|
||
# которая пишет ключи service_accounts / resources:* — их читает
|
||
# backend в sarex/pm/utils/resources.py.
|
||
- name: CACHE_ENABLE
|
||
value:
|
||
_default: "True"
|
||
|
||
# Новые: в base их нет, дефолт CacheSettings.host — localhost.
|
||
- name: CACHE_HOST
|
||
value:
|
||
_default: "redis.pm.svc.cluster.local"
|
||
|
||
- name: CACHE_PORT
|
||
value:
|
||
_default: "6379"
|
||
|
||
- name: CLICKHOUSE_ENABLE
|
||
value:
|
||
_default: "False"
|
||
|
||
- name: KAFKA_ENABLE
|
||
value:
|
||
_default: "True"
|
||
|
||
# См. подробные комментарии в apps/pm/d8-ugmk-prod/backend.yaml —
|
||
# то же самое, воркер должен уметь публиковать в Kafka так же, как API.
|
||
- name: KAFKA_BOOTSTRAP_SERVERS
|
||
value:
|
||
_default: '["kafka-kafka-contour.kafka.svc.cluster.local:9092"]'
|
||
|
||
- name: KAFKA_SECURITY_PROTOCOL
|
||
value:
|
||
_default: "SASL_SSL"
|
||
|
||
- name: KAFKA_SSL_CAFILE
|
||
value:
|
||
_default: "/usr/local/share/ca-certificates/kafka.crt"
|
||
|
||
- name: KAFKA_TOPICS
|
||
value:
|
||
_default: '{"planning": "message-hub-prod"}'
|
||
|
||
# base: https://lk.sarex.io/api/token/public/
|
||
- name: AUTH_PUBLIC_TOKEN_URL
|
||
value:
|
||
_default: "https://sarex.uralmine.com/api/token/public/"
|
||
|
||
# base: https://lk.sarex.io
|
||
- name: SERVER_HOST
|
||
value:
|
||
_default: "https://sarex.uralmine.com"
|
||
|
||
# base: https://api.sarex.io
|
||
- name: SERVER_API_HOST
|
||
value:
|
||
_default: "https://sarex.uralmine.com"
|
||
|
||
- name: SERVER_DEBUG
|
||
value:
|
||
_default: "False"
|
||
|
||
- name: SERVER_ALLOWED_HOSTS
|
||
value:
|
||
_default: '["*"]'
|
||
|
||
- name: SERVER_USE_OTEL
|
||
value:
|
||
_default: "False"
|
||
|
||
- name: SERVER_VERIFY_SSL
|
||
value:
|
||
_default: "False"
|
||
|
||
- name: SERVER_LOG_LEVEL
|
||
value:
|
||
_default: "INFO"
|
||
|
||
volumes:
|
||
_default:
|
||
- name: kafka-ca-cert
|
||
mountPath:
|
||
_default: /usr/local/share/ca-certificates/kafka.crt
|
||
subPath:
|
||
_default: kafka.crt
|
||
readOnly:
|
||
_default: true
|
||
configMap:
|
||
name:
|
||
_default: kafka-ca-cert
|
||
items:
|
||
- key: kafka.crt
|
||
path:
|
||
_default: kafka.crt
|
||
|
||
podAnnotations:
|
||
_default:
|
||
# base склеивал S3_BUCKET с S3_VERIFY: {{- end -}} съедал перевод строки.
|
||
# S3_VERIFY поднят выше блока if, у {{ end }} убран хвостовой дефис.
|
||
vault.hashicorp.com/agent-inject-template-pm-s3: |-
|
||
{{- with secret "secrets/data/minio/apps/pm" -}}
|
||
S3_HOST={{ index .Data.data.client "endpoint" }}
|
||
S3_LOGIN={{ index .Data.data "access_key" }}
|
||
S3_PASSWORD={{ index .Data.data "secret_key" }}
|
||
S3_VERIFY=False
|
||
{{- $buckets := index .Data.data "buckets" }}
|
||
S3_BUCKET={{ if gt (len $buckets) 0 }}{{ index (index $buckets 0) "name" }}{{ else }}sarex-media-storage{{ end }}
|
||
{{- end -}}
|
||
vault.hashicorp.com/agent-inject-secret-pm-kafka: secrets/data/kafka/apps/pm
|
||
vault.hashicorp.com/agent-inject-template-pm-kafka: |-
|
||
{{- with secret "secrets/data/kafka/apps/pm" -}}
|
||
KAFKA_SASL_MECHANISM={{ index .Data.data.auth "sasl_mechanism" }}
|
||
KAFKA_SASL_PLAIN_USERNAME={{ index .Data.data "username" }}
|
||
KAFKA_SASL_PLAIN_PASSWORD={{ index .Data.data "password" }}
|
||
{{- end -}}
|