kubernetes资源对象--secret和Service Account

简介: secret 概念 secret资源对象主要目的是保存和处理敏感信息/私密数据,比如密码,OAuth tokens,ssh keys等信息。将这些信息放在secret对象中比直接放在pod或docker image中更安全,也更方便使用。

secret

概念

secret资源对象主要目的是保存和处理敏感信息/私密数据,比如密码,OAuth tokens,ssh keys等信息。将这 些信息放在secret对象中比直接放在pod或docker image中更安全,也更方便使用。

类型

Opaque任意字符串,默认类型

kubernetes.io/service-account-token:作用于Service Account

kubernetes.io/dockercfg:作用于Docker registry,用户下载docker镜像认证使用

Opaque

创建

文件方式

首先把需要加密的内容实现base64编码

echo -n lykops | base64
bHlrb3Bz

echo -n 1qaz2wsx | base64
MXFhejJ3c3g=

然后写入lykops-secret.yaml

apiVersion: v1 kind: Secret metadata:
 name: lykops-secret
 namespace: default
type: Opaque data:
 password: MXFhejJ3c3g=
 username: bHlrb3Bz

导入kubectl create -f lykops-secret.yaml

命令行方式

kubectl create secret generic lykops --secret --from-literal=username=lykops --from-literal=password=1qaz2wsx

pod引用

cat << EOF > lykops-secret.yaml apiVersion: v1 kind: Pod metadata:
 name: lykops-secret-pod labels:
 software: apache project: lykops app: lykops-secret-pod version: v1 spec:
 containers:
 -name: lykops-secret-pod image: web:apache command: ['sh' , '/etc/run.sh'] env:
 - name: SECRET_USERNAME valueFrom:
 secretKeyRef:
 name: lykops-secret key: username - name: SECRET_PASSWORD valueFrom:
 secretKeyRef:
 name: lykops-secret key: password EOF kubectl create -f lykops-secret-pod.yaml 

测试

进入pod kubectl exec -it lykops-secret-pod /bin/bash env | grep -i '^SECRET' SECRETUSERNAME=lykops SECRET_PASSWORD=1qaz2wsx

imagePullSecrets

当在需要安全验证的环境中拉取镜像时,需要通过用户名和密码。

apiVersion: v1 kind: Secret metadata:
 name: myregistrykey
 namespace: awesomeapps
data:
 .dockerconfigjson:UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson 

或者直接通过命令创建

kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL 

接下来拉取镜像的时候,就可以使用了

apiVersion: v1 kind: Pod metadata:
 name: foo
 namespace: awesomeapps
spec:
 containers:
 -name: foo
 image: janedoe/awesomeapp:v1
 imagePullSecrets:
 -name: myregistrykey

其实本质上还是kubelet把这个认证放到了docker的目录下面,如下: cat ~/.docker/config.json { "auths": { "10.39.0.118": { "auth": "Y2hlbm1vOmNtMTM4MTE2NjY3ODY=" }, "10.39.0.12:5000": { "auth": "dXNlcjAxOjEyMzQ1YQ==" }, "http://10.39.0.12:5000": { "auth": "dXNlcjAxOjEyMzQ1YQ==" } } }

Service Account

Service Account(以下简称SA)的使用场景:运行在pod里的进程需要调用K8S API以及非K8S API的其它服务。SA并不是给K8S集群的用户使用的,而是给pod里面的进程使用的,它为pod提供必要的身份认证。

如果K8S开启了SA(位于/etc/kubernetes/controller-manager的KUBEADMISSIONCONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"),那么会在每个namespace下面都会创建一个默认的default的SA。


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
关系型数据库 MySQL 数据库
数据安全之路:深入了解MySQL的行锁与表锁机制
数据安全之路:深入了解MySQL的行锁与表锁机制
609 1
|
前端开发 JavaScript Java
没错,你可以移动式编码了:4款最好的Android设备HTML编辑器
作为出色的应用平台,Android系统不仅可以用于登录Facebook或是玩“愤怒的小鸟”,它还可以为web开发人员提供可行的移动式解决方案。然而,web开发者是不可能对那些陈旧的文本编辑器表示满意的——他们需要使用专门的代码编辑器,以便让工作更快速更便捷地完成。下面我将要介绍4款名列前茅用于Android设备的HTML编辑器,任何web开发人员都能利用它们在平板电脑上处理大量工作,或是在智能手机上进行一些快速修改。
3576 0
没错,你可以移动式编码了:4款最好的Android设备HTML编辑器
|
Prometheus Kubernetes 监控
云原生|kubernetes |使用Prometheus监控k8s cAdvisor篇(进阶篇--- 一)(centos操作系统)
云原生|kubernetes |使用Prometheus监控k8s cAdvisor篇(进阶篇--- 一)(centos操作系统)
2814 0
|
Kubernetes Cloud Native 关系型数据库
使用Zadig从0到1搭建持续交付平台(上)
使用Zadig从0到1搭建持续交付平台
使用Zadig从0到1搭建持续交付平台(上)
|
Unix Linux 测试技术
Linux系统之wget命令的基本使用
【8月更文挑战第4天】Linux系统之wget命令的基本使用
569 5
|
存储 安全 物联网
探索IAM的重要性及其在各行业的应用
本周聚焦IAM(身份与访问管理)的重要性及其对各行业的影响。IAM作为网络安全核心,不仅保护数字身份、限制未授权访问,还能帮助企业实现法规遵从,平衡安全与风险,提升品牌信誉。无论医疗、教育、政府、制造还是金融行业,IAM都能提供定制化解决方案,应对数据安全挑战。借助IAM,组织可有效管理用户访问、保护敏感信息,同时简化合规流程,为数字化转型奠定坚实基础。
337 0
|
Cloud Native Go 索引
901. 股票价格跨度:单调栈
这是 力扣上的 901. 股票价格跨度,难度为 中等。
233 0
【51单片机】烧写教程:将代码下载到单片机中(图示&解析)
【51单片机】烧写教程:将代码下载到单片机中(图示&解析)
|
小程序
【微信小程序】点击事件bindtap如何传参
【微信小程序】点击事件bindtap如何传参
2951 0
【微信小程序】点击事件bindtap如何传参
|
SpringCloudAlibaba 网络协议 JavaScript
SpringCloud Alibaba微服务实战十五 - SpringCloud 容器化部署
SpringCloud Alibaba微服务实战十五 - SpringCloud 容器化部署
484 0