Адаптировав руководство, вы можете указать несколько имен пользователей и паролей в auth
файл, который вы используете для генерации основного секрета аутентификации. В частности, если вы запустите команду htpasswd
без флага -c
, например, htpasswd <filename> <username>
он добавит запись в файл, а не создаст новый файл с нуля:
$ htpasswd -c auth foo
New password: <bar>
Re-type new password: <bar>
Adding password for user foo
$ cat auth
foo:$apr1$isCec65Z$JNaQ0GJCpPeG8mR1gYsgM1
$ htpasswd auth user2
New password: <pass2>
Re-type new password: <pass2>
Adding password for user user2
$ cat auth
foo:$apr1$isCec65Z$JNaQ0GJCpPeG8mR1gYsgM1
user2:$apr1$.FsOzlqA$eFxym7flDnoDtymRLraA2/
Если вы уже создали секрет с помощью данной команды:
$ kubectl create secret generic basic-auth --from-file=auth
Затем вы можете обновить секрет с помощью этого трюка:
$ kubectl create secret generic basic-auth --from-file=auth\
--dry-run -o yaml | kubectl apply -f -
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
secret/basic-auth configured
Вы можете подтвердить, что секрет сработал:
$ kubectl get secret basic-auth -ojsonpath={.data.auth} | base64 -D
foo:$apr1$isCec65Z$JNaQ0GJCpPeG8mR1gYsgM1
user2:$apr1$.FsOzlqA$eFxym7flDnoDtymRLraA2/
Наконец, вы можете проверить, работает ли базовая аутентификация как с именами пользователей, так и с паролями:
$ curl http://<minikube_ip>/ -H 'Host: foo.bar.com' \
-s -w"%{http_code}" -o /dev/null
401
$ curl http://<minikube_ip>/ -H 'Host: foo.bar.com' \
-u 'wronguser:wrongpass' \
-s -w"%{http_code}" -o /dev/null
401
$ curl http://<minikube_ip>/ -H 'Host: foo.bar.com' \
-u 'foo:bar' \
-s -w"%{http_code}" -o /dev/null
200
$ curl http://<minikube_ip>/ -H 'Host: foo.bar.com' \
-u 'user2:pass2' \
-s -w"%{http_code}" -o /dev/null
200
person
Amit Kumar Gupta
schedule
14.08.2019
htpasswd
без флага-c
, например,htpasswd <filename> <username>
он добавит запись в файл, а не создаст новый файл с нуля. Затем вы можете попробовать обновитьSecret
содержимым того же файла с помощью этого трюка. Похоже, что аннотацияauth-secret
должна быть секретом, который содержит имя пользователя s и пароль s (выделено множественное число); см. здесь а>. - person Amit Kumar Gupta   schedule 14.08.2019