<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Kubernetes 在每個 Pod 或每個 Namespace 的基礎上使用 imagePullSecrets 對私有容器登入檔進行身份驗證。要做到這一點,你需要建立一個祕密與憑據:
{% note warning %} ⚠️ 警告:
現在隨著公共映象倉庫(如:docker.io 等)開始對匿名使用者進行限流,設定公共倉庫的身份認證也變得有必要。 {% endnote %}
kubectl create secret docker-registry image-pull-secret -n <your-namespace> --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-password> --docker-email=<your-email>
例如設定 docker.io 的 pull secret:
kubectl create secret docker-registry image-pull-secret-src -n imagepullsecret-patcher --docker-server=docker.io --docker-username=caseycui --docker-password=c874d654-xxxx-40c6-xxxx-xxxxxxxx89c2 --docker-email=cuikaidong@foxmail.com
{% note info %} ℹ️ 資訊:
如果 docker.io 啟用了「2 階段認證」,可能需要建立 Access Token(對應上面的 docker-password
,建立連結在這裡:賬號 -> 安全 {% endnote %}
現在我們可以在一個 pod 中使用這個 secret 來下載 docker 映象:
apiVersion: v1 kind: Pod metadata: name: busybox namespace: private-registry-test spec: containers: - name: my-app image: my-private-registry.infra/busybox:v1 imagePullSecrets: - name: image-pull-secret
另一種方法是將它新增到名稱空間的預設 ServiceAccount 中:
kubectl patch serviceaccount default -p "{"imagePullSecrets": [{"name": "image-pull-secret"}]}" -n <your-namespace>
我找到了一個叫做 imagepullsecret-patch 的工具,它可以在你所有的名稱空間上做這個:
wget https://raw.githubusercontent.com/titansoft-pte-ltd/imagepullsecret-patcher/185aec934bd01fa9b6ade2c44624e5f2023e2784/deploy-example/kubernetes-manifest/1_rbac.yaml wget https://raw.githubusercontent.com/titansoft-pte-ltd/imagepullsecret-patcher/master/deploy-example/kubernetes-manifest/2_deployment.yaml kubectl create ns imagepullsecret-patcher
編輯下載的檔案,一般需要修改image-pull-secret-src
的內容,這個 pull secret 就會應用到 K8S 叢集範圍。
nano 1_rbac.yaml nano 2_deployment.yaml kubectl apply -f 1_rbac.yaml kubectl apply -f 2_deployment.yaml
這裡背後建立的資源有:
NameSpace
RBAC 許可權相關:
imagepullsecret-patcher
ServiceAccount
imagepullsecret-patcher
ClusterRole,具有對 service account 和 secret 的所有許可權
imagepullsecret-patcher
ClusterRoleBinding,為 imagepullsecret-patcher
ServiceAccount 賦予 imagepullsecret-patcher
ClusterRole 的許可權。
image-pull-secret-src
,裡面是你的 K8S 全域性包含的所有的映象庫地址和認證資訊。imagepullsecret-patcher
,指定 ServiceAccount 是 imagepullsecret-patcher
就有了操作 service account 和 secret 的所有許可權,並將上面的 secret 掛載到 Deployment pod 內。可以包含多個映象庫地址和認證資訊,如:
{ "auths": { "docker.io": { "username": "caseycui", "password": "c874xxxxxxxxxxxxxxxx1f89c2", "email": "cuikaidong@foxmail.com", "auth": "Y2FzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxWMy" }, "quay.io": { "auth": "ZWFzdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlXWmpNPQ==", "email": "" } } }
base64 編碼後寫到 secret 的 .dockerconfigjson
欄位即可:
apiVersion: v1 kind: Secret metadata: name: image-pull-secret-src namespace: imagepullsecret-patcher data: .dockerconfigjson: >- eyJhdXRocyI6eyJkb2NrZXIuaW8iOnsidXNlcm5hbWUiOiJjYXNleWN1aSIsInB.............................................IiwiZW1haWwiOiIifX19 type: kubernetes.io/dockerconfigjson
啟動後的 pod 會在所有 NameSpace 下建立 image-pull-secret
secret(內容來自於image-pull-secret-src
) 並把它 patch 到 default
service account 及該 K8S 叢集的所有 ServiceAccount 裡,紀錄檔如下:
time="2022-01-12T16:07:30Z" level=info msg="Application started" time="2022-01-12T16:07:30Z" level=info msg="[default] Created secret" time="2022-01-12T16:07:30Z" level=info msg="[default] Patched imagePullSecrets to service account [default]" time="2022-01-12T16:07:30Z" level=info msg="[kube-system] Created secret" time="2022-01-12T16:07:31Z" level=info msg="[kube-system] Patched imagePullSecrets to service account [node-controller]" ... time="2022-01-12T16:07:37Z" level=info msg="[kube-public] Created secret" time="2022-01-12T16:07:37Z" level=info msg="[kube-public] Patched imagePullSecrets to service account [default]" time="2022-01-12T16:07:38Z" level=info msg="[kube-node-lease] Created secret" time="2022-01-12T16:07:38Z" level=info msg="[kube-node-lease] Patched imagePullSecrets to service account [default]" time="2022-01-12T16:07:38Z" level=info msg="[prometheus] Created secret" time="2022-01-12T16:07:39Z" level=info msg="[prometheus] Patched imagePullSecrets to service account [default]" ... time="2022-01-12T16:07:41Z" level=info msg="[imagepullsecret-patcher] Created secret" time="2022-01-12T16:07:41Z" level=info msg="[imagepullsecret-patcher] Patched imagePullSecrets to service account [default]" time="2022-01-12T16:07:41Z" level=info msg="[imagepullsecret-patcher] Patched imagePullSecrets to service account [imagepullsecret-patcher]"
今後我們只需要更新 image-pull-secret-src
這一個即可了。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45