Harbor 2.0 快速部署經驗分享

題圖攝於舊金山漁人碼頭css

本文系Harbor社區用戶經驗分享文章,首發於公衆號:運維及時雨,受權轉發。linux

做者簡介:杜秋,雲計算運維工程師,目前主要從事Kubernetes技術棧的CI/CD運維,多年一線運維工做,參與平臺搭建、平臺遷移、企業從自建IDC到上雲、自動化建設等運維核心項目。nginx

說明:本文離線安裝,後端掛載阿里雲的OSS做爲images存儲,之後不再怕磁盤爆滿了。
git

Harbor 離線版本:harbor-offline-installer-v2.0.0.tgz
github

Harbor 2.0版本相比以前的1.x更新的很多功能:redis

  • 啓用Trivy做爲默認漏洞掃描器,簡化了Trivy掃描器的配置。docker

  • 啓用了Harbor組件之間的TLS,使組件內的流量更安全。typescript

  • Webhook的加強功能,包括支持與Slack的交互、可選擇的事件列表、多終端、新事件等。json

  •  加強機器人帳戶,容許用戶爲每一個機器人設置單獨的過時時間。vim

  • 重構錯誤處理框架,以便更好地排除故障。

  • 在用戶界面中查看未標記的鏡像,並將其從GC和標記保留工做中包含/排除。

  • 選擇性地從鏡像中刪除標籤,而不刪除鏡像摘要或其餘相關標籤。

  • 默認是https,由於notary必須在https協議下,若是不須要配置notary能夠設置http。

操做系統版本:

[root@192-168-0-110 ~]# cat /etc/system-release
CentOS Linux release 7.7.1908 (Core)
[root@192-168-0-110 ~]# uname  -a
Linux 192-168-0-110 3.10.0-1062.18.1.el7.x86_64 #1 SMP Tue Mar 17 23:49:17 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

安裝個純淨的操做系統並初始化,能夠參考下我以前的文章CentOS8 初探之安裝CentOS8 初探之初始化,這裏直接把防火牆、selinux和postfix等禁用。

[root@192-168-0-110 ~]#systemctl  disable firewalld.service;systemctl  disable postfix.service
[root@192-168-0-110 ~]#sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

由於Harbor默認是用docker-compose部署的固然也能夠部署到Kubernetes中,本文安裝在docker-compose上,全部須要安裝docker和docker-compose

#安裝docker
[root@192-168-0-110 ~]#yum install yum-utils
 [root@192-168-0-110 ~]#yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 [root@192-168-0-110 ~]#yum install docker-ce docker-ce-cli -y
[root@192-168-0-110 ~]# docker -v
Docker version 19.03.9, build 9d988398e7
[root@192-168-0-110 ~]#systemctl  start docker;systemctl  enable docker
#安裝docker-compose
[root@192-168-0-110 ~]#curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@192-168-0-110 ~]# docker-compose  version
docker-compose version 1.25.5, build 8a1c60f6
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
[root@192-168-0-110 ~]#chmod +x /usr/local/bin/docker-compose

接下來下載本文的主角Harbor 2.0離線包

Harbor github 地址:https://github.com/goharbor/harbor/releases

[root@192-168-0-110 ~]#wget https://github.com/goharbor/harbor/releases/download/v2.0.0/harbor-offline-installer-v2.0.0.tgz

編輯相關配置文件,啓動Harbor:

[root@192-168-0-110 ~]#tar xf harbor-offline-installer-v2.0.0.tgz 
 [root@192-168-0-110 ~]#cd harbor
 [root@192-168-0-110 harbor]#cp harbor.yml.tmpl  harbor.yml

修改harbor.yml 裏hostname、certificate、private_key參數便可,其餘的看需求,證書能夠自建也能夠找目前公司正在使用(通配符證書和域名證書都可)的,個人是自建的,自建證書教程後續更新.

vim harbor.yml


再把私有鏡像服務器的地址添加到docker-daemon中,格式爲json,而後重啓或者reload docker 服務

[root@192-168-0-110 harbor]# cat /etc/docker/daemon.json 
{
    "insecure-registries": ["harbor.duqiu.com"]
}
 [root@192-168-0-110 ~]#systemctl  reload docker

配置docker-compose.yml文件和安裝相關插件,本文只安裝的clair和trivy插件

[root@192-168-0-110 harbor]#./prepare --with-clair --with-trivy 
#--with-clair  鏡像安全掃描插件
#--with_notary 內容信任插件 
#--with-trivy   鏡像漏洞檢測插件
#--with-chartmuseum Chart倉庫服務
#更改鏡像存儲位置,本地的話不用配置直接用,本例子中我使用了阿里雲的oss做爲後端存儲(若是harbor部署在非阿里雲上建議使用外網訪問域名),寫入對應的value。
#官方文檔 https://docs.docker.com/registry/storage-drivers/
#官方文檔 https://docs.docker.com/registry/configuration/#storage
[root@192-168-0-110 harbor]#vim  common/config/registry/config.yml
oss:
     accesskeyid: 填寫你的具備阿里雲oss權限帳戶的RAM的AccessKey ID
     accesskeysecret: 填寫你的具備阿里雲oss權限帳戶的RAM的AccessKey Secret
     region: 地域節點(EndPoint)
     endpoint: Bucket 域名
     internal: true
     bucket: Bucket 名稱

[root@192-168-0-110 harbor]#vim  docker-compose.yml #註釋掉本地存儲
 registry:
    image: goharbor/registry-photon:v2.0.0
    container_name: registry
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    volumes:
#      - /data/registry:/storage:z

啓動Harbor:

[root@192-168-0-110 harbor]# docker-compose  up -d 
Starting harbor-log ... done
Starting redis         ... done
Recreating registry    ... done
Starting harbor-portal ... done
Starting harbor-db     ... done
Recreating registryctl ... done
Creating trivy-adapter ... done
Recreating clair       ... done
Recreating harbor-core   ... done
Recreating clair-adapter ... done
Recreating harbor-jobservice ... done
Recreating nginx             ... done

訪問資源的PC綁定hosts後訪問頁面:

duqiudeMacBook-Pro:~ duqiu$ sudo vim /etc/hosts
192.168.0.110 harbor.duqiu.com

啓動瀏覽器開始驗證:

建立項目名稱nbtest

建立用戶user1,權限爲開發人員

把剛剛建立的nbtest權限分配給user1

在須要push 鏡像和pull鏡像的服務器登陸私有鏡像

[root@192-168-0-110 ~]# docker login harbor.duqiu.com  #輸入剛纔建立的用戶名和密碼登陸
Username: user1
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store


Login Succeeded

本地寫個測試images驗證一下到剛剛建立的私有鏡像倉庫,是否正常上傳下載和是否傳到阿里oss裏:

經過Dockerfile 生成本地image,打tag後開始推送

上傳

[root@192-168-0-110 ~]#docker push harbor.duqiu.com/nbtest/plm:nbtest202006011515

此時在阿里oss裏便可看見剛剛上傳的項目和images

返回Harbor倉庫界面能夠選擇你剛剛上傳的鏡像開始鏡像安全掃描,這是clair提供的功能

掃描完成後,若是image有問題會在沒有漏洞處出現提示

安裝過程當中出現的倉庫只讀模式,能夠在此處更改:


要想了解雲原生、區塊鏈和人工智能等技術原理,請當即長按如下二維碼,關注本公衆號亨利筆記 ( henglibiji ),以避免錯過更新。

相關文章
相關標籤/搜索