Django: s3-proxy ходил в ЧУЖОЙ MinIO
Раздача медиа отвечала 500 на каждую плитку, а под капотом был настоящий ответ S3: SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided status code: 403, request id: 18CA4386CBFA3E5D Ключ к разгадке — что ответ пришёл БЫСТРО (0.07 с) и с настоящим request id. То есть это не таймаут до недоступного хоста: s3-proxy реально достучался до чужого MinIO. В base адрес зашит внутри vault-шаблона: AWS_API_ENDPOINT=https://minio.contour.infra.sarex.tech и это домен другого контура. Наши ключи там не подходят — к счастью, иначе контур молча читал бы и писал в чужое хранилище. Ровно та же ловушка, что была у backend и celery: значение внутри шаблона аннотации, через values не перекрывается, поэтому заменяется аннотация целиком. Тогда я поправил два релиза из трёх и до s3-proxy не дошёл. После правки чужой домен в рендере clusters/aero/apps не встречается ни разу.
This commit is contained in:
parent
be205b3b14
commit
1f336b6f93
@ -101,6 +101,32 @@ patches:
|
|||||||
path: /spec/values/services/celery/image/name/_default
|
path: /spec/values/services/celery/image/name/_default
|
||||||
value: cr.yandex/crp3ccidau046kdj8g9q/backend:production_f813140d
|
value: cr.yandex/crp3ccidau046kdj8g9q/backend:production_f813140d
|
||||||
|
|
||||||
|
# --- s3-proxy: S3 внутри кластера ------------------------------------------
|
||||||
|
# В base адрес MinIO зашит ВНУТРИ vault-шаблона:
|
||||||
|
# AWS_API_ENDPOINT=https://minio.contour.infra.sarex.tech
|
||||||
|
# Это чужой контур. Через values не перекрыть — значение внутри шаблона
|
||||||
|
# аннотации, поэтому заменяем аннотацию целиком, как у backend и celery.
|
||||||
|
#
|
||||||
|
# Проявлялось не отказом в соединении, а тем, что s3-proxy ДОСТУЧАЛСЯ до
|
||||||
|
# чужого MinIO и получил от него настоящий ответ S3:
|
||||||
|
# SignatureDoesNotMatch: The request signature we calculated does not
|
||||||
|
# match the signature you provided
|
||||||
|
# наружу это выглядело как 500 на каждую плитку /media/orthophotos/...
|
||||||
|
# Наши ключи в чужом хранилище, разумеется, не подходят — и хорошо, что так:
|
||||||
|
# иначе контур молча читал бы и писал в чужой S3.
|
||||||
|
- target: {kind: HelmRelease, name: s3-proxy}
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /spec/values/services/s3-proxy/podAnnotations/_default/vault.hashicorp.com~1agent-inject-template-s3
|
||||||
|
value: |
|
||||||
|
{{- with secret "secrets/data/minio/apps/django" }}
|
||||||
|
AWS_API_ENDPOINT=http://minio.minio.svc.cluster.local:9000
|
||||||
|
{{- $buckets := index .Data.data "buckets" }}
|
||||||
|
AWS_S3_BUCKET={{ if gt (len $buckets) 0 }}{{ index (index $buckets 0) "name" }}{{ else }}django{{ end }}
|
||||||
|
AWS_ACCESS_KEY_ID={{ index .Data.data "access_key" }}
|
||||||
|
AWS_SECRET_ACCESS_KEY={{ index .Data.data "secret_key" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
# --- backend: убираем зависимости, которых в контуре нет ------------------
|
# --- backend: убираем зависимости, которых в контуре нет ------------------
|
||||||
- target: {kind: HelmRelease, name: backend}
|
- target: {kind: HelmRelease, name: backend}
|
||||||
patch: |
|
patch: |
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user