Сброс пароля kubeadmin в ОКД 4.7
Я пытался найти пароль в.openshift_install.log
файл, и я что-то нашел, но это не сработало. Я попыталсяoc get secrets kubeadmin -n kube-system -ojsonpath='{.data.kubeadmin}' | base64 --decode && echo ""
и это тоже не сработало. Как я могу сбросить пароль kubeadmin с помощью oc ?? Спасибо
1 ответ
Во-первых, давайте напомним, что если вы внимательно выполните шаги установки, в какой-то момент вам придется установить инструмент CLI «oc» и использовать его для «входа» в ваш кластер через:
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig
# replace <installation_directory> by the directory where you created your
# installation artefacts with the openshift-install prog
$ oc whoami
это подтвердит, что вы находитесь под именем «system:admin»
С этого момента найти URL-путь к веб-консоли довольно легко, просто выполните вариант:
$ oc whoami --show-console
и в вашем <каталог_установки> есть файл, добавленный установщиком:
$ cat <installation_directory>/auth/kubeadmin-password
Этот последний файл на самом деле рассматривается как слабость безопасности и может исчезнуть в будущих выпусках (RedHat рекомендует удалить эту учетную запись ).
Следовательно, существует альтернативный способ определить несколько дополнительных учетных записей пользователей «admin» из командной строки «oc», что в любом случае намного лучше для совместного использования задач администрирования OC Cluster с коллегами, каждый из которых имеет свою личность, вместо того, чтобы делиться паролем kubeadmin, а также с методом входа, который не будет зависеть от наличия IDP в случае, если последний недоступен по какой-либо причине (вы можете комбинировать множество способов аутентификации).
Путь маршрута:
- добавить поставщика удостоверений htpasswd во встроенный модуль аутентификации
- добавьте роль «кластер-администратор» созданным таким образом пользователям
Пожалуйста, просмотрите подробные шаги в документах по ссылкам выше, чтобы понять, что вы делаете. Вот краткое изложение.
#ensure you are properly logged in for the next 'oc' CLI commands
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig
$ oc whoami
system:admin
#ensure the authentication operator is up and running
$ oc get clusteroperators
NAME VERSION AVAILABLE etc...
authentication 4.12.0 True etc...
...
#ensure authentication API pods are deployed
$ oc get pods -n openshift-authentication
NAME READY STATUS etc...
oauth-openshift-84955b4d7c-4d2dc 1/1 Running
oauth-openshift-84955b4d7c-4wx8v 1/1 Running
oauth-openshift-84955b4d7c-7pnqj 1/1 Running
# create an initial htpasswd file (if you already have one, or want to update passwords, omit the 'c' arg)
$ htpasswd -cB users.htpasswd <myLoginNameHere>
# your are prompted for a password twice
# repeat the command for additional users' login names
# prepare the file for inclusion as a string attribute in YAML
$ base64 -w0 users.htpasswd >users.htpasswd.b64
# edit a inject-htpass-secret.yaml file with the following content
apiVersion: v1
kind: Secret
metadata:
name: htpass-secret
namespace: openshift-config
type: Opaque
data:
htpasswd: 'YmVybmFyZG... you paste here between quotes the B64 content of your users.htpasswd.b64 file ... ZtQ1MwaEdDCg=='
# create or update the secret 'htpass-secret' with the new htpasswd artefact
$ oc apply -f inject-htpass-secret.yaml
если вам просто нужно обновить пользователей/пароли в существующей конфигурации, этого достаточно.
#check you don't have yet a htpasswd identity provider configured
$ oc describe oauth.config.openshift.io/cluster
# or alternatively:
$ oc edit oauth.config.openshift.io cluster
# and you shall see that the Spec attribute is an empty object
#Then, add the provider. Edit an config-OAuth-id-provider.yaml file as below.
# you can only customize the name for your provider, here 'htpasswd_provider'
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: htpasswd_provider
mappingMethod: claim
type: HTPasswd
htpasswd:
fileData:
name: htpass-secret
# and apply (or update the htpasswd_provider ! ...or add it!)
$ oc apply -f config-OAuth-id-provider.yaml
Наконец, добавьте пользователям роль администратора кластера.
#each user must login once first,
# which is the way for the authentication operator to discover that a new user exists
#then, add the cluster role
$ oc adm policy add-cluster-role-to-user cluster-admin <userLoginNameHere>
#if you are already logged in, you may see your web console updating its display instantly
Наслаждайтесь входом в локальную консоль!