Secret

Secret 创立

从文件导入至Secret
$ echo -n 'admin' >./username.txt$ echo -n '1f2d1e2e67df' > ./password.txt$ kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txtsecret/db-user-pass created$ kubectl get secretNAME                  TYPE                                  DATA   AGEdb-user-pass          Opaque                                2      7sdefault-token-58nkl   kubernetes.io/service-account-token   3      13d$ kubectl describe secrets/db-user-passName:         db-user-passNamespace:    defaultLabels:       <none>Annotations:  <none>Type:  OpaqueData====username.txt:  5 bytespassword.txt:  12 bytes
$ kubectl get secret db-user-pass -o yamlapiVersion: v1data:  password.txt: MWYyZDFlMmU2N2Rm  username.txt: YWRtaW4=kind: Secretmetadata:  creationTimestamp: "2020-08-01T13:22:42Z"  managedFields:  - apiVersion: v1    fieldsType: FieldsV1    fieldsV1:      f:data:        .: {}        f:password.txt: {}        f:username.txt: {}      f:type: {}    manager: kubectl    operation: Update    time: "2020-08-01T13:22:42Z"  name: db-user-pass  namespace: default  resourceVersion: "19559"  selfLink: /api/v1/namespaces/default/secrets/db-user-pass  uid: 7de7d667-9fd9-4d6e-8217-907b0715a77dtype: Opaque


Secret挂载

通过volume将Secret挂载到文件中
$ echo -n 'admin' | base64YWRtaW4=$ echo -n '1f2d1e2e67df' | base64MWYyZDFlMmU2N2Rm$ cat secrets.yaml apiVersion: v1kind: Secretmetadata:  name: mysecrettype: Opaquedata:  password: MWYyZDFlMmU2N2Rm  username: YWRtaW4=$ kubectl apply -f ./secrets.yamlsecret/mysecret created$ kubectl get secretNAME                  TYPE                                  DATA   AGEdb-user-pass          Opaque                                2      9m8sdefault-token-58nkl   kubernetes.io/service-account-token   3      13dmysecret              Opaque                                2      4s
$ kubectl get secret mysecret -o yamlapiVersion: v1data:  password: MWYyZDFlMmU2N2Rm  username: YWRtaW4=kind: Secretmetadata:  annotations:    kubectl.kubernetes.io/last-applied-configuration: |      {"apiVersion":"v1","data":{"password":"MWYyZDFlMmU2N2Rm","username":"YWRtaW4="},"kind":"Secret","metadata":{"annotations":{},"name":"mysecret","namespace":"default"},"type":"Opaque"}  creationTimestamp: "2020-08-01T13:31:46Z"  managedFields:  - apiVersion: v1    fieldsType: FieldsV1    fieldsV1:      f:data:        .: {}        f:password: {}        f:username: {}      f:metadata:        f:annotations:          .: {}          f:kubectl.kubernetes.io/last-applied-configuration: {}      f:type: {}    manager: kubectl    operation: Update    time: "2020-08-01T13:31:46Z"  name: mysecret  namespace: default  resourceVersion: "19746"  selfLink: /api/v1/namespaces/default/secrets/mysecret  uid: 9bf3cc24-a53c-4ecc-a9c3-04b03deecca2type: Opaque
# 创立一个Pod来测试是否胜利挂载到文件中$ cat secret-pod.yaml apiVersion: v1kind: Podmetadata:  labels:    name: secret-test  name: secret-testspec:  volumes:  - name: secrets    secret:      secretName: mysecret  containers:  - image: myapp:v1    name: db    volumeMounts:    - name: secrets      mountPath: "/etc/secrets"      readOnly: true
$ kubectl create -f secret-pod.yamlpod/secret-test created$ kubectl exec -ti secret-test -- sh# cat /etc/secrets/usernameadmin# # cat /etc/secrets/password1f2d1e2e67df# # exit

通过valueFrom将secret挂载到环境变量
# 创立一个pod测试是否能胜利从环境变量中读取$ cat pod-secret-import-env.yaml apiVersion: apps/v1kind: Deploymentmetadata:  name: pod-deploymentspec:  replicas: 2  selector:    matchLabels:      app: myapp  template:    metadata:      labels:        app: myapp    spec:      containers:      - name: pod-1        image: myapp:v1        ports:        - containerPort: 80        env:        - name: TEST_USER          valueFrom:            secretKeyRef:              name: mysecret              key: username        - name: TEST_PASSWORD          valueFrom:            secretKeyRef:              name: mysecret              key: password              
$ kubectl apply -f pod-secret-import-env.yamldeployment.apps/pod-deployment created$ kubectl get podNAME                              READY   STATUS      RESTARTS   AGEdapi-test-pod                     0/1     Completed   0          41mdapi-test-pod2                    0/1     Completed   0          44mdapi-test-pod3                    0/1     Completed   0          40mpod-deployment-5f5c6b6d8b-kzg7r   1/1     Running     0          16spod-deployment-5f5c6b6d8b-pzvc8   1/1     Running     0          16ssecret-test                       1/1     Running     0          4m3s
$ kubectl exec -ti pod-deployment-5f5c6b6d8b-kzg7r envPATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binHOSTNAME=pod-deployment-5f5c6b6d8b-kzg7rTERM=xtermTEST_USER=adminTEST_PASSWORD=1f2d1e2e67dfKUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443KUBERNETES_PORT_443_TCP_PROTO=tcpKUBERNETES_PORT_443_TCP_PORT=443KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1KUBERNETES_SERVICE_HOST=10.96.0.1KUBERNETES_SERVICE_PORT=443KUBERNETES_SERVICE_PORT_HTTPS=443KUBERNETES_PORT=tcp://10.96.0.1:443LANG=C.UTF-8PYTHONIOENCODING=UTF-8GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FFPYTHON_VERSION=2.7.18PYTHON_PIP_VERSION=20.0.2PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/d59197a3c169cef378a22428a3fa99d33e080a5d/get-pip.pyPYTHON_GET_PIP_SHA256=421ac1d44c0cf9730a088e337867d974b91bdce4ea2636099275071878cc189eNAME=WorldHOME=/root

【完结】