本文基于kubernetes 1.5.2版本编写
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。
分享到:
相关推荐
serviceAccountName: kubernetes-dashboard # Comment the following tolerations if Dashboard must not be deployed on master tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule ---...
文档中也提供了一个示例YAML文件,其中包括了创建Dashboard专用的Secret、ServiceAccount以及一个简单的Role,该Role授权Dashboard创建特定的Secret,名为"kubernetes-dashboard-key-holder"。 5. 访问控制和授权。...
对于安全性,ServiceAccount和RBAC(基于角色的访问控制)确保了资源的访问权限。NetworkPolicy允许精细的网络流量控制,Secret和ConfigMap则用于管理敏感信息和配置数据。持久化存储通过Persistent Volume和Storage...
网盘文件永久链接 ...15-kubernetes认证及serviceaccount 16-kubernetes RBAC 17-kubernetes dashboard认证及分级授权 18-配置网络插件flannel 19-基于canel的网络策略 20-调度器、预选策略及优选函数 .......
目录网盘文件永久链接 ...15-kubernetes认证及serviceaccount 16-kubernetes RBAC 17-kubernetes dashboard认证及分级授权 18-配置网络插件flannel 19-基于canel的网络策略 20-调度器、预选策略及优选函数 ...
为了管理ServiceAccount和相关的Secret,可以使用`kubectl get secret --all-namespaces`命令查看所有命名空间的Secret,以及`kubectl describe secret default-token-5gm9r --namespace=kube-system`命令来详细描述...
kubectl create clusterrolebinding admin-user --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:admin-user ``` **暴露服务端口**: 1. **修改 services 配置文件**:将 `type: ClusterIP`...
为了安全访问Dashboard,通常会使用ServiceAccount和RoleBinding来限制权限,并可能通过设置TLS证书进行加密通信。 **kubernetes-dashboard-ingress.yml** `kubernetes-dashboard-ingress.yml`文件用于配置Ingress...
目录网盘文件永久链接 01-Devops核心要点及kubernetes架构概述.mp4 02-kubernetes基础概念.mp4 03-kubeadm初始化...15-kubernetes认证及serviceaccount.mp4 16-kubernetes RBAC.mp4 17-kubernetes dashboard......
│ 15-kubernetes认证及serviceaccount.mp4 │ 16-kubernetes RBAC.mp4 │ 17-kubernetes dashboard认证及分级授权.mp4 │ 18-配置网络插件flannel.mp4 │ 19-基于canel的网络策略.mp4 │ 20-调度器、预选策略及优选...
- **ServiceAccount**:每个Pod都有一个ServiceAccount,用于权限控制和身份认证。 5. **扩展与定制**: - **CustomResourceDefinition (CRD)**:允许创建自定义的资源类型,实现Kubernetes的扩展。 - **...
- 使用 kubectl 应用 Dashboard 的 YAML 清单文件(如 `manifest.json`),创建 Dashboard 的 ServiceAccount、Role、RoleBinding 和 Deployment。 - 配置访问控制,例如通过 kubectl 命令创建一个临时的 Token 或者...
5. **安全与认证**:Kubernetes的安全模型,包括RBAC(Role-Based Access Control)、ServiceAccount、TLS认证和密钥管理,以及如何设置和管理这些安全策略。 6. **监控与日志**:如何集成Prometheus、Grafana等...
目录网盘文件永久链接 01-Devops核心要点及kubernetes架构概述.mp4 02-kubernetes基础概念.mp4 03-kubeadm初始化...15-kubernetes认证及serviceaccount.mp4 16-kubernetes RBAC.mp4 ...........................
- **目标**:该手册旨在为用户提供一个全面且深入理解Kubernetes的资源集合,包括概念、实践、案例分析等,帮助读者更好地掌握Kubernetes的核心技术和应用场景。 #### 二、概念原理 - **设计理念**:Kubernetes的...
你可以使用`kubectl create serviceaccount`和`kubectl get secret`命令生成一个临时的token,然后在登录页面输入。 如果你的环境要求更高的安全性,你可能需要配置OAuth2代理或者其他认证机制,如使用Google或...
- **ServiceAccount**: 为 Pod 提供身份认证。 - **StatefulSet**: 管理有状态的应用程序实例。 - **ThirdPartyResources**: 已弃用,用于自定义资源的旧方式。 - **Volume**: Pod 中容器共享的持久化存储空间。 ##...
Kubernetes支持多种资源对象,如ConfigMap(存储非敏感配置数据)、CronJob(定时任务)、CustomResourceDefinition(自定义资源)、DaemonSet(确保每个Node上至少运行一个Pod)、Deployment(声明式更新Pod)、...
- **ServiceAccount**:为Pod提供身份验证。 - **StatefulSet**:为有状态的应用程序提供声明式的部署和管理。 - **Volume**:Pod中的持久化存储卷。 #### 四、部署配置 - **部署指南**:介绍了如何使用`kubectl...