Kubernates集成Harbor的主要思路及操作

本文介紹了Kubernates集成Harbor的主要思路及操作。

前置工作:

  1. 安裝Kubernates集羣
  2. 安裝Harbor

主要思路:

  • 操作k8s node的docker,雖然可以從harbor倉庫pull鏡像。但是k8s創建pod時,仍然無法從harbor倉庫pull。這時需要根據harbor登錄用戶信息,在k8s中創建一個資源類型是Secret(私鑰)
  • 在yaml文件中添加imagePullSecrets參數,指定一個或多個Secret,用於從遠程倉庫pull鏡像時提交用戶信息進行認證。
  • Harbor項目與用戶:默認的項目是library,默認爲public公開的,即harbor所有用戶都可以pull。當然你也可以根據需要創建自己的項目,並且強烈建議將項目設爲private私有的,這樣只有該項目下的成員(默認包含admin用戶)才能訪問。
    成員的角色可以有三種
    - Master:項目管理員,對鏡像有上傳、下載、刪除和查看的權限。
    - Developer:開發人員,只能查看、上傳和下載鏡像權限。
    - Guest :訪客,只能查看和下載鏡像的權限。
    - Limited Guest 受限的訪客

詳細步驟如下:

Step1、在node上執行 docker login 登錄Harbor:
# admin             -	harbor的用戶名
# Harbor12345       -	harbor的密碼
# harbor.domain.com -	harbor倉庫的域名/IP
docker login -uadmin -pHarbor12345 harbor.domain.com

執行命令查看登錄狀態:

[root@dev ~]# cat ~/.docker/config.json 
{
        "auths": {
                "harbor.domain.com": {
                        "auth": "Y2N4...MjM="
                }
        }
}   
Step2、生成祕鑰(secret),命名爲secret-harbor-dev
# 參數說明:
# secret-harbor     - 這是密鑰的鍵名稱, 可自行定義
# --docker-server   - 指定docker倉庫地址
# --docker-username - 指定docker倉庫賬號
# --docker-password - 指定docker倉庫密碼
# -n - 指定namespace,默認爲default
kubectl create secret docker-registry secret-harbor \
    --docker-server=harbor.domain.com \
    --docker-username=admin \
    --docker-password=Harbor12345
Step3、查看祕鑰:
[root@dev244 ~]# kubectl get secret
NAME            TYPE                             DATA   AGE
secret-harbor   kubernetes.io/dockerconfigjson   1      22s
Step4、yaml文件中通過imagePullSecrets指定拉取鏡像操作使用的祕鑰:
# imagePullSecrets - 聲明拉取鏡像時需要指定密鑰,值爲密鑰的名稱
imagePullSecrets:
- name: secret-harbor

注意:
1)在定義Deployment的yaml文件中,要注意參數層級,應設置在spec.template.spec.imagePullSecrets
2)當前資源的namespace必須與密鑰的一致。

這樣,在執行yaml文件時,node節點上的docker就可以使用secret-harbor通過Harbor認證,從Harbor拉取鏡像了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章