栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker部署Harbor和consul

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker部署Harbor和consul

目录

一、部署 Harbor 服务

1、部署

2. 配置 Harbor 参数文件

3. 启动 Harbor

 4. 查看 Harbor 启动镜像

二、部署consul

1、部署consul服务


一、部署 Harbor 服务

Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版 上。(registry 为其核心组件)

Harbor比registry相比好处是:harbor 支持多种功能、图形化界面管理、多用户权限、角色管理机制、安全机制

服务端主机需要安装 Python、Docker 和 Docker Compose。(web环境支持的是PY语言,故需要安装Python)

docker-compose -v 查看版本

1、部署

下载 Harbor 安装程序

wget http:// harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

2. 配置 Harbor 参数文件

vim /usr/local/harbor/harbor.cfg

5 hostname = 192.168.182.139

关于 Harbor.cfg 配置文件中有两类参数:所需参数和可选参数
(1)所需参数 这些参数需要在配置文件 Harbor.cfg 中设置。
如果用户更新它们并运行 install.sh脚本重新安装 Harbor,
参数将生效。具体参数如下:

hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限 定的域名(FQDN)
例如 192.168.192.139 或 hub.kgc.cn。不要使用 localhost 或 127.0.0.1 为主机名。

ui_url_protocol:(http 或 https,默认为 http)用于访问 UI 和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为 https。(身份验证时会向Mysql数据库进行比对,然后授予令牌)

max_job_workers:镜像复制作业线程。

db_password:用于db_auth 的MySQL数据库root 用户的密码。

customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。
当由外部来源提供密钥和根证书时,将此属性设置为 off。

ssl_cert:SSL 证书的路径,仅当协议设置为 https 时才应用。

ssl_cert_key:SSL 密钥的路径,仅当协议设置为 https 时才应用。

secretkey_path:用于在复制策略中加密或解密远程 register 密码的密钥路径。

(2)可选参数

这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新。
如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数的更新,Harbor.cfg 将被忽略。

注意:如果选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。具体来说,必须在注册或在 Harbor 中创建任何新用户之前设置所需的
auth_mode。当系统中有用户时(除了默认的 admin 用户),auth_mode 不能被修改。具体参数如下:

Email:Harbor需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才需要。
请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS,那么应该通过设置启用SSL email_ssl = TRUE。

harbour_admin_password:管理员的初始密码,只在Harbour第一次启动时生效。之后,此设置将被忽略,并且应 UI中设置管理员的密码。
请注意,默认的用户名/密码是 admin/Harbor12345。

auth_mode:使用的认证类型,默认情况下,它是 db_auth,即凭据存储在数据库中。对于LDAP身份验证(以文件形式验证),请将其设置为 ldap_auth。

self_registration:启用/禁用用户注册功能。禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在 Harbour中创建新用户。
注意:当 auth_mode 设置为 ldap_auth 时,自注册功能将始终处于禁用状态,并且该标志被忽略。

Token_expiration:由令牌服务创建的令牌的到期时间(分钟),默认为 30 分钟。

project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下, 每个人都可以创建一个项目。
如果将其值设置为“adminonly”,那么只有 admin 可以创建项目。

verify_remote_cert:打开或关闭,默认打开。此标志决定了当Harbor与远程 register 实例通信时是否验证 SSL/TLS 证书。
将此属性设置为 off 将绕过 SSL/TLS 验证,这在远程实例具有自签名或不可信证书时经常使用。

另外,默认情况下,Harbor 将镜像存储在本地文件系统上。在生产环境中,可以考虑使用其他存储后端而不是本地文件系统,
如 S3、Openstack Swif、Ceph 等。但需要更新 common/templates/registry/config.yml 文件。

3. 启动 Harbor

sh /usr/local/harbor/install.sh

 4. 查看 Harbor 启动镜像

查看镜像

docker images

 查看容器docker ps -a

面试题:harbro部署会有几个容器(以下都是) 

如果一切都正常,应该可以打开浏览器访问 http://192.168.182.139 的管理页面,默认 的管理员用户名和密码是 admin/Harbor12345。如果一切都正常,应该可以打开浏览器访问 http://192.168.182.139 的管理页面,默认 的管理员用户名和密码是 admin/Harbor12345。

添加项目并且填写项目名称

此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,

Register 服务器在端口 80 上侦听。

将nginx:v1beta上传到harbro仓库中

 将其被配置文件更改

 当从起docker是容器会停止  需要docker-compose up -d 重新让其启动

 字符界面登录harbor

//登录

docker login -u admin -p Harbor12345 http://127.0.0.1

下载镜像进行测试

docker pull cirros

在harbor中 可以看到推送镜像的格式

镜像打标签

[root@apache harbor]# docker tag cirros:latest 192.168.182.139/jingxiangcangku/cirros:v1

但是此时报错  连接失败 使用当前宿主机ip连接失败  但是127.0.0.1可以

以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报

如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜

像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

 如何解决:

先将其删除 

[root@client ~]# vim /usr/lib/systemd/system/docker.service  在此处添加

[root@client ~]# systemctl daemon-reload

[root@client ~]# systemctl restart docker

[root@client ~]# docker login  -u admin -p Harbor12345 http://192.168.182.139

 上传镜像到Harbor

docker push 127.0.0.1/myproject-kgc/cirros:v1

 上传成功

 如果想多个服务器获取本地私有仓库镜像 可以将[root@client ~]# vim /usr/lib/systemd/system/docker.service目录地址指向私有仓库ip

二、部署consul

数据流向:

1、registrator:用于监控返现和注册到consul服务内

2、consul服务:存储reg注册的变化的容器信息,然后变化信息以参数的方式传给template

3、template会接收参数,然后将参数改为具体的upstream的配置放入ng的子配置文件中(1.conf)

最后,nginx -s reload

1、部署consul服务

服务器:192.168.182.138 Docker-ce、Compose 3、Consul、 Consul-template
服务器:192.168.182.139 Docker-ce、registrator

mkdir /root/consul

cp consul_0.9.2_linux_amd64.zip /root/consul

cd /root/consul

unzip consul_0.9.2_linux_amd64.zip

mv consul /usr/bin

consul agent 
-server 		server模式
-bootstrap 	前端框架
-ui 		可被访问的web界面
-data-dir=/var/lib/consul-data 
-bind=192.168.182.139 
-client=0.0.0.0 
-node=consul-server01 &> /var/log/consul.log &

查看集群信息

[root@consul consul]# consul members

 容器服务自动加入consul集群

1. 安装 Gliderlabs/Registrator Gliderlabs/Registrator 
可检查容器运行状态自动注册,还可注销 docker 容器的服务 到服务配置中心。
目前支持 Consul、Etcd 和 SkyDNS2。 
在 192.168.182.139 节点,执行以下操作:2. 测试服务发现功能是否正常
docker run -itd -p:83:80 --name test-01 -h test01 nginx
docker run -itd -p:84:80 --name test-02 -h test02 nginx

3. 验证 http 和 nginx 服务是否注册到 consul
浏览器输入 http://192.168.182.139:8500,“单击 NODES”,然后单击 “consurl-server01”,会出现 2个服务.
在consul服务器上查看服务
[root@consul consul]# curl 127.0.0.1:8500/v1/catalog/services
{"consul":[],"httpd":[],"nginx":[]}

 4. 安装 consul-template

Consul-Template 是一个守护进程,用于实时查询 Consul 集群信息,并更新文件系统 上任意数量

的指定模板,生成配置文件。更新完成以后,可以选择运行 shell 命令执行更新 操作,重新加载

Nginx。Consul-Template 可以查询 Consul 中的服务目录、Key、Key-values 等。这种强大的抽象

功能和查询语言模板可以使 Consul-Template 特别适合动态的创建配置文件。例如:创建

Apache/Nginx Proxy Balancers、Haproxy Backends

5. 准备 template nginx 模板文件
##在consul上操作

vim /root/consul/nginx.ctmpl

upstream http_backend {
  {{range service "nginx"}}
   server {{.Address}}:{{.Port}};   #此处引用的变量会指向后端的地址和端口(动态变化)
   {{end}}
}

server {
  listen 83;
  server_name localhost 192.168.182.139;        #反向代理的IP地址(前端展示的NG服务的IP)
  access_log /var/log/nginx/kgc.cn-access.log;
  index index.html index.php;
  location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;        #后端真实IP
    proxy_set_header Client-IP $remote_addr;    
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    #转发地址
    proxy_pass http://http_backend;
  }
}

6.编译安装nginx

yum install gcc pcre-devel zlib-devel -y

tar zxvf nginx-1.12.0.tar.gz  -C /opt

./configure --prefix=/usr/local/nginx

make && make install

7. 配置 nginx

vim /usr/local/nginx/conf/nginx.conf
http {
     include       mime.types;        #默认存在的
     include  vhost/*.conf;        ####添加虚拟主机目录(consul动态生成的配置文件就会放在这里)
     default_type  application/octet-stream;

##创建虚拟主机目录
mkdir /usr/local/nginx/conf/vhost
##创建日志文件目录
mkdir /var/log/nginx

8. 配置并启动 template

上传 consul-template_0.19.3_linux_amd64.zip 包到/root 目录下

cp consul-template_0.19.3_linux_amd64.zip /root/

unzip consul-template_0.19.3_linux_amd64.zip

mv consul-template /usr/bin/

关联nginx 虚拟目录中的子配置文件操作

consul-template -consul-addr 192.168.182.138:8500 
-template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" 
--log-level=info

另外打开一个终端查看生成配置文件

[root@consul ~]# cat /usr/local/nginx/conf/vhost/kgc.conf 
upstream http_backend {
  
   server 192.168.182.139:83;
   
   server 192.168.182.139:84;
   
}

server {
  listen 83;
  server_name localhost 192.168.182.139;
  access_log /var/log/nginx/kgc.cn-access.log;
  index index.html index.php;
  location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://http_backend;
  }
}

--------------增加一个nginx容器节点------------------------------
增加一个 nginx 容器节点,测试服务发现及配置更新功能
//在registrator服务端注册
docker run -itd -p 85:80 --name test-05 -h test05 nginx

另外打开一个终端查看生成配置文件

注:在主192.168.182.139上添加nginx服务、template、consul服务

而在192.168.182.138上配置registry服务 

而registry是consul服务器派去监听其他docker服务器的模块 他会实时发现和更新当前服务器是否添加其他资源 来给consul主服务器发送配置信息 在显示到前端

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号