AKS (8) 安裝Harbor並與Azure Container Registry (ACR)同步 Windows Azure Platform 系列文章目錄

  《Windows Azure Platform 系列文章目錄

 

  最近遇到一個客戶需求,客戶的鏡像參考保存在IDC側的Harbor上,需要通過Harbor同步到Azure Container Registry (ACR)裏。

  

  Harbor介紹:

  Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器,通過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了開源Docker Distribution。作爲一個企業級私有Registry服務器,Harbor提供了更好的性能和安全。提升用戶使用Registry構建和運行環境傳輸鏡像的效率。Harbor支持安裝在多個Registry節點的鏡像資源複製,鏡像全部保存在私有Registry中, 確保數據和知識產權在公司內部網絡中管控。另外,Harbor也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。

 

  Harbor特性:

  1. 基於角色的訪問控制 :用戶與Docker鏡像倉庫通過“項目”進行組織管理,一個用戶可以對多個鏡像倉庫在同一命名空間(project)裏有不同的權限。
  2. 鏡像複製 : 鏡像可以在多個Registry實例中複製(同步)。尤其適合於負載均衡,高可用,混合雲和多雲的場景。
  3. 圖形化用戶界面 : 用戶可以通過瀏覽器來瀏覽,檢索當前Docker鏡像倉庫,管理項目和命名空間。
  4. AD/LDAP 支持 : Harbor可以集成企業內部已有的AD/LDAP,用於鑑權認證管理。
  5. 審計管理 : 所有針對鏡像倉庫的操作都可以被記錄追溯,用於審計管理。
  6. 國際化 : 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來。
  7. RESTful API : RESTful API 提供給管理員對於Harbor更多的操控, 使得與其它管理軟件集成變得更容易。
  8. 部署簡單 : 提供在線和離線兩種安裝工具, 也可以安裝到vSphere平臺(OVA方式)虛擬設備。

 

  Harbor組件:

  1. harbor-adminserver:harbor系統管理接口,可以修改系統配置以及獲取系統信息
  2. harbor-db:存儲項目的元數據、用戶、規則、複製策略等信息
  3. harbor-jobservice:harbor裏面主要是爲了鏡像倉庫之前同步使用的
  4. harbor-log:收集其他harbor的日誌信息。rsyslogd
  5. harbor-ui:一個用戶界面模塊,用來管理registry。主要是前端的頁面和後端CURD的接口
  6. nginx:harbor的一個反向代理組件,代理registry、ui、token等服務。這個代理會轉發harbor web和docker client的各種請求到後端服務上。是個nginx。nginx負責流量轉發和安全驗證,對外提供的流量都是從nginx中轉,它將流量分發到後端的ui和正在docker鏡像存儲的docker registry
  7. registry:存儲docker images的服務,並且提供pull/push服務。harbor需要對image的訪問進行訪問控制,當client每次進行pull、push的時候,registry都需要client去token服務獲取一個可用的token。
  8. redis:存儲緩存信息
  9. webhook:當registry中的image狀態發生變化的時候去記錄更新日誌、複製等操作。

 

  安裝Harbor:

  1.在Azure上準備一臺虛擬機,操作系統爲Ubuntu 16.04。步驟略。

  把Azure虛擬機的公網DNS地址修改一下,我們選擇公網IP地址,修改DNS Name。如下圖:

 

  2.創建完畢後,SSH登錄到這臺虛擬機上,首先我們安裝Docker

sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add 

sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update
sudo apt install -y docker-ce

  3.安裝Docker Compose

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

  4.安裝Harbor

wget https://storage.googleapis.com/harbor-releases/release-2.4.0/harbor-online-installer-v2.4.0.tgz

tar zxvf harbor-online-installer-v2.4.0.tgz -C /usr/src/
cd /usr/src/harbor

cp harbor.yml.tmp harbor.yml
vim harbor.yml

  編輯harbor.yml的時候,修改hostname爲Azure DNS Name,註釋https部分內容

 

  5.在SSH中,去除多餘的註釋和空行,配置文件如下

cat harbor.yml |grep -v "^#"|grep -v "  #"|grep -v "^$"

  6.之後直接執行:

./install.sh

  7.如果出現以下提示,則表示安裝成功

  8.我們訪問頁面 http://leiharborserver.chinanorth3.cloudapp.chinacloudapi.cn/

  使用默認的登錄名: admin,密碼: Harbor12345,進行登錄

  

  

  9.登錄成功之後,效果如下:

 

 

  測試客戶端推送:

  1.本地筆記本電腦已經安裝了Docker Desktop

  2.因爲在Harbor只設置了HTTP,沒有啓用HTTPS,所以需要進行配置。我們打開Docker Desktop的settings,修改insecure0regustrues。如下圖:

  

  3.打開CMD,運行以下命令登錄倉庫,登錄名: admin,密碼: Harbor12345

docker login leiharborserver.chinanorth3.cloudapp.chinacloudapi.cn
Username: admin
Password: 

  4.下載一個nginx鏡像:

docker pull nginx

  5.給鏡像打tag

docker tag nginx:latest leiharborserver.chinanorth3.cloudapp.chinacloudapi.cn/library/nginx:v1.0

  6.把本地鏡像推送到Harbor上

docker push leiharborserver.chinanorth3.cloudapp.chinacloudapi.cn/library/nginx:v1.0

  7.推送完畢後,我們登錄Harbor,可以查看到之前的鏡像

 

  設置Harbor到Azure Container Registry (ACR)的同步:

  1.我們首先查看Azure ACR裏的配置,如下圖:

  把下圖的Login Server,Username和password複製好。

  

 

  2.接下來,我們需要把Harbor上的鏡像同步到Azure Container Registry裏,我們點擊系統管理,倉庫管理,新建目標。如下圖:

  

  3.把上面的Azure ACR裏的Login Server,Username和password信息,複製到下圖裏。點擊測試連接。

  

 

  4.保存上面的新建目標。設置結果如下圖:

  

 

  5.在Harbor裏,點擊複製管理。如下圖:

  觸發模式,我們選擇手動

  

 

  6.配置完畢後,我們點擊下圖的複製按鈕:

  

 

  7.複製任務顯示爲成功

  

 

  8.我們點擊https://portal.azure.cn/,可以查看到harbor的鏡像已經同步到Azure ACR了。如下圖:

  

 

 

  

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