第六篇 kubernetes helm部署harbor鏡像倉庫


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM