IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> CKS学习笔记-Secret 练习 -> 正文阅读

[系统运维]CKS学习笔记-Secret 练习

官网有关信息https://kubernetes.io/zh/docs/concepts/configuration/secret/

概述

什么是Secret

Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 使用 Secret 意味着你不需要在应用程序代码中包含机密数据。

由于创建 Secret 可以独立于使用它们的 Pod, 因此在创建、查看和编辑 Pod 的工作流程中暴露 Secret(及其数据)的风险较小。 Kubernetes 和在集群中运行的应用程序也可以对 Secret 采取额外的预防措施, 例如避免将机密数据写入非易失性存储。

Secret 类似于 ConfigMap 但专门用于保存机密数据。

注意:
默认情况下,Kubernetes Secret 未加密地存储在 API 服务器的底层数据存储(etcd)中。 任何拥有 API 访问权限的人都可以检索或修改 Secret,任何有权访问 etcd 的人也可以。 此外,任何有权限在命名空间中创建 Pod 的人都可以使用该访问权限读取该命名空间中的任何 Secret; 这包括间接访问,例如创建 Deployment 的能力。

为了安全地使用 Secret,请至少执行以下步骤:

  • 为 Secret 启用静态加密;
  • 启用或配置 RBAC 规则来限制读取 Secret 的数据(包括通过间接方式)。
  • 在适当的情况下,还可以使用 RBAC 等机制来限制允许哪些主体创建新 Secret 或替换现有 Secret。

Secret 的类型

创建 Secret 时,你可以使用 Secret 资源的 type 字段, 或者与其等价的 kubectl 命令行参数(如果有的话)为其设置类型。 Secret 的 type 有助于对不同类型机密数据的编程处理。

Kubernetes 提供若干种内置的类型,用于一些常见的使用场景。 针对这些类型,Kubernetes 所执行的合法性检查操作以及对其所实施的限制各不相同。

内置类型用法
Opaque用户定义的任意数据
kubernetes.io/service-account-token服务账号令牌
kubernetes.io/dockercfg ~/.dockercfg文件的序列化形式
kubernetes.io/dockerconfigjson ~/.docker/config.json文件的序列化形式
kubernetes.io/basic-auth用于基本身份认证的凭据
kubernetes.io/ssh-auth用于 SSH 身份认证的凭据
kubernetes.io/tls用于 TLS 客户端或者服务器端的数据
bootstrap.kubernetes.io/token启动引导令牌数据

示例

要求

  • 在namespace istio-system 里面有secret db1-test,把它的username和password存到不同的文件中。
  • 在namespace istio-system 里面新建secret db2-test,username:production、password:Kvm123
  • 创建一个pod,通过volume挂载secret

Pod name: secret-pod
Namespace: istio-system
Container name: dev-container
Volume name: secret-volume
Mount path: /etc/secret

实验步骤

  1. 查看现有namespace istio-system的db1-test

root@master-01:~/tmp# kubectl get secrets db1-test -n istio-system -o yaml
apiVersion: v1
data:
password: Vk13YXJlMSE=
username: dnNwaGVyZQ==
kind: Secret
metadata:
creationTimestamp: “2021-10-21T13:34:26Z”
name: db1-test
namespace: istio-system
resourceVersion: “344387”
uid: aa427ece-fe9a-4249-a72a-74bda68317b3
type: Opaque

  1. 把Secret中的username和password导入文件

root@master-01:~/tmp# echo “dnNwaGVyZQ==” | base64 -d > old-user.txt
root@master-01:~/tmp# echo “Vk13YXJlMSE=” | base64 -d > old-pass.txt
root@master-01:~/tmp# cat old-user.txt
vsphere
root@master-01:~/tmp# cat old-pass.txt
VMware1!

  1. 创建新的Secret

root@master-01:~/tmp# kubectl create secret generic db2-test --from-literal=username=production --from-literal=password=Kvm123 -n istio-system
secret/db2-test created
root@master-01:~/tmp# kubectl get secrets -n istio-system db2-test -o yaml
apiVersion: v1
data:
password: S3ZtMTIz
username: cHJvZHVjdGlvbg==
kind: Secret
metadata:
creationTimestamp: “2021-10-21T14:43:28Z”
name: db2-test
namespace: istio-system
resourceVersion: “350271”
uid: 4a7b64d8-47d6-46af-bbd3-9647d2a9c883
type: Opaque

  1. 编写Pod的yaml文件
apiVersion: v1
kind: Pod
metadata:
  name: secret-pod
  namespace: istio-system
spec:
  containers:
  - name: dev-container
    image: nginx
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secret"
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: db2-test
  1. 应用pod的yaml文件并查看
root@master-01:~/tmp# kubectl get  po secret-pod -n istio-system -o yaml
apiVersion: v1
kind: Pod
metadata:
  annotations:
    ......
  creationTimestamp: "2021-10-21T14:47:02Z"
  name: secret-pod
  namespace: istio-system
......
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: dev-container
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /etc/secret
      name: secret-volume
      readOnly: true
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-vlxrp
      readOnly: true
  ......
  nodeName: worker-02
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  ......
  volumes:
  - name: secret-volume
    secret:
      defaultMode: 420
      secretName: db2-test
  - name: kube-api-access-vlxrp
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          expirationSeconds: 3607
          path: token
      - configMap:
          items:
          - key: ca.crt
            path: ca.crt
          name: kube-root-ca.crt
      - downwardAPI:
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
            path: namespace
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 11:20:10  更:2021-10-22 11:21:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:43:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码