• 第十二章 存储之 Secret


    1Secret 存在意义

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

    2Secret 有三种类型

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

    ② Opaquebase64编码格式的Secret,用来存储密码、密钥等

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

    3Service Account

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

     

    4Opaque Secret

    Ⅰ、创建说明

    Opaque 类型的数据是一个 map 类型,要求 value base64 编码格式:

    $ echo-n"admin" | base64

    YWRtaW4=

    $ echo-n"1f2d1e2e67df" | base64

    MWYyZDFlMmU2N2Rm

    解密

     

    secrets.yml

    apiVersion: v1

    kind: Secret

    metadata:

    name: mysecret

    type: Opaque

    data:

     password: MWYyZDFlMmU2N2Rm

     username: YWRtaW4=

    II、使用方式

    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.atguigu.com/library/myapp:v1

     name: db

     volumeMounts:

     - name: secrets

     mountPath: "

    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.atguigu.com/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 

    5kubernetes.io/dockerconfigjson

    使用 Kuberctl 创建 docker registry 认证的 secret

    $ kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAILsecret "myregistrykey" created.

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

    apiVersion: v1

    kind: Pod

    metadata:

    name: foo

    spec:

     containers:

     - name: foo

    image: roc/awangyang:v1

     imagePullSecrets:

    - name: myregistrykey

  • 相关阅读:
    vue.js 快速入门
    简洁的MVC思想框架——Nancy(Post操作与外部引用css和JS)
    简洁的MVC思想框架——Nancy(环境配置与Get操作)
    iOS开发之注册推送通知权限
    iOS开发之数组排序
    iOS开发之打包上传报错: ERROR ITMS-90087/ERROR ITMS-90125
    iOS开发之HTTP与HTTPS网络请求
    iOS开发之GCD同步主线程、异步主线程
    iOS开发之获取时间戳方法
    iOS开发之将字典、数组转为JSON字符串方法
  • 原文地址:https://www.cnblogs.com/LiuQizhong/p/11608944.html
Copyright © 2020-2023  润新知