zoukankan      html  css  js  c++  java
  • Kubernetes---存储--Secret

    在k8s中ConfigMap可以去保存配置文件以及一些数据,这些数据可以被导入到Pod内部成为环境变量或者文件,从而可以达到热更新的目的。但这些文件在k8s中是以明文的形式保存的。

    密码文件、密钥文件这些类型的文件通过ConfigMap去保存就不是很合适,在k8s,还有一种保存机制,Secret。

    ⒈存在意义

      Secret解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec 中。Secret 可以以Volume或者环境变量的方式使用。

    ⒉Secret类型

      Secret有三种类型:

      1,Service Account

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

      2,Opaque

        base64编码格式的Secret,用来存储密码、密钥等,注意加密程度并不高。

      3,kubernetes.io/dockerconfigjson

        用来存储私有docker registry的认证信息

    ⒊Service Account

      Service Account用来访问Kubernetes API,由Kubernetes 自动创建,并且会自动挂载到Pod的 /run/secrets/kubernetes.io/serviceaccount 目录中,不需要我们手动去管理和创建。

      我们可以查看一下

      1.新建pod

    kubectl run nginx --image nginx

      2.查看所有pod

    kubectl get pods

      3.查看指定pod

    kubectl exec nginx-3137573019-md1u2 ls /run/secrets/kubernetes.io/serviceaccount

    ⒋Opaque Secret

      1.创建说明

      Opaque类型的数据是一个 map类型,要求value是 base64 编码格式
      **输出指定字符的base64加密形式
    echo -n "coreqi" | base64

      **输出指定字符的base64解密形式

    echo -n "MWYyZDF1MmU2N2Rm" | base64 -d

      2.secrets.yml

    apiVersion: v1 
    kind: Secret 
    metadata:
      name: mysecret 
    type: Opaque 
    data:
      password: MWYyZDF1MmU2N2Rm 
      username: YWRtaW4=

      3.使用方式(两种)

        1、将Secret挂载到Volume中,保存成文件

    apiVersion: v1 
    kind: Pod 
    metadata:
      labels:
        name: seret-test 
      name: seret-test 
    spec:
      volumes:
      - name: secrets 
        secret:
          secretName: mysecret 
      containers:
      - image: hub.coreqi.cn/library/myapp:v1 
        name: db 
        volumeMounts:
        - name: secrets 
          mountPath: "/etc/secrets"
          readOnly: true

        2、将Secret导出到环境变量中

    apiVersion: extensions/v1beta1 
    kind: Deployment 
    metadata:
      name: pod-deployment 
    spec:
      replicas: 2 
      template:
        metadata:
          labels:
            app: pod-deployment 
        spec:
          containers:
          - name: pod-1 
            image: hub.coreqi.cn/library/myapp:v1 
            ports:
            - containerPort: 80 
            env:
            - name: TEST_USER 
              valueFrom:
                secretKeyRef:
                  name: mysecret 
                  key: username 
            - name: TEST_PASSWORD 
              valueFrom:
                secretKeyRef:
                  name: mysecret 
                  key: password

    ⒌kubernetes.io/dockerconfigjson

      1.使用Kuberctl 创建docker registry 认证的 secret
    kuberctl create secret docker-registry myregistrykey --docker-server=hub.coreqi.cn --docker-username=fanqi --docker-password=coreqiadmin--docker-email=10000@qq.com

      2.在创建 Pod 的时候,通过 imagePullSecrets 来引用刚创建的`myregistrykey `

    apiVersion: v1 
    kind: Pod 
    metadata:
      name: foo 
    spec:
      containers:
        - name: foo 
          image: roc/coreqi:v1 
      imagePullSecrets:
        - name: myregistrykey
     
  • 相关阅读:
    JQuery帮助文档整理
    将table信息导出到excel
    jquery 选择器
    程序不小心出现死锁的解决方法
    兼容IE firefox 的全英文自动换行
    第三周2
    Jquery操作Select集锦
    Silverlight初学之:如果调用Silverlight项目中不同的控件
    【转载】很好的解决了asp.net页面ViewState过大的问题
    js得到url的各个部分【转】
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/12809196.html
Copyright © 2011-2022 走看看