中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Kubernetes中Secret和私有倉庫認證

發布時間:2021-10-12 10:33:52 來源:億速云 閱讀:130 作者:柒染 欄目:云計算

這篇文章給大家介紹如何進行Kubernetes中Secret和私有倉庫認證,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。


對一個公司來說安全也是最為重要的因為可能一旦出現安全問題可能這個公司就完了,所以對密碼管理是一個長久不變的話題,Kubernetes對密碼管理提供了Secret組件進行管理,最終映射成環境變量,文件等方式提供使用,統一進行了管理更換方便,并且開發人員并不需要關心密碼降低了密碼的受眾范圍從而保障了安全.

Kubernetes官方文檔:https://kubernetes.io/docs/reference/

Kubernetes官方Git地址:https://github.com/kubernetes/kubernetes

PS:本系列中使用 KubernetesV1.8 RancherV1.6.14

1. 初始化Secret

首先我們需要初始化一個Secret,使用Yaml文件創建時需要使用base64之后的內容作為Value

$ echo -n "admin" | base64
YWRtaW4=
$ echo -n "1f2d1e2e67df" | base64
MWYyZDFlMmU2N2Rm

老規矩通過yaml的方式創建我們的Secret配置文件可以看到已經生效了

> vim secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm

> kubectl create -f ./secret.yaml
secret "mysecret" created
> kubectl get secret
NAME                  TYPE                                  DATA      AGE
default-token-lnftf   kubernetes.io/service-account-token   3         1d
mysecret              Opaque                                2         9s

2. 環境變量

我們在使用Secret第一個場景就是作為容器的環境變量,大部分容器都提供使用環境變量配置密碼的功能,你的程序只需要讀取到這個環境變量使用這個環境變量的內容去鏈接到對應的服務就可以正常使用了,如下我們初始化一個Pod服務,使用之前預設好的信息作為用戶名密碼配置進去

> vim secret-env.yaml
apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password
  restartPolicy: Never
> kubectl create -f secret-env.yaml


3.文件(TLS證書)

除了配置成環境變量我們在很多地方也會使用到文件的方式來存放密鑰信息,最常用的就是HTTPS這樣的TLS證書,使用證書程序(比如Nginx沒法使用環境變量來配置證書)需要一個固定的物理地址去加載這個證書,我們吧之前配置用戶名和密碼作為文件的方式掛在到某個目錄下

> vim secret-file.yaml
apiVersion: v1
kind: Pod
metadata:
  name: secret-file-pod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret
> kubectl create -f secret-file.yaml


如果有需要對同的配置分開掛載到不同的地方可以使用如下配置

apiVersion: v1
kind: Pod
metadata:
  name: secret-file-pod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret
      items:
      - key: username
        path: my-group/my-username
  • username存儲在/etc/foo/my-group/my-username文件而不是/etc/foo/username。

  • password 不會掛載到磁盤

因為映射成了文件那么對權限也是可以控制的

  volumes:
  - name: foo
    secret:
      secretName: mysecret
      defaultMode: 256

然后,秘密將被掛載,/etc/foo并且由秘密卷掛載創建的所有文件都將具有權限0400。

PS: JSON規范不支持八進制表示法,因此對于0400權限使用值256。如果您使用yaml代替pod的json,則可以使用八進制表示法以更自然的方式指定權限。
您也可以使用映射(如上例所示),并為不同的文件指定不同的權限,如下所示:

  volumes:
  - name: foo
    secret:
      secretName: mysecret
      items:
      - key: username
        path: my-group/my-username
        mode: 511

在這種情況下,生成的文件/etc/foo/my-group/my-username將具有權限值0777。由于JSON限制,您必須以十進制表示法指定模式。

4.Docker私有倉庫認證

使用過K8s的小伙伴肯定會遇到一個問題,我們在使用自有的Docker倉庫的時候都需要先登錄用戶名和密碼,但是如果使用K8S怎么配置密碼呢?在secret中有一個類型是docker-registry我們可以通過命令行的方式創建在獲取Docker鏡像時使用的用戶名和密碼

kubectl create secret docker-registry  regsecret --docker-server=registry-vpc.cn-hangzhou.aliyuncs.com --docker-username=admin --docker-password=123456 --docker-email=xxxx@qq.com

如果使用編排文件是如下格式

kind: Secret
apiVersion: v1
metadata:
  name: regsecret
type: kubernetes.io/dockercfg
data:
  ".dockercfg": eyJyZWdpc3RyeS12cGMuY24taGFuZ3pob3UuYWxpeXVuY3MuY29tIjp7InVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6IjEyMzQ1NiIsImVtYWlsIjoieHh5eEBxcS5jb20iLCJhdXRoIjoiWVdSdGFXNDZNVEl6TkRVMiJ9fQ==

# 反base64的結果 : {"registry-vpc.cn-hangzhou.aliyuncs.com":{"username":"admin","password":"123456","email":"xxxx@qq.com","auth":"YWRtaW46MTIzNDU2"}}

然后我們就可以在獲取指定鏡像的時候為他指定一個獲取鏡像的Docker憑證

apiVersion: v1
kind: Pod
metadata:
  name: secret-file-pod
spec:
  containers:
  - name: mypod
    image: redis
  imagePullSecrets:                         # 獲取鏡像需要的用戶名密碼
   - name: regsecret

關于如何進行Kubernetes中Secret和私有倉庫認證就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝清县| 新田县| 乌什县| 伊通| 樟树市| 乌兰察布市| 平顶山市| 凌云县| 政和县| 康乐县| 苏州市| 大同县| 犍为县| 白朗县| 长阳| 永春县| 琼海市| 温宿县| 永德县| 乐亭县| 青阳县| 云阳县| 大竹县| 青川县| 东莞市| 建始县| 建水县| 怀集县| 通山县| 山阴县| 明星| 江北区| 中西区| 祥云县| 奈曼旗| 托克逊县| 海晏县| 宜良县| 克什克腾旗| 连南| 东海县|