一、准备一台Linux主机

我用了一台VMware虚拟机,配置如下:

IP:192.168.1.79

安装时注意一定要将最大的空间分给/data,因为Harbor默认会使用这个分区

官网硬件要求

harbor helmchart怎么连接 harbor配置_运维


1、开SSH

systemctl enable sshd

2、关闭SELINUX

vi /etc/sysconfig/selinux 
修改下边红字部分 
# This file controls the state of SELinux on the system. 
# SELINUX= can take one of these three values: 
# enforcing - SELinux security policy is enforced. 
# permissive - SELinux prints warnings instead of enforcing. 
# disabled - No SELinux policy is loaded. 
SELINUX=disabled 
# SELINUXTYPE= can take one of three two values: 
# targeted - Targeted processes are protected, 
# minimum - Modification of targeted policy. Only selected processes are protected. 
# mls - Multi Level Security protection. 
SELINUXTYPE=targeted

3、安装rz

yum -y install lrzsz

之后上传文件一定要用-be参数(其中-b是--binary用二进制的方式上传,-e是--escape强制escape所有控制字符),否则上传的文件不完整

rz –be

4、安装wget

yum -y install wget

5、更换yum源,用于提速yum

(1)备份yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

(2)下载新的CentOS-Base.repo 到/etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清理缓存

yum clean all

重新生成缓存

yum makecache

6、关闭防火墙

systemctl stop firewalld 
systemctl disable firewalld

 

二、安装Harbor

官网教程:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

1、安装必须的组件

官网软件要求见下,实际安装最新版本即可

harbor helmchart怎么连接 harbor配置_python_02


安装python

CentOS7默认自带已安装好

安装docker

由于Docker已分为社区版和企业版,要装最新版本只能选择社区版,所以不要直接用yum install docker –y安装,否则安装的是旧版的Docker

(1)安装所需的软件包 yum-utils、device-mapper-persistent-data和 lvm2

yum remove docker-latest-logrotate docker-logrotate docker-selinux dockdocker-engine 
yum install -y yum-utils device-mapper-persistent-data lvm2

(2)国内部分用户可能无法连接docker官网提供的源,这里提供阿里云的镜像节点供测试使用

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
rpm --import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg 
yum makecache fast 
yum -y install docker-ce 
启动docker和检查运行状态 
systemctl start docker 
systemctl status docker 
将服务加入到启动项 
systemctl enable docker

查看版本

harbor helmchart怎么连接 harbor配置_Docker_03


安装docker-compose

编译安装pip

https://pypi.org/project/setuptools/ 
yum install unzip -y 
unzip setuptools-40.4.3.zip 
cd setuptools-40.4.3 
python setup.py install 
https://pypi.org/project/pip/ 
tar -xf pip-18.1.tar.gz 
cd pip-18.1 
python setup.py install 
加速pip 
cd ~ 
mkdir .pip 
ls ~/.pip 
vi ~/.pip/pip.conf 
写入 
[global] 
index-url = http://mirrors.aliyun.com/pypi/simple/ 
  
[install] 
trusted-host=mirrors.aliyun.com 
pip安装docker-compose 
pip install docker-compose 
pip install --upgrade docker-compose 
查看版本 
docker-compose -v

harbor helmchart怎么连接 harbor配置_数据库_04


2、安装Harbor

(1)从这里下载:https://github.com/goharbor/harbor/releases。PS:不×××无法下载

harbor helmchart怎么连接 harbor配置_python_05


一定要下载offline离线安装包:https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz

(2)解压

tar xvf harbor-offline-installer-v1.6.1.tgz 
移动解压后的harbor目录到/data/app/,因为/data分区是划分出来的 
mv harbor /data/app/ 
(3)编辑vi harbor.cfg文件 
cd /data/app/harbor 
cp harbor.cfg harbor.cfg.bak 
vi harbor.cfg 
内容: 
hostname = 192.168.1.79 
ui_url_protocol = http 
max_job_workers = 10 
customize_crt = off 
ssl_cert = /data/cert/server.crt 
ssl_cert_key = /data/cert/server.key 
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,registry 
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 = ******* 
auth_mode = ldap_auth 
self_registration = off 
token_expiration = 60 
project_creation_restriction = everyone 
db_host = postgresql 
db_password = root123 
db_port = 5432 
db_user = postgres 
redis_host = redis 
redis_port = 6379 
redis_password = 
redis_db_index = 1,2,3 
clair_db_host = postgresql 
clair_db_password = root123 
clair_db_port = 5432 
clair_db_username = postgres 
clair_db = postgres 
clair_updaters_interval = 12 
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 = 
registry_custom_ca_bundle =

解释:

原来没注释的参数不要注释掉,否则下边一步不通过。留默认即可

hostname:配置主机名称,不可以设置127.0.0.1,localhost这样的主机名,可以是IP或者域名

ui_url_protocol:指定使用HTTP协议还是HTTPS协议

Email settings:邮箱设置,option配置,只在首次启动生效,可以登陆UI后修改

harbor_admin_password:设置管理员的初始密码,只在第一次登录时使用

auth_mode:用户认证模式,默认是db_auth,也可以使用ldap_auth验证。

db_password:使用db需要指定连接数据库的密码

self_registration:是否允许自行注册用户,默认是on,新版本可以在图形界面中修改。

max_job_workers:最大工作数,默认是10个

customize_crt:是否为token生成证书,默认为on

ssl_cert:nginx cert与key文件的路径, 只有采用https协议是才有意义

ssl_cert:nginx cert与key文件的路径, 只有采用https协议是才有意义

secretkey_path:The path of secretkey storage

admiral_url:Admiral's url, comment this attribute, or set its value to NA when Harbor is standalone

clair_db_password:未启用calir服务,但解压目录下的"./prepare"文件中要检查以下相关参数配置,不能注释,否则环境准备检查不能通过,报"ConfigParser.NoOptionError: No option u'clair_db_password' in section: u'configuration' "相关错误;或者在"./prepare"中注释相关检查与定义,但需要注意,文件中的关联太多,推荐修改"harbor.cfg"文件即可

ldap_url:ladp相关设置,如未采用ldap认证,但解压目录下的"./prepare"文件中要检查以下相关参数配置,不能注释,否则环境准备检查不能通过,报"ConfigParser.NoOptionError: No option u'ldap_timeout' in section: u'configuration' "相关错误;或者在"./prepare"中注释相关检查与定义,但需要注意,文件中的关联太多,推荐修改"harbor.cfg"文件即可

ldap_scope:

harbor helmchart怎么连接 harbor配置_docker_06


self_registration:默认开启自注册,off为关闭

token_expiration:token有效时间,默认30minutes

project_creation_restriction:创建项目权限控制,默认是"everyone"(所有人),可设置为"adminonly"(管理员)

verify_remote_cert:与远程registry通信时是否采用验证ssl

其他使用默认值

(4)确认无误后,使用./install.sh命令开始安装

harbor helmchart怎么连接 harbor配置_Docker_07


harbor helmchart怎么连接 harbor配置_数据库_08


4、启动和停止(必须在docker-compose.yml目录下运行命令,如/data/app/Harbor目录)

停止Harbor

docker-compose stop

harbor helmchart怎么连接 harbor配置_python_09


启动Harbor

docker-compose start

harbor helmchart怎么连接 harbor配置_运维_10


5、登录测试

http://192.168.1.79

初始密码:admin/Harbor12345

harbor helmchart怎么连接 harbor配置_Docker_11


登录后的页面

harbor helmchart怎么连接 harbor配置_数据库_12


使用普通用户登录后创建一个新项目

harbor helmchart怎么连接 harbor配置_数据库_13


项目名称:sonarqube-xywg

harbor helmchart怎么连接 harbor配置_Docker_14


创建完毕

harbor helmchart怎么连接 harbor配置_运维_15


6、上传镜像

在需要上传镜像的服务器上修改docker仓库连接方式为http,否则默认https无法连接。这里以192.168.1.155上我修改的sonarqube镜像为例

vi /etc/docker/daemon.json

加入

{

"insecure-registries" : ["192.168.1.79"]

}

harbor helmchart怎么连接 harbor配置_数据库_16


重启Docker生效

systemctl restart docker

重启Docker之前记得先停止所有容器,如果忘了停止容器,则在重启完Docker后使用docker restart <CONTAINER ID>命令启动容器,不要docker rm <CONTAINER ID>,否则容器修改的内容都被删除了

再次登录试试

docker login 192.168.1.79

harbor helmchart怎么连接 harbor配置_docker_17


开始上传操作

docker commit -m 'xywg' 4da3dcf3c046 sonarqube-xywg 
docker tag sonarqube-xywg 192.168.1.79/operation/sonarqube-xywg 
docker push 192.168.1.79/operation/sonarqube-xywg 
特别举例:将Python官方dokcer镜像上传到本地仓库 
docker tag docker.io/python:3.7.2 192.168.1.79/public/python:3.7.2 
docker push 192.168.1.79/public/python:3.7.2

解释:

docker commit -m 镜像信息 <CONTAINER ID> 新镜像名[:版本号等tag标签]

#从现有容器中生成新镜像

docker tag 源镜像名[:版本号等tag标签] Docker仓库Host/项目名/目标镜像名[:版本号等tag标签]

#改变镜像标签,标记本地镜像是已经被归入Docker仓库的镜像。可以在docker commi的时候直接标记为Docker仓库的镜像

docker push 镜像名[:版本号等tag标签] #将本地的镜像上传到镜像仓库,注意每次push前需docker login 192.168.1.79确认是否已经登录了私有仓库,push后需docker logout 192.168.1.79登出私有仓库。如果push到公共项目必须登录admin账号才可以,如果用了非admin账户push到公共项目会出如下错误:denied: requested access to the resource is denied

harbor helmchart怎么连接 harbor配置_docker_18


不指定版本号等tag标签时,Docker会自动帮我们补上latest的tag。这个latest其实在使用中不是最新的意思,而是默认值(defalut)的意思。

执行结果:

harbor helmchart怎么连接 harbor配置_Docker_19


进入Harbor的项目中查看

harbor helmchart怎么连接 harbor配置_docker_20


查看已上传的sonarqube镜像

harbor helmchart怎么连接 harbor配置_运维_21


PS:Harbor有分级概念:

(1)最上边是项目(项目名):实际操作中按照每个不同的项目名称来建项目,交由不同项目的负责人维护

harbor helmchart怎么连接 harbor配置_数据库_22


(2)接下来是项目中的镜像仓库(镜像名):镜像仓库中的镜像名按照项目名或者jar包war名来命名,但要求命名一次不能随意更改

harbor helmchart怎么连接 harbor配置_docker_23


(3)最后是仓库中不同版本的镜像(tag版本标签):必须标明版本号,不能空或者用lastest(下图lastest是演示)

harbor helmchart怎么连接 harbor配置_python_24


转载于:https://blog.51cto.com/lzlutao/2388635