• kubernetes 配置示例


    Secret 的作用,是帮你把 Pod 想要访问的加密数据,存放到 Etcd 中。然后,你就可以通过在 Pod 的容器里挂载 Volume 的方式,访问到这些 Secret 里保存的信息了。

    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

    在这个 Pod 中,定义了一个简单的容器。它声明挂载的 Volume,并不是常见的 emptyDir 或者 hostPath 类型,而是 projected 类型。而这个 Volume 的数据来源(sources),则是名为 user 和 pass 的 Secret 对象,分别对应的是数据库的用户名和密码。创建两个文件(这里是 username.txt 和 password.txt),两个文件里分别放入用户名和密码。

     这里命令中的 user 和 pass 是上面 yaml  文件中定义的两个 secret 的 name 的值。

    创建上面定义的这个 pod,等状态为 running 后,运行下面的命令,进入容器

    kubectl exec -it test-projected-volume -- /bin/sh

     可以看到用户名和密码被明文放到了容器中。

    另外,除了命令方式创建  Secret 之外,还可以使用如下的方式:

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    type: Opaque
    data:
      user: bXktbXlzcWwtdXNlcg==
      pass: bXktbXlzcWwtcGFzcw==

    这里 data 部分的两个key 的值是 base64 转码后的值。 可以使用命令(echo -n 'my-mysql-user' | base64) 生成一个字符串的 base64 编码。这种方式生成的 Secret ,开头的 yaml 定义就要换一种写法了

    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
        secret:
          secretName: mysecret

    这里的 spec.volumes.secret.secretName 的值就要和上面 Secret 定义里的 metadata.name 一致了。挂载进容器的文件名也和上面的略有不同。

  • 相关阅读:
    Java中的String为什么是不可变的? -- String源码分析
    理解值和对象-快照图
    线程Thread
    Spring Cloud中,如何解决Feign/Ribbon第一次请求失败的问题?
    不要做一个浮躁的程序员
    关于在springboot中利用@Value注解读取配置文件中的属性值得问题
    Intellij Idea expired
    javascript事件之:谈谈自定义事件
    javascript事件之: 事件冒泡, 事件捕获 ,阻止默认事件
    windows7自带远程连接工具连接不上远程,只有windows服务器版本能连接tsmmc能连接的问题
  • 原文地址:https://www.cnblogs.com/langfanyun/p/15044530.html
Copyright © 2020-2023  润新知