1. 程式人生 > 其它 >AKS (8) 安裝Harbor並與Azure Container Registry (ACR)同步 Windows Azure Platform 系列文章目錄

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了。如下圖: