☸️ Как копировать секреты Kubernetes между пространствами имен |

☸️ Как копировать секреты Kubernetes между пространствами имен

Мануал
Как скопировать secret (секрет) Kubernetes из одного пространства имен в другое пространство имен (namespace)?
Secret – это объект Kubernetes, в котором хранятся конфиденциальные данные, такие как пароль, токен или ключ.
В противном случае такая информация могла бы быть помещена в спецификацию пода или образа, но для совместного использования между подами и службами это лучше сделать через объект Kubernetes.
Пользователи кластера Kubernetes могут создавать секреты, а также и система создает некоторые секреты.
В этом руководстве мы скопируем секрет, уже созданный в пространстве имен или проекте при использовании OpenShift, и применим его к другому пространству имен.
Это хорошая практика – например секреты registry, общие учетные данные git, сертификаты и ключи SSL, общие учетные данные API и т. д.
Мы создадим тестовый секрет и покажем, как копировать его из одного проекта в другой.

Создание секретов Kubernetes

Мы создадим секрет с именем пользователя и паролем из файла.

echo -n 'admin' > ./username.txt
echo -n 'Password' > ./password.txt
Запустите команду kubectl create secret, чтобы упаковать эти файлы в секрет и создать объект на сервере API.
$ kubectl create secret generic my-user-pass --from-file=./username.txt --from-file=./password.txt
secret/my-user-pass created

Перечислим наши секреты:

$ kubectl get secrets

Копирование секретов Kubernetes между неймспейсами

Используйте следующий синтаксис команды kubectl, чтобы скопировать секрет из одного пространства имен в другое пространство имен.

kubectl get secret <secret-name> \
  --namespace=<source-nemespace> \
  --export -o yaml | \
  kubectl apply --namespace=<new-namespace> -f -

В моем примере я выполню:

kubectl get secret my-user-pass \
  --namespace=namespace1 \
  --export -o yaml | \
  kubectl apply --namespace=namespace2 -f -

Вывод выполнения команды:

secret/my-user-pass created

Подтвердите создание секрета в пространстве имен.

$ kubectl get secret -n namespace2 my-user-pass
NAME         TYPE   DATA AGE
my-user-pass Opaque 2    38s

Расшифруйте секрет, чтобы подтвердить правильность данных:

secret_name="my-user-pass"
namespace="namespace2"
kubectl get secret -n $namespace $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"

}
Вот как вы можете легко скопировать секрет между пространствами имен в Kubernetes и OpenShift кластерах.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий