從一個(gè)私有的倉(cāng)庫(kù)拉取鏡像
登錄Docker
docker login
當(dāng)出現(xiàn)提示的時(shí)候紊扬,輸入Docker的用戶名和密碼隙姿。
登錄的過(guò)程創(chuàng)建或更新config.json文件來(lái)保存驗(yàn)證信息梅垄。
查看config.json文件:
cat ~/.docker/config.json
輸出包含下面類似的部分:
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "c3R...zE2"
}
}
}
新建一個(gè)Secret保存驗(yàn)證信息
新建一個(gè)名字為regsecret的Secret:
kubectl create secret docker-registry regsecret --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
參數(shù)解釋
- <your-registry-server> Docker私有的鏡像存儲(chǔ)地址。
- <your-name> 倉(cāng)庫(kù)的用戶名输玷。
- <your-pword> 倉(cāng)庫(kù)的密碼队丝。
- <your-email> 倉(cāng)庫(kù)的email。
理解Secret
可以通過(guò)查看Secret YAML格式的試圖來(lái)理解在Sercet創(chuàng)建了什么欲鹏。
kubectc get secret regsecret --output=yaml
輸出類似于下面:
apiVersion: v1
data:
.dockercfg: eyJodHRwczovL2luZGV4L ... J0QUl6RTIifX0=
kind: Secret
metadata:
...
name: regsecret
...
type: kubernetes.io/dockercfg
.dockercfg字段的值是base64編碼過(guò)得數(shù)據(jù)机久。
復(fù)制這個(gè)數(shù)據(jù)給一個(gè)名字為secret64的文件。
理解.dockercfg字段的內(nèi)容是什么赔嚎,可以轉(zhuǎn)換成可讀的格式膘盖。
base64 -d secret64
輸出類似于下面:
{"yourprivateregistry.com":{"username":"janedoe","password":"xxxxxxxxxxx","email":"jdoe@example.com","auth":"c3R...zE2"}}
注意 秘密數(shù)據(jù)包含config.json文件里面的驗(yàn)證信息。
創(chuàng)建一個(gè)Pod使用你的Secret
下面是一個(gè)pod的配置文件需要訪問(wèn)秘密數(shù)據(jù):
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: regsecret
把<your-private-image>替換成自己的私有倉(cāng)庫(kù)的鏡像尽狠。
例如:
janedoe/jdoe-private:v1
從私有的鏡像倉(cāng)庫(kù)拉取鏡像Kubernetes需要認(rèn)證信息衔憨。imagePullSecrets字段配置從名字為regsecret的Secret里面獲取認(rèn)證信息。
創(chuàng)建一個(gè)Pod使用Secret袄膏,并且驗(yàn)證Pod是否運(yùn)行践图。
kubectl create -f my-private-reg-pod.yaml
kubectl get pod private-reg