企業級Registry服務器(harbor)部署

                                                          企業級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 

1. 技術背景介紹;

Harbor Vmwar 公司開源的 企業級的 Docker Registry 管理項;

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

2.功能介紹;

Ø 基於角色的訪問控制 - 用戶與Docker鏡像倉庫經過項目進行組織管理,一個用戶能夠對多個鏡像倉庫在同一命名空間(project)裏有不一樣的權限

Ø 鏡像複製 - 鏡像能夠在多個Registry實例中複製(同步)。尤爲適合於負載均衡,高可用,混合雲和多雲的場景

Ø 圖形化用戶界面 - 用戶能夠經過瀏覽器來瀏覽,檢索當前Docker鏡像倉庫,管理項目和命名空間

Ø AD/LDAP 支持 - Harbor能夠集成企業內部已有的AD/LDAP,用於鑑權認證管理

Ø 審計管理 - 全部針對鏡像倉庫的操做均可以被記錄追溯,用於審計管理

Ø 國際化 - 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來

Ø RESTful API - RESTful API 提供給管理員對於Harbor更多的操控, 使得與其它管理軟件集成變得更容易

Ø 部署簡單 - 提供在線和離線兩種安裝工具, 也能夠安裝到vSphere平臺(OVA方式)虛擬設備

 

3.硬件支持要求;

 

    

資 源

  

最低配置

  

最佳配置

 

 

    CPU

 

  2CPU

 

 4CPU 或更高  

 

    Mem

 

  4GB

 

 8GB 或更高  

 

    Disk

 

 

  40GB

 

 160GB或更高

 

4.軟件版本要求;

 

 

軟件名

 

 

   軟件版本

 

 

                    相關描述

 

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

 

 最新優先

 

 

   生成證書和密鑰

 

 

5.網絡和端口;

 

 

服務監聽端口

 

 

   協議

 

            描述

 

 443 

 

 HTTPS

Harbor UIAPI請求這個端口上的https協議請求。

 

 4443

 

 HTTS

鏈接到Docker信任服務,只有在啓認證時才須要。

 

  80 

 

 HTTP

Harbor UIAPI請求這個端口上的http協議請求

 

 

 

6. harbor部署實戰;


6.0 部署NGINX反向代理harbor;

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;


        }

}


6.1 部署流程;

 

     (1).獲取相關harbor軟件; (需提早安裝docker,Docker Compose,openssl)

     (2).生成證書和密鑰;

     (3).配置harbor.cfg;

         (4.運行install.sh 啓動harbor;

 

6.2 獲取軟件;

   

   軟件獲取地址: 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 (離線安裝)

 

6.3 配置https證書;

 

6.3.1 配置自簽名證書;

 

(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 

 

 

6.3.2 配置商業證書;

 

注意:

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

 

 

 

6.4 調整配置文件;

 

 

[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 =

 

6.5 運行harbor 服務;

 

[root@docker-harbor]# ./install.sh

 

注意:

   1.運行前必須安裝docker 並啓動docker 服務,Docker Compose服務;

   2.運行啓動過程當中會拉去對應的docker 鏡像 比較慢,耐心等待完畢後自動啓動;

   3. 建議提早配置docker 加速器(可選擇阿里雲加速器);

 

[root@docker-harbor]# docker-compose stop ###關閉harbor

 

 

7.docker部署;

7.1 docker 部署;

 

 
[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

 

 

7.2 部署Docker Compose

 

[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

 

8.使用教程;

8.1 harbor 測試;

 

1.訪問域名;

 image.png

 

 

 

(2).默認管理員帳號密碼;

    

     admin/Harbor12345

 

 

(3)新建項目;

 image.png


4.添加用戶;

image.png

 

 

(5).添加項目成員;

image.png


image.png

 

8.2 使用docker 上傳鏡像至harbor;

(1).網拉取一個測試鏡像(nginx)

image.png

 

(2)標記本地鏡像,將其納入harbor倉庫

 

[root@docker-harbor ~]# docker tag docker.io/nginx:latest reg.chehejia.com/public/nginx:v1

 

(3).配置登陸harbor;

 

image.png

 

(4).push 鏡像到harbor;

圖片3_WPS圖片.png 

(5). Harbor 控制檯查看;

image.png

 image.png

 

9.技術總結;

   

1. harbor 使用很是便捷,

      2.   嚴格的權限劃分,對應鏡像使用權限嚴格控制;

   3    . k8s docker 易用;

   4. 部署技術成本較小(Compose 統一管理)

   5.    方便支持ldap接入適用企業用戶;

   6.    審計查詢方便;

相關文章
相關標籤/搜索