Как я понимаю, вместо data
вам нужно работать с stringData
, что позволит вам предоставлять секретные данные в виде некодированных строк.
stringData
- это удобное поле только для записи который не выводится при получении секретов
Пример :
secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret-test
stringData:
CassandraSettings__CassandraPassword: Passw0rd
Создать секрет
$ kubectl create -f secret.yaml
secret/mysecret-test created
$ kubectl describe secrets mysecret-test
Name: mysecret-test
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
CassandraSettings__CassandraPassword: 8 bytes
Извлечь секретный yaml и ЗАМЕТИТЬ, что поле данных зашифровано для вас base64 .
$ kubectl get secrets mysecret-test -o yaml
apiVersion: v1
data:
CassandraSettings__CassandraPassword: UGFzc3cwcmQ=
kind: Secret
metadata:
creationTimestamp: "2020-01-30T13:24:11Z"
name: mysecret-test
namespace: default
resourceVersion: "3733024"
selfLink: /api/v1/namespaces/default/secrets/mysecret-test
uid: 718278c5-0e8e-4861-ae23-7e107209c338
type: Opaque
Значение поля кодированных данных такое же, как и переданное поле stringData
быстрая проверка, как показано ниже
$ echo UGFzc3cwcmQ= | base64 -d
Passw0rd
Или используйте императивную команду , например, для генерации secret.yaml с закодированным значением переданного литерала. Ниже я определил один из литералов как переменную экспорта для теста.
$ export PASS=Passw0rd
$ echo $PASS
Passw0rd
$ kubectl create secret generic mysecret --from-literal=CassandraSettings__CassandraPassword=$PASS--dry-run -o yaml > secret.yaml
$ cat secret.yaml
apiVersion: v1
data:
CassandraSettings__CassandraPassword: UGFzc3cwcmQ=
kind: Secret
metadata:
creationTimestamp: null
name: mysecret