Конфиденциальная информация, такая как пароли, ключи SSH, учетные данные API и токены OAuth, хранятся в Kubernetes как секреты (secrets).
Недавно мы сделали руководство о том, как скопировать секрет Kubernetes из одного пространства имен в другое.
Когда вам нужно подтвердить фактические значения секрета, вы можете декодировать данные base64.
В этом кратком руководстве мы покажем вам, как декодировать секрет base64 в Kubernetes с помощью команды kubectl.
Для демонстрации мы создадим простой секрет с именем пользователя и паролем для базы данных.
echo -n 'admin' > ./username.txt
echo -n 'Password' > ./password.txt
Запустите команду kubectl create secret, чтобы создать объект секрета на сервере Kubernetes API.
$ kubectl create secret generic my-user-pass --from-file=./username.txt --from-file=./password.txt
secret/my-user-pass created
Вы можете подтвердить, что объект был успешно создан, выполнив следующую команду kubectl:
$ kubectl get secret
Расшифруйте секретные данные:
kubectl get secret $secret_name -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'
Это результат выполнения моей команды:
password.txt: Password
username.txt: admin
Если у вас есть jq, вы можете использовать следующую команду для декодирования.
$ kubectl get secret my-user-pass -o json | jq '.data | map_values(@base64d)'
{
"password.txt": "Password",
"username.txt": "admin"
}
Установите jq с помощью команды:
--- Ubuntu / Debian ---
$ sudo apt install jq
--- CentOS / Fedora ---
$ sudo yum install jq
Вот как вы можете легко выводить секреты, закодированные с помощью base64, в Kubernetes.