第六篇 kubernetes helm部署harbor映象倉庫
阿新 • • 發佈:2020-12-17
1.harbor映象倉庫簡介
Harbor 是為企業使用者設計的容器映象倉庫開源專案,包括了許可權管理(RBAC)、LDAP、審計、安全漏洞掃描、
映象驗真、管理介面、自我註冊、HA 等企業必需的功能,同時針對中國使用者的特點,設計映象複製和中文支援等功能。
2.harbor 元件簡介
從安裝元件我們可以看出harbor主要依靠以下幾個元件: Nginx(Proxy):用於代理Harbor的registry,UI, token等服務 db:負責儲存使用者許可權、審計日誌、Dockerimage分組資訊等資料。 UI:提供圖形化介面,幫助使用者管理registry上的映象, 並對使用者進行授權 jobsevice:負責映象複製工作的,他和registry通訊,從一個registry pull映象然後push到另一個registry,並記錄job_log Adminserver:是系統的配置管理中心附帶檢查儲存用量,ui和jobserver啟動時候回需要載入adminserver的配置。 Registry:原生的docker映象倉庫,負責儲存映象檔案。 Log:為了幫助監控Harbor執行,負責收集其他元件的log,記錄到syslog中
harbor的優勢
1.基於角色控制:使用者與Docker映象倉庫通過"專案"進行組織管理,一個使用者可以對多個映象倉庫在統一名稱空間(projec)裡有不同的許可權 2.圖形化使用者介面:使用者可以通過瀏覽器來瀏覽,檢索當前Docker映象倉庫,管理專案和名稱空間 3.審計管理:所有這怒地映象倉庫的錯都可以被記錄追溯,用於審計管理 4.基於映象的複製策略:映象可以在多個Harbor例項之間進行復制。 5.支援LDAP認證:Harbor的使用者授權可以使用已經存在的使用者。 6.映象刪除和垃圾回收:image可以被刪除並且回收image佔用的空間。 7.簡單的部署功能:harbor提供了online、offline安裝,此外還提供了virtualappliance安裝 8.harbor和docker registry的關係:harbor實質上是對docker registry做了封裝,擴充套件了自己的業務模板。
3.在k8s中使用helm 部署harbor
(1)從github拉取harbor-helm
#cd /root
#yum install -y git
#git clone https://github.com/goharbor/harbor-helm
#cd harbor-helm/
(2)修改相關配置
#在harbor-helm資料夾裡面,可以看到Chart.yml 及 values.yaml 等helm 部署相關的檔案,vi 編輯一下value.yaml,根據實際情況修改配置: ingress: hosts: core: harbor.k8s.com #修改ingress裡面的域名 notary: notary.k8s.com …… externalURL: https://harbor.k8s.com #修改訪問的URL …… #這部分可以看到,這裡需要6個pvc,也就是說需要手動建立6個pv,官方預設為3個5G,3個1G,可根據需要修改size,這裡由於是實驗環境,所以不作改動 persistentVolumeClaim: registry: existingClaim: "" storageClass: "" subPath: "" accessMode: ReadWriteOnce size: 5Gi chartmuseum: existingClaim: "" storageClass: "" subPath: "" accessMode: ReadWriteOnce size: 5Gi jobservice: existingClaim: "" storageClass: "" subPath: "" accessMode: ReadWriteOnce size: 1Gi database: existingClaim: "" storageClass: "" subPath: "" accessMode: ReadWriteOnce size: 1Gi redis: existingClaim: "" storageClass: "" subPath: "" accessMode: ReadWriteOnce size: 1Gi …… harborAdminPassword: "Harbor12345" #預設管理員密碼為Harbor12345,可在這裡進行修改,建議不要修改
(3)建立需要的5個pv
為簡化實驗,本實驗環境使用local-storage作為持久化儲存,使用k8s3機器的 /data/harbor 目錄作為本地持久化儲存。
在k8s3上面建立五個資料夾:
#mkdir /data/harbor/{data01,data02,data03,data04,data05}
提升資料夾許可權
#chmod -R 777 /data/harbor/
在master上面編寫6個pv的yaml檔案,並建立pv(我只貼出了一個pv.yaml ,剩下的可仿照建立)
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/bound-by-controller: "yes"
finalizers:
- kubernetes.io/pv-protection
name: harbor-data01
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
hostPath:
path: /data/harbor/data01
type: ""
persistentVolumeReclaimPolicy: Delete
volumeMode: Filesystem
status:
#kubectl create -f pv.yaml
#kubectl get pv
可以看到5個pv已經準備就緒
(4) 使用helm部署harbor
#kubectl create ns harbor
#cd /root/harbor-helm
#helm dependency update
#helm install . --debug -n harbor --namespace harbor
引數說明:
--debug 部署過程中開啟debug模式
-n 定義helm release的名字
--namespace 指定使用哪個namespace部署
分別檢視helm、pvc、deployment、pod、service、ingress 等是否正常(其中部分pod有可能會失敗,但會自動重建,直到最後全部pod都會處理Running狀態)
(5)使用瀏覽器訪問
在master節點,node節點和訪問主機的hosts 檔案中新增對映
192.168.25.65 master.k8s.com harbor.k8s.com notary.k8s.com
瀏覽器訪問地址: https://harbor.k8s.com/
輸入使用者名稱: admin 密碼 Harbor12345(這是預設密碼)
注意:我登入時候遇到一個問題是,使用http://harbor.k8s.com 登入會報使用者名稱或密碼錯誤。所以這裡建議使用https
(6) docker客戶端 訪問
#在Docker Client 的啟動檔案裡面加入 --insecure-registry 引數,強制信任這個映象倉庫。
[root@master ~]# cat /etc/docker/daemon.json
{
"live-restore": true,
"insecure-registries" : ["harbor.k8s.com"],
"registry-mirrors": ["https://q2hy3fzi.mirror.aliyuncs.com"]
}
[root@master ~]#
#重啟 docker 及 daemon
#systemctl daemon-reload && systemctl restart docker
#docker login harbor.k8s.com
到此harbor 的部署就完成了,更多的使用才能發現上面的新功能!
官網地址: https://harbor.com/
github地址: https://github.com/goharbor/harbor