zoukankan      html  css  js  c++  java
  • Kubernetes里的secret最基本的用法

    Secret解决了密码、token、密钥等敏感数据的配置问题,使用Secret可以避免把这些敏感数据以明文的形式暴露到镜像或者Pod Spec中。

    Secret可以以Volume或者环境变量的方式使用。

    使用如下命令行创建一个secret:

    kubectl create secret generic admin-access --from-file=./username.txt --from-file=./password.txt

    输入文件username.txt和password.txt需要手动创建,里面分别维护用于测试的用户名和密码。

    创建成功后,发现secret的类型为Opaque:

    实际上,Kubernetes的secret有三种类型:

    1. Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的 /run/secrets/kubernetes.io/serviceaccount 目录中;

    2. Opaque:base64编码格式的Secret,用来存储密码、密钥等;

    3. kubernetes.io/dockerconfigjson :用来存储私有docker registry的认证信息。

    而我们刚刚创建的secret的类型为Opaque,因此在kubectl get secrets的返回结果里,能看到password和username的值均为base64编码:

    要在pod里消费这个secret也很容易,看一个例子:

    apiVersion: v1
    
    kind: Pod
    
    metadata:
    
    name: secret-pod
    
    spec:
    
    restartPolicy: Never
    
    volumes:
    
    - name: credentials
    
    secret:
    
    secretName: admin-access
    
    defaultMode: 0440
    
    containers:
    
    - name: secret-container
    
    image: alpine:3.8
    
    command: [ "/bin/sh", "-c", "cat /etc/foo/username.txt /etc/foo/password.txt" ]
    
    volumeMounts:
    
    - name: credentials
    
    mountPath: "/etc/foo"
    
    readOnly: true
    

    创建pod,自动执行,通过log命令查看pod的日志:

    发现/bin/sh命令被执行了,pod mount的目录/etc/foo下的username.txt和password.txt通过cat命令显示了输出:

    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    设计模式学习总结
    WCF一个Host实现多契约服务
    通过服务端监控结果,说说WCF的并发处理
    分词中常用算法比较与设想
    SQL Server 2008建立分区表(Table Partition)
    .NET 4中Entity Framework 新增查询与优化
    Web Service 接口大量数据传输解决方案
    面向对象的设计原则与目标[总结篇]
    说说ADO.NET EF 中的实体修改方法
    数据库大型应用解决方案总结
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/9992551.html
Copyright © 2011-2022 走看看