1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      k8s之安全信息(Secret)及配置信息(ConfigMa

      Secret

      • secret也是k8s中的一個資源對象,主要用于保存輕量的敏感信息,比如數(shù)據(jù)庫用戶名和密碼,令牌,認證密鑰等。

        成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供肇慶企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、網(wǎng)站制作H5網(wǎng)站設(shè)計、小程序制作等業(yè)務(wù)。10年已為肇慶眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。

      • 我們可以將這類敏感信息放在secret對象中,如果把它們暴露到鏡像或者pod spec中稍顯不妥,將其放在secret對象中可以更好地控制及使用,并降低意外暴露的風(fēng)險。
        Secret可以使用volume或者環(huán)境變量的方式來使用這些輕量級數(shù)據(jù)。

      Secret有三種類型:

      Service Account:用來訪問kubernetes API,由k8s自動創(chuàng)建,并且會自動掛載到pod的/run/secrets/kubernetes.io/serviceaccount 目錄中。
      Opaque:base64編碼格式的Secret,用來存儲密碼,密鑰等。
      kubernetes.io/dockerconfigjson: 用來存儲私有docker registry的認證信息。

      secret可以通過命令行或YAML文件來創(chuàng)建,假設(shè)我們需要存放在secret對象中的信息:

      1, 用戶名:root
      2,密碼:123456

      1,創(chuàng)建Secret

      創(chuàng)建Secret有以下四種方法:
      1.1 通過--from-literal(以文字的方法創(chuàng)建)

      [root@master ~]# kubectl  create secret generic mysecret --from-literal=username=root --from-literal=password=123456
      secret/mysecret created

      //查看創(chuàng)建的secret:
      k8s之安全信息(Secret)及配置信息(ConfigMa
      //查看該secret的詳細信息:
      k8s之安全信息(Secret)及配置信息(ConfigMa

      特點:每個--from-literal只能對應(yīng)一條信息。比較繁瑣。

      1.2 通過--from-file(以文件的方式創(chuàng)建)

      [root@master ~]# echo root > username
      [root@master ~]# echo 123456 > password
      [root@master ~]# kubectl create secret  generic newsecret --from-file=username --from-file=password
      secret/newsecret created

      //查看創(chuàng)建的secret:

      [root@master ~]# kubectl  get  secrets  | grep newsecret
      newsecret             Opaque                                2      64s

      特點:同樣是每個文件對應(yīng)一條信息。每個文件中只能保存一個,為了保證機密性,導(dǎo)入后有必要將本地的文件刪除掉。

      1.3 通過--from-env-file(以變量的方式創(chuàng)建)

      [root@master ~]# cat > env.txt < username=root
      > password=123456
      > EOF
      [root@master ~]# kubectl  create secret generic env-secret --from-env-file=env.txt
      secret/env-secret created

      k8s之安全信息(Secret)及配置信息(ConfigMa

      特點:可以在文件里面保存多條信息,文件env.txt中每條key=value對應(yīng)一條信息條目。

      1.4 通過yaml配置文件:
      #文件中的敏感數(shù)據(jù)必須是通過 base64 編碼后的結(jié)果。

      [root@master ~]# echo root | base64
      cm9vdAo=
      [root@master ~]# echo 123456 | base64
      MTIzNDU2Cg==

      #編寫yaml文件:

      apiVersion: v1
      kind: Secret
      metadata:
        name: secret-app
      data:       #該字段為存放數(shù)據(jù)的字段,與其他資源對象不同,沒有spec字段。
        username: cm9vdAo=
        password: MTIzNDU2Cg==

      //創(chuàng)建secert:

      [root@master ~]# kubectl apply -f  secret.yaml 
      secret/secret-app created

      //反向解析加密數(shù)據(jù):

      [root@master ~]# echo -n  cm9vdAo= | base64 --decode
      root
      [root@master ~]# echo -n MTIzNDU2Cg== | base64  --decode
      123456

      特點:便于保存,跨主機使用時會非常方便。

      2,如何使用secret

      一,以volume方式使用secret:
      pod通過volume的方式使用secret:
      pod的配置文件如下所示:

      apiVersion: v1
      kind: Pod
      metadata:
        name: secret-pod
      spec:
        containers:
        - name: secret-pod
          image: busybox
          args:
            - /bin/sh
            - -c
            - sleep 10; touch /tmp/healthy; sleep 3000
          volumeMounts:
          - name: foo
            mountPath: /etc/foo
            readOnly: true
        volumes:
        - name: foo
          secret:
            secretName: secret-app

      (1)定義volume foo,來源為secret(secret-app)
      (2)將foo mount到容器路徑/etc/foo,可指定讀寫權(quán)限為readOnly。

      //創(chuàng)建pod并在容器中讀取secret:

      [root@master secret]# kubectl apply -f  secret-pod.yaml 
      pod/secret-pod created
      [root@master secret]# kubectl  exec  -it secret-pod /bin/sh
      / # cd /etc/foo/
      /etc/foo # ls
      password  username
      /etc/foo # cat password 
      123456
      /etc/foo # cat username 
      root

      可以看到,k8s會在指定路徑/etc/foo下為每條敏感數(shù)據(jù)創(chuàng)建一個文件,文件名就是數(shù)據(jù)條目的key,這里是/etc/foo/username和/etc/foo/password,value則以銘文存放在文件中。

      (2)我們也可以自定義存放數(shù)據(jù)的文件名,完整的配置文件如下:

      apiVersion: v1
      kind: Pod
      metadata:
        name: secret-pod
      spec:
        containers:
        - name: secret-pod
          image: busybox
          args:
            - /bin/sh
            - -c
            - sleep 10; touch /tmp/healthy; sleep 3000
          volumeMounts:
          - name: foo
            mountPath: /etc/foo
            readOnly: true
        volumes:
        - name: foo
          secret:
            secretName: secret-app
            items:
            - key: username:
              path: my-group/my-username
            - key: password
              path: my-group/my-password

      這時數(shù)據(jù)分別存放在/etc/foo/my-group/my-username和/etc/foo/my-group/my-password中。
      //驗證數(shù)據(jù)存放位置:

      [root@master secret]# kubectl  delete -f secret-pod.yaml 
      pod "secret-pod" deleted
      [root@master secret]# kubectl apply -f  secret-pod.yaml 
      pod/secret-pod created
      [root@master secret]# kubectl  exec  -it secret-pod /bin/sh
      / # cd /etc/foo/
      /etc/foo # ls
      my-group
      /etc/foo # cd my-group/
      /etc/foo/..2020_02_03_05_37_09.892671465/my-group # cat my-password 
      123456
      /etc/foo/..2020_02_03_05_37_09.892671465/my-group # cat my-username 
      root

      (3)以volume方式使用secret支持動態(tài)更新:secret更新后,容器中的數(shù)據(jù)也會更新。
      //我們有需求將password更新為“123456.com”

      [root@master secret]# echo 123456.com | base64
      MTIzNDU2LmNvbQo=

      修改secret配置文件:

      apiVersion: v1
      kind: Secret
      metadata:
        name: secret-app
      data:
        username: cm9vdAo=
        password: MTIzNDU2LmNvbQo=

      //更新secret:

      [root@master secret]# kubectl apply -f  secret.yaml 
      secret/secret-app configured

      //驗證password是否更新成功:

      [root@master secret]# kubectl  exec  -it secret-pod /bin/sh
      / # cd /etc/foo/my-group/
      /etc/foo/..2020_02_03_05_40_42.995350019/my-group # cat my-password 
      123456.com

      特點:如果secert的數(shù)據(jù)發(fā)生變化,引用數(shù)據(jù)的資源對象內(nèi)的數(shù)據(jù)也會隨之改變,當(dāng)secret更新-----pod也會更新。

      二:以環(huán)境變量的方式使用
      通過volume使用secret時,容器必須從文件讀取數(shù)據(jù),會稍嫌麻煩,k8s還支持通過環(huán)境變量來使用secret。

      pod配置文件示例如下:

      apiVersion: v1
      kind: Pod
      metadata:
        name: secret-pod
      spec:
        containers:
        - name: secret-pod
          image: busybox
          args:
            - /bin/sh
            - -c
            - sleep 10; touch /tmp/healthy; sleep 3000
          env:
            - name: SECRET_USERNAME
              valueFrom:
                secretKeyRef:
                  name: secret-app
                  key: username
            - name: SECRET_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: secret-app
                  key: password
      

      //創(chuàng)建pod并讀取secret:

      [root@master secret]# kubectl apply -f  secret-pod.yaml 
      pod/secret-pod created
      [root@master secret]# kubectl exec  -it secret-pod /bin/sh
      / # echo $SECRET_USERNAME
      root
      / # echo $SECRET_PASSWORD
      123456.com

      (2)驗證:接下來我們修改secret中password的值,查看pod內(nèi)的數(shù)據(jù)是否會改變?
      經(jīng)過測試,發(fā)現(xiàn)pod中的值是不會發(fā)生改變的。

      特點:環(huán)境變量讀取secret很方便,但無法支撐secret動態(tài)更新。

      configMap

      • Secret可以為pod提供密碼,Token,私鑰等敏感數(shù)據(jù)。而對于一些非敏感數(shù)據(jù),比如應(yīng)用的配置信息,則可以用ConfigMap。
      • ConfigMap與secret非常相似,主要不同的是,他保存的數(shù)據(jù)是以明文的方式存放。

      假設(shè)我們需要存放在ConfigMap對象中的信息:

      config1=xxx
      config2=yyy

      1,創(chuàng)建ConfigMap

      同樣擁有以下四種方法:
      1.1 通過--from-literal創(chuàng)建:

      [root@master configMap]# kubectl create configmap configmap1 --from-literal=config1=xxx --from-literal=config2=yyy
      configmap/configmap1 created

      //查看configmap信息:
      k8s之安全信息(Secret)及配置信息(ConfigMa
      可以看到保存的數(shù)據(jù)是以明文的方式存放。

      特點:每個--from-literal對應(yīng)一條信息。

      1.2 通過--from-file創(chuàng)建:

      [root@master configMap]# echo xxx > config1
      [root@master configMap]# echo yyy > config2
      //創(chuàng)建configmap:
      [root@master configMap]# kubectl create configmap configmap2 --from-file=config1 --from-file=config2
      configmap/configmap2 created

      特點:每個文件對應(yīng)一條信息,每個文件中只能保存一個,為了機密性,導(dǎo)入后需要將本地的文件刪除掉。

      1.3 通過--from-env-file的方式創(chuàng)建:

      [root@master configMap]# cat > env.txt < config1=xxx
      > config2=yyy
      > EOF

      //創(chuàng)建configmap:

      [root@master configMap]# kubectl create configmap configmap3 --from-env-file=env.txt 
      configmap/configmap3 created

      特點:可以再文件里面保存多條信息,文件env.txt中每條key=value 對應(yīng)一條信息條目。

      1.4 通過yaml配置文件:
      #文件中的敏感數(shù)據(jù)必須是通過 base64 編碼后的結(jié)果。
      configmap配置文件如下:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: configmap-app
      data:
        config1: xxx   #文件中的數(shù)據(jù)直接以明文輸入即可
        config2: yyy

      //創(chuàng)建configmap:

       [root@master configMap]# kubectl apply -f  configmap.yaml 
      configmap/configmap-app created

      特點:便于保存,跨主機使用時會非常方便。

      2,數(shù)據(jù)的引用

      與Secret一樣,pod也可以通過volume或者環(huán)境變量的方式使用secret。
      一:volume方式
      yaml配置文件如下:

      apiVersion: v1
      kind: Pod
      metadata:
        name: configmap-pod
      spec:
        containers:
        - name: configmap-pod
          image: busybox
          args:
            - /bin/sh
            - -c
            - sleep 10; touch /tmp/healthy; sleep 3000
          volumeMounts:
          - name: foo
            mountPath: /etc/foo
        volumes:
        - name: foo
          configMap:
            name: configmap-app

      //創(chuàng)建pod,并在pod中讀取數(shù)據(jù):

      [root@master configMap]# kubectl apply -f configmap-pod.yaml 
      pod/configmap-pod created
      [root@master configMap]# kubectl exec  -it configmap-pod /bin/sh
      / # cd /etc/foo/
      /etc/foo # ls
      config1  config2
      /etc/test # cat config1
      xxx
      /etc/test # cat config2
      yyy

      二:env環(huán)境變量方式
      yaml配置文件內(nèi)容如下所示:

      apiVersion: v1
      kind: Pod
      metadata:
        name: configmap-pod
      spec:
        containers:
        - name: configmap-pod
          image: busybox
          args:
            - /bin/sh
            - -c
            - sleep 10; touch /tmp/healthy; sleep 3000
          env:
            - name: CONFIG1
              valueFrom:
                configMapKeyRef:
                  name: configmap-app
                  key: config1
            - name: CONFIG2
              valueFrom:
                configMapKeyRef:
                  name: configmap-app
                  key: config2

      //創(chuàng)建pod并查看pod中的數(shù)據(jù):

      [root@master configMap]# kubectl  delete -f  configmap-pod.yaml 
      pod "configmap-pod" deleted
      [root@master configMap]# kubectl  apply -f  configmap-pod.yaml 
      pod/configmap-pod created
      [root@master configMap]# kubectl exec  -it configmap-pod /bin/sh
      / # echo $CONFIG1
      xxx
      / # echo $CONFIG2
      yyy

      經(jīng)過測試:同樣configmap和secret的兩種引用方式一樣,volume掛載的方式,如果configmap的數(shù)據(jù)更新,引用的資源對象內(nèi)的數(shù)據(jù)也會更新,而以env環(huán)境變量的方式,則不支持動態(tài)更新(可自己進行測試驗證)。

      注意:以上只是例子,要知道在大多數(shù)情況下,配置信息都是以文件形式提供,所以創(chuàng)建ConfigMap時一般只采用--from-file或YAML方式,而讀取ConfigMap時通常采用volume方式。

      小結(jié):
      向pod傳遞配置信息。如果信息需要加密,可使用Secret; 如果是一般的配置信息,則可使用ConfigMap。
      Secret和ConfigMap支持四種定義方法,pod在使用它們時,可以選擇volume方式或環(huán)境變量方式,不過只有volume方式支持動態(tài)更新。


      文章題目:k8s之安全信息(Secret)及配置信息(ConfigMa
      網(wǎng)頁路徑:http://www.ef60e0e.cn/article/psjsgi.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        思南县| 奉贤区| 聊城市| 新化县| 六盘水市| 敖汉旗| 卢氏县| 栖霞市| 牡丹江市| 伊春市| 永顺县| 攀枝花市| 隆德县| 手游| 通榆县| 桦甸市| 乐安县| 葫芦岛市| 当雄县| 长汀县| 曲周县| 鹤山市| 微山县| 滁州市| 乐亭县| 松滋市| 正蓝旗| 鹤壁市| 广灵县| 绿春县| 平罗县| 腾冲县| 额济纳旗| 体育| 云阳县| 筠连县| 湘乡市| 江川县| 天门市| 清镇市| 婺源县|