K8S第一讲 Kubernetes之Secret详解

news/2024/6/3 17:26:22 标签: kubernetes, java, 容器

Secret详解

secret用来保存小片敏感数据的k8s资源,例如密码,token,或者秘钥。这类数据当然也可以存放在Pod或者镜像中,但是放在Secret中是为了更方便的控制如何使用数据,并减少暴露的风险。

  • 用户可以创建自己的secret,系统也会有自己的secret。
  • Pod需要先引用才能使用某个secret

secret仅提供有限安全

  • 协作时防止机密数据泄露
  • 为secret资源设置单独安全访问策略

Pod有2种方式来使用secret:

    1. 作为volume的一个域被一个或多个容器挂载
    1. 在拉取镜像的时候被kubelet引用。
创建一个secret.yaml文件,内容用base64编码:明文显示容易被别人发现,这里先转码。
echo -n 'admin' | base64
YWRtaW4=
echo -n '1f2d1e2e67df' | base64
MWYyZDFlMmU2N2Rm



vim secret.yml
---
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque  #模糊
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm

或者

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque  #模糊
stringData:
  username:  admin
  password:  1f2d1e2e67df
kubectl apply -f secret.yml  创建
kubectl get secrets
kubectl get secret mysecret -o yaml

pod使用

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: testredis
    image: daocloud.io/library/redis
    volumeMounts:    #挂载一个卷
    - name: foo     #这个名字需要与定义的卷的名字一致
      mountPath: "/etc/foo"  #挂载到容器里哪个目录下,随便写
      readOnly: true
  volumes:     #数据卷的定义
  - name: foo   #卷的名字这个名字自定义
    secret:    #卷是直接使用的secret。
      secretName: mysecret   #调用刚才定义的secret

映射secret key到指定的路径

 volumes:
  - name: foo
    secret:
      secretName: mysecret
      items:   #定义一个items
       - key: username   #将那个key重新定义到那个目录下
         path: my-group/my-username  #相对路径,相对于/etc/foo的路径

以环境变量的形式使用Secret

---
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: testredis
    image: daocloud.io/library/redis
    env:  #定义环境变量
     - name: SECRET_USERNAME   #创建新的环境变量名称
       valueFrom:
        secretKeyRef:     #调用的key是什么
         name: mysecret       #变量的值来自于mysecret
         key: username       #username里面的值
spec:
  containers:
     - name: testredis
       image: daocloud.io/library/redis
       envFrom:  #定义环境变量
         - secretRef:     #调用的key是什么
             name: mysecret       #变量的值来自于mysecret
         - configMapRef: 
              name: configmap1

Deployment配置

apiVersion: v1
kind: Deployment
metadata:
  name: myDeployment
spec:
   selector:
       matchLabels:
             app: redisDeploy
   replicas: 1
   template:
   	   metadata:
   	        labels:
   	            app:  redisDeploy
       spec:
           containers:
                - name:  redisDeploy
                   image:  daocloud.io/library/redis
                   envFrom:
                        - configMapRef:
                              name: myconfigMap
                       - secretRef:
                             name: mysecret       
apiVersion: v1
kind: Service
metadata:
  name: myService
spec:
    ports:
       - name: http
         port: 8080
         targetPort: 8080
         nodePort: 31080
    selector:
        app: redisDeploy
    type: NodePort

http://www.niftyadmin.cn/n/268041.html

相关文章

flask学习-实践02

项目实战 入门文当(2条消息) python flask框架详解_flask python_尘世风的博客-CSDN博客(2条消息) python flask框架详解_flask python_尘世风的博客-CSDN博客 入门项目 抄作业了!6 大 Flask 开源实战项目推荐_小詹学 Python的博客-CSDN博客 (66 条消息) GitHub 上有…

BuildKit

介绍 BuildKit是一个现代化的构建系统,主要用于构建和打包容器镜像。它是Docker官方的构建引擎,支持构建多阶段构建、缓存管理、并行化构建、多平台构建等功能。BuildKit还支持多种构建语法和格式,包括Dockerfile、BuildKit Build Specifica…

SAP 生产订单修改记录查询

无论在项目实施过程中还是在运维的项目中,经常会遇到生产订单被修改,导致需求发生变更,这个时候用户经常就会需要要求查询生产订单的修改记录。通过SAP的标准程序是没有办法查询到生产订单修改记录,这个时候就从开发的角度去做增强的方式去实现。 1、肯定是在生产订单保存…

Redis 缓存穿透、缓存雪崩、缓存击穿

缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。 常见的解决方案有两种: 缓存空对象 优点:实现简单,维护方便 缺点: 额外的内存消耗 可…

Windows上使用CLion配置OpenCV环境,亲测可用的方法(一)

一、Windows上使用CLion配置OpenCV环境,亲测可用的方法: Windows上使用CLion配置OpenCV环境 教程里的配置: widnows 10 clion 2022.1.1 mingw 8.1.0 opencv 4.5.5 Cmake3.21.1 我自己的配置: widnows 10 clion 2022.2.5 mingw 8.…

怎样恢复被删除的文件

为了电脑能健康运行,定期清理电脑上的文件是很有必要的。但在清理的过程中,难免会有文件被意外删除的时候,那么如果遇到重要文件被删除该怎么办呢?怎样恢复被删除的文件呢?其实不必太担心,因为删除的文件可以恢复。只是我们要使…

指数式母函数

在前文我说了母函数的定义。但是母函数绝不是为了根据通项公式求母函数,而是为了根据递推公式求通项公式。但是根据母函数法求通项公式也不是万能的。还记得拉姆齐定理里的公式吗?拉姆齐定义的递推公式是: a n n a n − 1 − n 2 &#xf…

云计算下的企业数据备份与恢复实践

在当前的数字化时代,数据已经成为企业的核心资产之一。对于企业而言,数据的安全性和可用性至关重要。数据的丢失和破坏会给企业带来巨大的损失,因此,备份和恢复数据已经成为企业数据管理的重要环节。随着云计算的普及和发展&#…