Secrets in Kubernetes


Делаю: 08.04.2019


По материалам из видео индуса:

https://www.youtube.com/watch?v=ch9YlQZ4xTc&list=PL34sAs7_26wNBRWM6BDhnonoA5FMERax0&index=15


Подготовили кластер и окружение как здесь.


Secrets


Создать в командной строке

$ kubectl create secret generic secret-demo --from-literal=username='kubeadmin' --from-literal=password='mypassword'

$ kubectl get secrets
NAME                  TYPE                                  DATA   AGE
default-token-sljtn   kubernetes.io/service-account-token   3      26m
secret-demo           Opaque                                2      12s

$ kubectl describe secret secret-demo

$ kubectl get secrets -o yaml

$ echo 'bXlwYXNzd29yZA==' | base64 --decode
mypassword


Создать из файлов

$ vi username
username

$ vi password
password

$ kubectl create secret generic secret-demo --from-file=username=./username --from-file=password


Закодировать переменные

$ echo -n 'kubeadmin' | base64
a3ViZWFkbWlu

$ echo -n 'mypassword' | base64
bXlwYXNzd29yZA==


$ rm -rf ~/tmp/k8s/secrets && mkdir -p ~/tmp/k8s/secrets && cd ~/tmp/k8s/secrets

$ curl -LJO https://bitbucket.org/sysadm-ru/kubernetes/raw/faf2f86a2c1bb82053c5aba9ea7c96463e4e61b0/yamls/5-secrets.yaml


$ vi 5-secrets.yaml

apiVersion: v1
kind: Secret
metadata:
  name: secret-demo
type: Opaque
data:
  username: a3ViZWFkbWlu
  password: bXlwYXNzd29yZA==


$ kubectl get secrets
NAME                  TYPE                                  DATA   AGE
default-token-xhlgl   kubernetes.io/service-account-token   3      63m


$ kubectl create -f 5-secrets.yaml


$ kubectl get secrets
NAME                  TYPE                                  DATA   AGE
default-token-xhlgl   kubernetes.io/service-account-token   3      64m
secret-demo           Opaque                                2      12s


$ kubectl describe secret secret-demo
Name:         secret-demo
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password:  10 bytes
username:  9 bytes


$ kubectl delete secret secret-demo


Как пользоваться

$ kubectl create -f https://bitbucket.org/sysadm-ru/kubernetes/raw/faf2f86a2c1bb82053c5aba9ea7c96463e4e61b0/yamls/5-pod-secret-env.yaml

$ kubectl get pods
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   0          11s

$ kubectl exec -it busybox -- sh

/ # env | grep myusername
myusername=kubeadmin

/ # echo $myusername
kubeadmin

ctrl^D

$ kubectl delete pod busybox


Еще пример

$ kubectl create -f https://bitbucket.org/sysadm-ru/kubernetes/raw/faf2f86a2c1bb82053c5aba9ea7c96463e4e61b0/yamls/5-pod-secret-volume.yaml

$ kubectl exec -it busybox -- sh

/ # env | grep myusername
(ничего)

/ # ls /mydata
password  username

# cat /mydata/username; echo
kubeadmin

# cat /mydata/password; echo
mypassword

ctrl^D


Пример с обновлением пароля

Обновляем 5-secrets.yaml

$ kubectl apply -f 5-secrets.yaml


Удаляем

$ kubectl delete pod busybox