1、登錄Docker
成都創(chuàng)新互聯公司成立于2013年,我們提供高端網站建設、重慶網站制作、成都網站設計、網站定制、網絡營銷推廣、小程序設計、微信公眾號開發(fā)、網站推廣服務,提供專業(yè)營銷思路、內容策劃、視覺設計、程序開發(fā)來完成項目落地,為地磅秤企業(yè)提供源源不斷的流量和訂單咨詢。
通過注冊表進行身份驗證才能提取私有映像:
docker login? registry.hello.com
出現提示時,輸入您的Docker用戶名和密碼。登錄過程將創(chuàng)建或更新config.json包含授權令牌的文件。
查看config.json文件:
cat ~/.docker/config.json
{
?????? "auths": {
? ????????????? "registry.hello.com": {
???????????? ?????????? "auth": "YWRtaW46YWRtaW4xMjM="
??????????????? }
??????? },
??????? "HttpHeaders": {
??????????????? "User-Agent": "Docker-Client/18.09.0 (linux)"
??????? }
}
2、根據現有Docker憑證創(chuàng)建密鑰
Kubernetes集群使用Secret docker-registry類型的密鑰通過容器注冊表進行身份驗證以提取私有映像。如果您已經運行過docker login,則可以將該憑證復制到Kubernetes中:
kubectl create secret generic harbor \??? #命名為harbor
??? --from-file=.dockerconfigjson=/root/.docker/config.json \
?? --type=kubernetes.io/dockerconfigjson
如果您需要更多控制權(例如,在新密鑰上設置名稱空間或標簽),則可以在存儲密鑰之前自定義密鑰。
務必:
??? 將數據項的名稱設置為 .dockerconfigjson
??? base64對docker文件進行編碼并粘貼該字符串,將其作為字段的值不間斷 data[".dockerconfigjson"]
設置type為kubernetes.io/dockerconfigjson
apiVersion:?v1 data: ??.dockerconfigjson:?eyJhdXRocyI6eyJyZWdpc3RyeS5jbi1oYW5nemhvdS5hbGl5dW5jcy5jb20iOnsicGFzc3dvcmQiOiJFY29uYWdlQGs4cyIsInVzZXJuYW1lIjoiazhzQGVjb25hZ2UifX19 kind:?Secret metadata: ??name:?harbor ??namespace:?default type:?kubernetes.io/dockerconfigjson
如果收到錯誤消息 `error: no objects passed to create`,這可能意味著 base64 編碼的字符串無效。如果您收到的錯誤類似 `Secret "myregistrykey" is invalid: data[.dockerconfigjson]: invalid value ...`,這意
味著數據已成功地編碼為 un-base64,但無法解析為一個 `.docker/config.json` 文件。
3、在 pod 上引用 imagePullSecrets
imagePullSecrets:
name: harbor
4、使用 Docker 配置創(chuàng)建一個 Secret
kubectl?create?secret?docker-registry?myregistrykey?\ --docker-server=registry.hello.com?--docker-username=admin?\ --docker-password=admin123
Pod 只能引用它們自己命名空間中的鏡像拉取 secret,因此,每個命名空間都需要完成一次此過程
5、應用場景
有許多配置私有倉庫的解決方案。以下是一些常見的用例和建議的解決方案。
??? 1.集群只運行非專有(例如,開放源碼)鏡像。不需要隱藏鏡像。在 Docker hub 上使用公共鏡像
??? ??? ???? 不需要配置。
?? ??? ???? 在 GCE 或 GKE 上,自動使用本地鏡像來提高速度和可用性。
??? 2.集群運行一些私有鏡像,這些鏡像應該對公司以外用戶進行隱藏,但對所有集群用戶都是可見的。
??? ??? ???? 使用托管的 Docker 倉庫。它可能托管在 Docker Hub 上,或其它地方。像上面描述的那樣在每個節(jié)點上手動配置 .docker/config.json。
??? ??? ???? 或者,在防火墻后面運行內部私有倉庫,并打開讀取訪問權限。不需要 Kubernetes 配置。
??? ??? ???? 或者,在 GCE 或 GKE 上,使用項目的 Google 容器倉庫。與手動節(jié)點配置相比,集群自動伸縮會更好地工作。
??? ??? ???? 或者,在更改節(jié)點配置不方便的集群上,使用 imagePullSecrets。
??? 3.擁有專有鏡像的集群,其中一些需要更嚴格的訪問控制。
??? ??? ???? 確保 AlwaysPullImages 準入控制器 打開。否則,所有 pod 都可能訪問所有的鏡像。
??? ??? ???? 將敏感數據移動到 “Secret” 資源中,而不是將其打包到鏡像中。
??? 4.多租戶集群,每個租戶都需要自己的私有倉庫。
??? ??? ???? 確保 AlwaysPullImages 準入控制器 打開。否則,所有 pod 都可能訪問所有的鏡像。
??? ??? ???? 運行需要授權的私有倉庫。為每個租戶生成倉庫憑證,將其轉換為 secret,并將 secret 填充到每個租戶命名空間。
??? ??? ???? 租戶將該 secret 添加到每個命名空間的 imagePullSecrets 中。
當前題目:k8s使用harbor私有倉庫
轉載來于:http://sd-ha.com/article10/geghdo.html
成都網站建設公司_創(chuàng)新互聯,為您提供網站內鏈、動態(tài)網站、營銷型網站建設、網站導航、品牌網站設計、網頁設計公司
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯