zoukankan      html  css  js  c++  java
  • 配置管理系列(一) Secret

    一、简介

    Secret对象类型用来保存敏感信息,解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod中。Secret 可以以两种方式来进行使用:

    • 数据卷(Volume)
    • 环境变量

    敏感信息以base64编码格式存储,之后Pod会自动读取明文。

    二、Secret的创建与使用

    (一)创建Secret加密数据

    一般数据加密使用base64编码,所以可以先使用base64编码对用户名和密码进行加密:

    # 对用户名root 密码123进行加密
    [root@k8smaster ~]# echo -n "root" | base64
    cm9vdA==
    [root@k8smaster ~]# echo -n "123" | base64
    MTIz

     secret.yaml文件创建:

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    type: Opaque
    data:
      username: cm9vdA==
      password: MTIz

    执行:

    [root@k8smaster ~]# kubectl create -f secret.yaml

    查看:

    [root@k8smaster ~]# kubectl get Secret 
    NAME                  TYPE                                  DATA   AGE
    default-token-mtnzx   kubernetes.io/service-account-token   3      66d
    mysecret              Opaque                                2      8m35s

    (二)使用

    1、以环境变量的形式使用

    secret_var.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      containers:
      - name: nginx
        image: nginx
        env:
          - name: SECRET_USERNAME
            valueFrom:
              secretKeyRef:
                name: mysecret
                key: username
          - name: SECRET_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mysecret
                key: password

    其中:

    • 声明了两个环境变量 SECRET_USERNAME、SECRET_PASSWORD
    • secretKeyRef 中的name是之前创建的Secret名称
    • key 是之前创建Secret中的username和password

    执行:

    [root@k8smaster ~]# kubectl create -f secret_var.yaml

    查看:

    [root@k8smaster ~]# kubectl get pods
    NAME    READY   STATUS    RESTARTS   AGE
    mypod   1/1     Running   0          4m4s

    此时可以进入Pod中使用环境变量:

    # 自动将base64密码进行反解
    [root@k8smaster ~]# kubectl exec -it mypod bash
    kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
    
    root@mypod:/# echo $SECRET_USERNAME
    root
    root@mypod:/# echo $SECRET_PASSWORD
    123

    2、以数据卷形式使用

    基于secret.yaml文件之上进行操作,创建secret_volume.yaml文件:

    apiVersion: v1
    kind: Pod
    metadata:
      name: volpod
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: foo
          mountPath: "/etc/foo"
          readOnly: true
      volumes:
      - name: foo
        secret:
          secretName: mysecret

    使用:

    [root@k8smaster ~]# kubectl exec -it volpod bash
    ...
    root@volpod:/# ls /etc/foo
    password  username
    root@volpod:/# cat /etc/foo/username 
    root
    root@volpod:/# cat /etc/foo/password 
    123
    作者:iveBoy
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    [组合数取模] 方法汇总
    机房收费系统(VB.NET)——存储过程实战
    Remove Duplicates from Sorted Array
    Android ListFragment实例Demo(自己定义适配器)
    混合模式程序集是针对“v1.1.4322”版的执行时生成的,在没有配置其它信息的情况下,无法在 4.0 执行时中载入该程序集。
    小编接地气——第六届中国云计算大会攻略Q&A
    有统计的百度分享
    Yii CGridView 基本使用(三)关联表相关字段搜索
    扯谈网络编程之Tcp SYN flood洪水攻击
    多平台响应键盘事件!(适用于Cocos2dx 3.0 alpha以上版本号)
  • 原文地址:https://www.cnblogs.com/shenjianping/p/14908620.html
Copyright © 2011-2022 走看看