Сброс пароля 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 в случае, если последний недоступен по какой-либо причине (вы можете комбинировать множество способов аутентификации).

Путь маршрута:

  1. добавить поставщика удостоверений htpasswd во встроенный модуль аутентификации
  2. добавьте роль «кластер-администратор» созданным таким образом пользователям

Пожалуйста, просмотрите подробные шаги в документах по ссылкам выше, чтобы понять, что вы делаете. Вот краткое изложение.

      #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

Наслаждайтесь входом в локальную консоль!

Другие вопросы по тегам