zoukankan      html  css  js  c++  java
  • 第十章 Secret & Configmap (中)

    10.3 在Pod中使用Secret

      10.3.1 Volume方式  

    apiVersion: v1
    kind: Pod
    metaata:
      name: mypod
    spec:
      containers:
      - name: mypod
        image: busybox
        args:
          - /bin/sh
          - -c
          - sleep 10; touch /tmp/healthy; sleep 30000
        volumeMounts:
        - name: foo
          mountPath: "/etc/foo"    # 在容器内部的该路径下
          readOnly: true
      volumes:
      - name: foo
        secret:
          secretName: mysecret     # 指定有前面创建的mysecret
     kubectl apply -f mypod.yml
     pod "mypod" created

    kubeusr@GalaxyKubernetesMaster:~$ kubectl get pods
    NAME                READY     STATUS              RESTARTS   AGE
    mypod               0/1       ContainerCreating   0          7s
    producer-consumer   2/2       Running             4          18h
    kubeusr@GalaxyKubernetesMaster:~$ kubectl get pods
    NAME                READY     STATUS    RESTARTS   AGE
    mypod               1/1       Running   0          14s
    producer-consumer   2/2       Running   4          18h
    kubeusr@GalaxyKubernetesMaster:~$ kubectl exec -it mypod  sh     # 进入容器
    / # cd /etc/foo              # 进入
    /etc/foo # ls
    password  username
    /etc/foo #

    cat /etc/foo/password # 可以直接查看内容,是名文。
    123456

    K8s会在指定的路径下为每条敏感数据创建一个文件,文件名是数据条目的Key, /etc/foo/username和 etc/foo/password, value是以明文的形式存放在文件中。

    我们也可以自定义存放数据的文件名,配置文件如下改动:这时,数据将存放在/etc/foo/my-group/myt-username中。

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      containers:
      - name: mypod
        image: busybox
        args:
          - /bin/sh
          - -c
          - sleep 10; touch /tmp/healthy; sleep 30
        volumeMounts:
        - name: foo
          mountPath: "/etc/foo"
          readOnly: true
      volumes:
      - name: foo
        secret:
          secretName: mysecret
          items:
          - key: username
            path: my-group/my-username
          - key: password
            path: my-group/my-password

         以Voluime方式使用secret支持动态更新:Secret更新后,容器中的数据也会更新。

     10.3.2 环境变量方式

       通过volume方式使用secret,容器必须从文件读取数据,稍显麻烦。

       K8s支持通过环境变量使用secret。

       

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      containers:
      - name: mypod
        image: busybox
        args:
          - /bin/sh
          - -c
          - sleep 10; touch /tmp/healthy; sleep 30000
        env:
          - name: SECRET_USERNAME        # 环境变量名字
            valueFrom:                   
              secretKeyRef:
                name: mysecret           # 从哪个secret来
                key: username            # key
          - name: SECRET_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mysecret
                key: password

    通过环境变量SECRET_USERNAME 和 SECRET_PASSWORD就可以读取到secret的数据,但是注意: 环境变量的方式不支持Secret动态更新。

    -su: kubeusr@GalaxyKubernetesMaster:~$: command not found
    kubeusr@GalaxyKubernetesMaster:~$ pod "mypod" created
  • 相关阅读:
    Scala中有关时间的转换操作
    Scala基础
    IDEA 从github拉取代码与推送代码
    IDEA把项目推送到github
    Flink on yarn-session启动出错 Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.exceptions.YarnException org.apache.hadoop.conf.Configuration
    spark sql导出数据到mysql 出现BLOB类型
    编译Kafka0.11版本遇到的坑!!! 日志无法打印og4j:WARN No appenders could be found for logger(kafka.$Kafka.)
    C#
    js得到分页栏
    js获取浏览器地址栏传递的参数
  • 原文地址:https://www.cnblogs.com/liufei1983/p/10206991.html
Copyright © 2011-2022 走看看