zoukankan      html  css  js  c++  java
  • Kubernetes的Secret对象使用

    Secret可以把想要访问的加密数据,存放到Etcd中,然后Pod可以通过的Volume的方式,访问到Secret保存的信息 ,每当数据修改的时候,Pod挂载的Secret文件也会被修改,特别适合用来存放账户密码

    一、创建Secret对象

    1. 通过文件创建

    生成两个文件,分别是username.txt和password.txt

    echo "chenqionghe" > ./username.txt
    echo "111111" > ./password.txt
    

    创建

    kubectl create secret generic user --from-file=./username.txt
    kubectl create secret generic pass --from-file=./password.txt
    

    2. 通过yaml创建

    注意:值必须是base64转码

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    type: Opaque
    data:
      user:  Y2hlbnFpb25naGUK
      pass: MTExMTExCg==
    

    创建

    kubectl apply -f mysecret.yaml
    

    二、获取secret对象

    root@VM-0-8-ubuntu:/home/ubuntu/project-volume# kubectl get secrets
    NAME TYPE DATA AGE
    default-token-gqfrx kubernetes.io/service-account-token 3 20d
    mysecret Opaque 2 1m
    pass Opaque 1 6m
    user Opaque 1 6m
    

    三、通过pod使用secret示例

    这里指定了volume是projected类型,引用的是secret的user和pass,挂载路径为/projected-volume

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-projected-volume 
    spec:
      containers:
      - name: test-secret-volume
        image: busybox
        args:
        - sleep
        - "86400"
        volumeMounts:
        - name: mysql-cred
          mountPath: "/projected-volume"
          readOnly: true
      volumes:
      - name: mysql-cred
        projected:
          sources:
          - secret:
              name: user
          - secret:
              name: pass
    

    执行创建

    kubectl apply -f test-projected-volume.yaml
    

    查看pod已经创建出来

    root@VM-0-8-ubuntu:/home/ubuntu/project-volume# kubectl get pod
    NAME READY STATUS RESTARTS AGE
    test-projected-volume 1/1 Running 0 5m
    

    再进入pod内查看,看到文件已经存在,并且内容和设置的一样

    root@VM-0-8-ubuntu:/home/ubuntu/project-volume# kubectl exec -it test-projected-volume -- /bin/sh
    / # ls /projected-volume/
    password.txt username.txt
    / # cat /projected-volume/username.txt
    chenqionghe
    

    然后我们修改一下username的secret文件,将chenqionghe修改为cqh(对应的base编码为Y3FoCg==)

    kubectl edit secret user
    

    修改内容如下

    apiVersion: v1
    data:
      username.txt: Y3FoCg==
    kind: Secret
    metadata:
      creationTimestamp: 2019-09-27T09:14:00Z
      name: user
      namespace: default
      resourceVersion: "2108808"
      selfLink: /api/v1/namespaces/default/secrets/user
      uid: 24566f8f-e107-11e9-8c22-f242c645cfec
    type: Opaque
    

    再次查看pod中挂载的文件,已经发生变化

    root@VM-0-8-ubuntu:/home/ubuntu# kubectl exec -it test-projected-volume -- cat /projected-volume/username.txt
    cqh
    
  • 相关阅读:
    Ymodem协议(参考STM32)
    嵌入式 Linux 对内存的直接读写(devmem)
    四则运算表达式分解,前中后缀表达式(栈的应用)
    I2C总线的仲裁机制
    用例图【图7】--☆
    顺序图【6】--☆☆
    部署图【图5】--☆
    组件图【图4】--☆
    活动图、泳道【图1】--☆☆
    Mybatis增删改查(CURD)
  • 原文地址:https://www.cnblogs.com/chenqionghe/p/11601049.html
Copyright © 2011-2022 走看看