当前位置: 首页 > news >正文

外贸网站发外链网页设计公司金华

外贸网站发外链,网页设计公司金华,互联网精准营销公司,有哪些做汽车变速箱的门户网站概览Secret是用来保存小片敏感数据的k8s资源#xff0c;例如密码#xff0c;token#xff0c;或者秘钥。这类数据当然也可以存放在Pod或者镜像中#xff0c;但是放在Secret中是为了更方便的控制如何使用数据#xff0c;并减少暴露的风险。用户可以创建自己的secret#x…概览Secret是用来保存小片敏感数据的k8s资源例如密码token或者秘钥。这类数据当然也可以存放在Pod或者镜像中但是放在Secret中是为了更方便的控制如何使用数据并减少暴露的风险。用户可以创建自己的secret系统也会有自己的secret。Pod需要先引用才能使用某个secretPod有2种方式来使用secret作为volume的一个域被一个或多个容器挂载在拉取镜像的时候被kubelet引用。內建的Secrets由ServiceAccount创建的API证书附加的秘钥k8s自动生成的用来访问apiserver的Secret所有Pod会默认使用这个Secret与apiserver通信创建自己的Secret使用kubectl create secret命令创建Secret假如mougePod要访问数据库需要用户名密码分别存放在2个文件中username.txtpassword.txt# Create files needed forrest of example.$echo -n admin ./username.txt$echo -n 1f2d1e2e67df ./password.txtkubectl create secret指令将用户名密码写到secret中并在apiserver创建Secret$ kubectl create secret generic db-user-pass --from-file./username.txt --from-file./password.txtsecretdb-user-pass created查看创建结果$ kubectl get secretsNAME TYPE DATA AGEdb-user-pass Opaque 2 51s$ kubectl describe secrets/db-user-passName: db-user-passNamespace: defaultLabels:Annotations:Type: OpaqueDatapassword.txt:12bytesusername.txt:5 bytesget或describe指令都不会展示secret的实际内容这是出于对数据的保护的考虑如果想查看实际内容请继续往下看。手动创建Secret创建一个secret.yaml文件内容用base64编码$ echo -n admin |base64YWRtaW4$echo -n 1f2d1e2e67df |base64MWYyZDFlMmU2N2Rmyaml文件内容apiVersion: v1kind: Secretmetadata:name: mysecrettype: Opaquedata:username: YWRtaW4password: MWYyZDFlMmU2N2Rm创建$ kubectl create -f ./secret.yamlsecretmysecret created解析Secret中内容$ kubectl get secret mysecret -o yamlapiVersion: v1data:username: YWRtaW4password: MWYyZDFlMmU2N2Rmkind: Secretmetadata:creationTimestamp:2016-01-22T18:41:56Zname: mysecretnamespace: defaultresourceVersion:164619selfLink:/api/v1/namespaces/default/secrets/mysecretuid: cfee02d6-c137-11e5-8d73-42010af00002type: Opaquebase64解码$ echo MWYyZDFlMmU2N2Rm | base64 --decode1f2d1e2e67df使用Secretsecret可以作为数据卷挂载或者作为环境变量暴露给Pod中的容器使用也可以被系统中的其他资源使用。比如可以用secret导入与外部系统交互需要的证书文件等。在Pod中以文件的形式使用secret创建一个Secret多个Pod可以引用同一个Secret修改Pod的定义在spec.volumes[]加一个volume给这个volume起个名字spec.volumes[].secret.secretName记录的是要引用的Secret名字在每个需要使用Secret的容器中添加一项spec.containers[].volumeMounts[]指定spec.containers[].volumeMounts[].readOnly truespec.containers[].volumeMounts[].mountPath要指向一个未被使用的系统路径。修改镜像或者命令行使系统可以找到上一步指定的路径。此时Secret中data字段的每一个key都是指定路径下面的一个文件名下面是一个Pod中引用Secret的列子apiVersion: v1kind: Podmetadata:name: mypodspec:containers:-name: mypodimage: redisvolumeMounts:-name: foomountPath:/etc/fooreadOnly:truevolumes:-name: foosecret:secretName: mysecret每一个被引用的Secret都要在spec.volumes中定义如果Pod中的多个容器都要引用这个Secret那么每一个容器定义中都要指定自己的volumeMounts但是Pod定义中声明一次spec.volumes就好了。映射secret key到指定的路径可以控制secret key被映射到容器内的路径利用spec.volumes[].secret.items来修改被映射的具体路径apiVersion: v1kind: Podmetadata:name: mypodspec:containers:-name: mypodimage: redisvolumeMounts:-name: foomountPath:/etc/fooreadOnly:truevolumes:-name: foosecret:secretName: mysecretitems:-key: usernamepath: my-group/my-username发生了什么呢username被映射到了文件/etc/foo/my-group/my-username而不是/etc/foo/usernamepassword没有变Secret文件权限可以指定secret文件的权限类似linux系统文件权限如果不指定默认权限是0644等同于linux文件的-rw-r--r--权限设置默认权限位apiVersion: v1kind: Podmetadata:name: mypodspec:containers:-name: mypodimage: redisvolumeMounts:-name: foomountPath:/etc/foovolumes:-name: foosecret:secretName: mysecretdefaultMode:256上述文件表示将secret挂载到容器的/etc/foo路径每一个key衍生出的文件权限位都将是0400由于JSON不支持八进制数字因此用十进制数256表示0400如果用yaml格式的文件那么就很自然的使用八进制了同理可以单独指定某个key的权限apiVersion: v1kind: Podmetadata:name: mypodspec:containers:-name: mypodimage: redisvolumeMounts:-name: foomountPath:/etc/foovolumes:-name: foosecret:secretName: mysecretitems:-key: usernamepath: my-group/my-usernamemode:511从volume中读取secret的值值得注意的一点是以文件的形式挂载到容器中的secret他们的值已经是经过base64解码的了可以直接读出来使用。$ ls /etc/foo/usernamepassword$cat /etc/foo/usernameadmin$cat /etc/foo/password1f2d1e2e67df被挂载的secret内容自动更新也就是如果修改一个Secret的内容那么挂载了该Secret的容器中也将会取到更新后的值但是这个时间间隔是由kubelet的同步时间决定的。最长的时间将是一个同步周期加上缓存生命周期(periodttl)特例以subPath形式挂载到容器中的secret将不会自动更新以环境变量的形式使用Secret创建一个Secret多个Pod可以引用同一个Secret修改pod的定义定义环境变量并使用env[].valueFrom.secretKeyRef指定secret和相应的key修改镜像或命令行让它们可以读到环境变量apiVersion: v1kind: Podmetadata:name: secret-env-podspec:containers:-name: mycontainerimage: redisenv:-name: SECRET_USERNAMEvalueFrom:secretKeyRef:name: mysecretkey: username-name: SECRET_PASSWORDvalueFrom:secretKeyRef:name: mysecretkey: passwordrestartPolicy: Never容器中读取环境变量已经是base64解码后的值了$ echo$SECRET_USERNAMEadmin$echo$SECRET_PASSWORD1f2d1e2e67df使用imagePullSecrets创建一个专门用来访问镜像仓库的secret当创建Pod的时候由kubelet访问镜像仓库并拉取镜像具体描述文档在设置自动导入的imagePullSecrets可以手动创建一个然后在serviceAccount中引用它。所有经过这个serviceAccount创建的Pod都会默认使用关联的imagePullSecrets来拉取镜像参考文档自动挂载手动创建的Secret详情限制需要被挂载到Pod中的secret需要提前创建否则会导致Pod创建失败secret是有命名空间属性的只有在相同namespace的Pod才能引用它单个Secret容量限制的1Mb这么做是为了防止创建超大的Secret导致apiserver或kubelet的内存耗尽。但是创建过多的小容量secret同样也会耗尽内存这个问题在将来可能会有方案解决kubelet只支持由API server创建出来的Pod中引用secret使用特殊方式创建出来的Pod是不支持引用secret的比如通过kubelet的--manifest-url参数创建的pod或者--config参数创建的或者REST API创建的。通过secretKeyRef引用一个不存在你secret key会导致pod创建失败用例Pod中的ssh keys创建一个包含ssh keys的secretkubectl create secret generic ssh-key-secret --from-filessh-privatekey/path/to/.ssh/id_rsa --from-filessh-publickey/path/to/.ssh/id_rsa.pub创建一个Pod其中的容器可以用volume的形式使用ssh keyskind: PodapiVersion: v1metadata:name: secret-test-podlabels:name: secret-testspec:volumes:- name: secret-volumesecret:secretName:ssh-key-secretcontainers:- name: ssh-test-containerimage: mySshImagevolumeMounts:- name: secret-volumereadOnly:truemountPath:/etc/secret-volumePod中区分生产和测试证书创建2种不同的证书分别用在生产和测试环境$ kubectl create secret generic prod-db-secret --from-literalusernameproduser --from-literalpasswordY4nys7f11secretprod-db-secretcreated$ kubectl create secret generic test-db-secret --from-literalusernametestuser --from-literalpasswordiluvtestssecrettest-db-secret created再创建2个不同的PodapiVersion: v1kind: Listitems:-kind: PodapiVersion: v1metadata:name: prod-db-client-podlabels:name: prod-db-clientspec:volumes:- name: secret-volumesecret:secretName: prod-db-secretcontainers:- name: db-client-containerimage: myClientImagevolumeMounts:- name: secret-volumereadOnly:truemountPath:/etc/secret-volume-kind: PodapiVersion: v1metadata:name: test-db-client-podlabels:name: test-db-clientspec:volumes:- name: secret-volumesecret:secretName: test-db-secretcontainers:- name: db-client-containerimage: myClientImagevolumeMounts:- name: secret-volumereadOnly:truemountPath:/etc/secret-volume两个容器中都会有下列的文件/etc/secret-volume/username/etc/secret-volume/password以“.”开头的key可以产生隐藏文件kind: SecretapiVersion: v1metadata:name: dotfile-secretdata:.secret-file: dmFsdWUtMg0KDQo---kind: PodapiVersion: v1metadata:name: secret-dotfiles-podspec:volumes:- name: secret-volumesecret:secretName: dotfile-secretcontainers:- name: dotfile-test-containerimage: k8s.gcr.io/busyboxcommand:- ls- -l- /etc/secret-volumevolumeMounts:- name: secret-volumereadOnly:truemountPath:/etc/secret-volume会在挂载目录下产生一个隐藏文件/etc/secret-volume/.secret-file最佳实践风险
http://www.zqtcl.cn/news/979017/

相关文章:

  • 济南 外贸网站建设怎么知道网站是哪个公司做的
  • 分享wordpress优秀主题东莞百度seo找谁
  • 顺德网站制作案例价位超兽vps群
  • 网站建设 搜狐号电脑赚钱的项目有哪些
  • 做生意的网站广州互联网企业100强
  • 网站单页支付宝支付怎么做网站制作公司套路
  • 本网站维护升级官方网站建设滞后
  • 网站上漂亮的甘特图是怎么做的江门seo方法
  • 局域网建设网站seo优化查询
  • 网站安装模板wordpress多个函数文件
  • 网站建设飠金手指排名十二毕业设计论文网
  • 高密哪里做网站好网络营销的四大特点
  • 网站锚文本怎么做怎么在网上接网站建设
  • php做公司网站中国大工程建设需要什么样的人才
  • 优化公司怎么优化网站的技能网站建设项目需求
  • wordpress怎么修改主页网站改版seo
  • 做视频网站需要多少带宽lnmp wordpress 数据库
  • 网站速度慢wordpress徐州网络推广公司
  • 网站建设增城seo外链是什么意思
  • php做企业网站管理系统免费网站制作手机软件的app
  • 商城网站建设咨询如何通过网站后台修改网站
  • 重庆网站建设论文2 如何写一份详细的网站开发方案
  • 宁波门户网站建设做购物网站表结构分析
  • 上传网站图片处理画册设计多少钱一页
  • 网站做标签页新公司网站建设都有哪些优势
  • 上门做指甲哪个网站百度搜索榜
  • 西安网站seo优化商城域名注册管理机构
  • 凡客网站目录优化服装网站建设论文
  • 自助网站搭建哈尔滨seo优化
  • 做网站和软件的团队网页设计与网页制作的实验报告