Я пытаюсь настроить базовую аутентификацию на входе. «nginx.ingress.kubernetes.io/auth-secret», который я сохранил в секретах K8s, используя SecretProviderClass. Секрет смонтирован правильно. Согласно этой документации (https://kubernetes.github.io/ingress-nginx/examples/auth/basic/), внутри ключа секрет должен содержать «data.auth». Следовательно, в моем файле развертывания я создал переменную среды с именем «BASIC_AUTH_VALUE», чтобы добиться этого.
env:
- name: SECRET_AUTH
valueFrom:
secretKeyRef:
name: {{ include "ui.fullname" . }}-azure-csi
key: FRONTEND_BASIC_AUTH
optional: false
- name: BASIC_AUTH_VALUE
value: data.auth:$(SECRET_AUTH)
Затем в моем входном файле я установил аннотации, как показано ниже.
nginx.ingress.kubernetes.io/auth-secret: BASIC_AUTH_VALUE
Даже тогда я все еще получаю ошибку 503. Модуль запущен и работает, и в журналах я ничего не могу найти.
Я пробовал несколько вариантов, но пока все тщетно. Любое руководство будет большим подспорьем. Спасибо.
Благодарю за ваш ответ. В моем случае правильной переменной среды является «BASIC_AUTH_VALUE», поскольку я создаю ее, добавляя «data.auth:» к переменной env SECRET_AUTH. Еще одна проблема заключается в том, что я не вижу никаких журналов от nginx. Это затрудняет отладку.
Можете ли вы поделиться используемой конфигурацией входа, чтобы было полезно решить эту проблему.
Я нашел решение. Мне пришлось адаптировать секретные объекты SecretProviderClass, как показано ниже.
secretObjects:
- data:
{{- range $secret := .Values.azureSecretsCSI.secrets }}
- key: {{ $secret.k8sName }}
objectName: {{ $secret.azName }}
{{- end }}
secretName: {{ include "ui.fullname" . }}-auth-azure-csi
type: Opaque
Где «{{ $secret.k8sName }}» должно быть «auth», получено из файла values.yaml, как показано ниже.
azureSecretsCSI:
tenantId: XXX
kvName: XXX
secrets:
- azName: XXX
k8sName: auth
А затем в аннотациях входа добавьте имя класса секретного провайдера вместо секретного имени или переменной среды (что я пытался сделать и что не работало)
nginx.ingress.kubernetes.io/auth-secret: {{ include "ui.fullname" . }}-auth-azure-csi
Убедитесь, что имя переменной среды и имя аннотации совпадают, иначе аннотация не будет применена правильно. Вы можете попробовать, как показано ниже:
nginx.ingress.kubernetes.io/auth-secret: SECRET_AUTH