企業級Registry服務器(harbor)部署node
修訂記錄python
修訂日期mysql |
修訂者linux |
修訂內容nginx |
備註git |
20180527github |
brekalinuxweb |
Harbor部署redis |
初稿sql |
使用參考地址: https://vmware.github.io/harbor/cn/
部署參考地址: https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
Github地址: https://github.com/vmware/harbor.git
HTTPS配置:https://github.com/goharbor/harbor/blob/master/docs/configure_https.md
Harbor 是 Vmwar 公司開源的 企業級的 Docker Registry 管理項目;
Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器, 經過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了開源Docker Distribution。做爲一個企業級私有Registry服務器,Harbor提供了更好的性能和安全。提高用戶使用Registry構建和運行環境傳輸鏡像的效率。Harbor支持安裝在多個Registry節點的鏡像資源複製,鏡像所有保存在私有Registry中, 確保數據和知識產權在公司內部網絡中管控。另外,Harbor也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。
Ø 基於角色的訪問控制 - 用戶與Docker鏡像倉庫經過「項目」進行組織管理,一個用戶能夠對多個鏡像倉庫在同一命名空間(project)裏有不一樣的權限。
Ø 鏡像複製 - 鏡像能夠在多個Registry實例中複製(同步)。尤爲適合於負載均衡,高可用,混合雲和多雲的場景。
Ø 圖形化用戶界面 - 用戶能夠經過瀏覽器來瀏覽,檢索當前Docker鏡像倉庫,管理項目和命名空間。
Ø AD/LDAP 支持 - Harbor能夠集成企業內部已有的AD/LDAP,用於鑑權認證管理。
Ø 審計管理 - 全部針對鏡像倉庫的操做均可以被記錄追溯,用於審計管理。
Ø 國際化 - 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來。
Ø RESTful API - RESTful API 提供給管理員對於Harbor更多的操控, 使得與其它管理軟件集成變得更容易。
Ø 部署簡單 - 提供在線和離線兩種安裝工具, 也能夠安裝到vSphere平臺(OVA方式)虛擬設備。
資 源 |
最低配置 |
最佳配置
|
CPU |
2CPU |
4CPU 或更高 |
Mem |
4GB |
8GB 或更高 |
Disk
|
40GB |
160GB或更高 |
軟件名
|
軟件版本
|
相關描述 |
Python
|
2.7 版本或更高 |
默認cenots 系統自帶,注意:2.7版本以上 |
Docker engine
|
1.10版本或更高 |
參考地址https://docs.docker.com/engine/installation/ |
Docker Compose |
1.6版本或更高
|
參考地址: https://docs.docker.com/compose/install/ |
Openssl |
最新優先
|
生成證書和密鑰 |
服務監聽端口
|
協議 |
描述 |
443 |
HTTPS |
Harbor UI和API將請求這個端口上的https協議請求。 |
4443 |
HTTS |
鏈接到Docker內部信任服務,只有在啓認證時才須要。 |
80 |
HTTP |
Harbor UI和API將請求這個端口上的http協議請求
|
yum -y install nginx
upstream reg {
server your ip:80 max_fails=3 fail_timeout=10s;
}
server{
listen 80;
server_name xxxx; 訪問域名
client_max_body_size 5000000m; # 限制客戶端最大的Body-Size
access_log /data/log/nginx/reg.log;
location / {
rewrite ^(.*)$ https://$host$1 permanent;
}
}
server{
listen 443 ssl http2;
server_name xxx; #訪問域名
client_max_body_size 5000000m; # 限制客戶端最大的Body-Size
access_log /data/log/nginx/reg.log;
ssl_certificate ###證書路徑;
ssl_certificate_key ##證書私鑰;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://reg;
proxy_store off;
proxy_buffering off;
proxy_cache_use_stale off;
proxy_connect_timeout 10s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS,HEAD;
}
}
(1).獲取相關harbor軟件; (需提早安裝docker,Docker Compose,openssl)
(2).生成證書和密鑰;
(3).配置harbor.cfg;
(4).運行install.sh 啓動harbor;
軟件獲取地址: https://github.com/vmware/harbor/releases
https://github.com/vmware/harbor/archive/v1.5.0.zip
$ tar xvf harbor-online-installer-<version>.tgz (在線安裝)
$ tar xvf harbor-offline-installer-<version>.tgz (離線安裝)
(1).進入目錄建立CA認證; cd /app/harbor/cert [root@docker-harbor]#localdomain=reg.ops.com
(2).根據本身須要進行修改: openssl req -nodes -subj "/C=CN/ST=GuangDong/L=DongGuan/CN=$localdomain" -newkey rsa:2048 -keyout $localdomain.key -out $localdomain.csr
openssl x509 -req -days 3650 -in $localdomain.csr -signkey $localdomain.key -out $localdomain.crt
openssl x509 -req -in $localdomain.csr -CA $localdomain.crt -CAkey $localdomain.key -CAcreateserial -out $localdomain.crt -days 10000 |
注意: https 商業證書須要提早在證書的提供商進行購買;
1.將商業的的證書和密鑰放置到harbor.cfg 配置文件下: 例如: ssl_cert = /app/harbor/cert/ops.com.crt #證書 ssl_cert_key = //app/harbor/cert/ops.com.key.pem #密鑰
|
6.3.3 docker 配置自簽名客戶端認證;
注意: 1.自簽名docker 須要配置客戶端認證 2.商業證書則不用配置,因客戶端能識別; 3.不然docker login reg.chehejia.com 會出現以下錯誤 ping attempt failed with error: Get https://reg.chehejia/v2/: x509: certificate is valid for server, not reg.chehejia.com
[root@docker-harbor]# mkdir -p /etc/docker/certs.d/reg.chehejia.com/ [root@docker-harbor]# cp /app/harbor/cert/reg.ops.com.crt /etc/docker/certs.d/reg.ops.com//ca.crt
|
[root@k8s-cluster-master01 harbor]# grep -v "^#" harbor.cfg |grep -v "^$" _version = 1.5.0 hostname = reg.ops.com ###訪問域名地址 ui_url_protocol = https #配置訪問協議,默認爲http;若是要啓動SSl認證https max_job_workers = 50 customize_crt = on #######可選的https證書配置地址 ssl_cert = /app/harbor/cert/ops.com.crt #證書 ssl_cert_key = /chj/app/harbor/cert/ops.com.key.pem #密鑰# secretkey_path = /data ###################### admiral_url = NA log_rotate_count = 50 log_rotate_size = 200M http_proxy = https_proxy = no_proxy = 127.0.0.1,localhost,ui email_identity = email_server = smtp.mydomain.com email_server_port = 25 email_username = sample_admin@mydomain.com email_password = abc email_from = admin <sample_admin@mydomain.com> email_ssl = false email_insecure = false harbor_admin_password = Harbor12345 ##web控制檯登陸密碼 auth_mode = db_auth ldap_url = ldaps://ldap.mydomain.com配置####ldap### ldap_basedn = ou=people,dc=mydomain,dc=com ldap_uid = uid ldap_scope = 2 ldap_timeout = 5 ldap_verify_cert = true ldap_group_basedn = ou=group,dc=mydomain,dc=com ldap_group_filter = objectclass=group ldap_group_gid = cn ldap_group_scope = 2 ####配置ldap 完畢######## self_registration = on ##數據庫密碼### token_expiration = 30 # token過時時間,默認爲30分鐘 project_creation_restriction = everyone db_host = mysql db_password = root123 db_port = 3306 db_user = root redis_url = redis:6379 clair_db_host = postgres clair_db_password = password clair_db_port = 5432 clair_db_username = postgres clair_db = postgres uaa_endpoint = uaa.mydomain.org uaa_clientid = id uaa_clientsecret = secret uaa_verify_cert = true uaa_ca_cert = /path/to/ca.pem registry_storage_provider_name = filesystem registry_storage_provider_config = |
[root@docker-harbor]# ./install.sh
注意: 1.運行前必須安裝docker 並啓動docker 服務,和Docker Compose服務; 2.運行啓動過程當中會拉去對應的docker 鏡像 比較慢,耐心等待完畢後自動啓動; 3. 建議提早配置docker 加速器(可選擇阿里雲加速器);
[root@docker-harbor]# docker-compose stop ###關閉harbor
|
[root@docker-harbor]# yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 [root@docker-harbor]# yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo [root@docker-harbor]# yum-config-manager --enable docker-ce-edge [root@docker-harbor]# yum install docker-ce [root@docker-harbor]# systemctl start docker |
[root@docker-harbor]# curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose [root@docker-harbor]# chmod +x /usr/local/bin/docker-compose [root@docker-harbor]# docker-compose --version docker-compose version 1.21.2, build a133471 |
1.訪問域名;
(2).默認管理員帳號密碼;
admin/Harbor12345
(3)新建項目; (4).添加用戶;
(5).添加項目成員; |
(1).官網拉取一個測試鏡像(nginx)
(2)標記本地鏡像,將其納入harbor倉庫。
[root@docker-harbor ~]# docker tag docker.io/nginx:latest reg.chehejia.com/public/nginx:v1
(3).配置登陸harbor;
(4).push 鏡像到harbor;
(5). Harbor 控制檯查看;
|
1. harbor 使用很是便捷,
2. 嚴格的權限劃分,對應鏡像使用權限嚴格控制;
3 . k8s 和docker 易用;
4. 部署技術成本較小(Compose 統一管理)
5. 方便支持ldap接入適用企業用戶;
6. 審計查詢方便;