部署harbor1.2.0开启ldap验证
就harbor本身部署来说是非常简单的,之前写过详细步骤,这里不再重复。
这里主要是总结一下部署当中遇到的问题,以及如何开启ldap验证。
harbor默认是通过http通信的,当然也支持https,但是需要配置,不太方便。docker默认是通过https通信的。所以在默认情况下,docker跟harbor是不能直接通信的,常用的办法有几种:
- 在docker客户端修改docker启动参数,添加
--insecure-registry=harbor.oupeng.com - 在harbor服务端开启https
- 使用nginx或haproxy代理,在代理上开启https
如果是为了简单方便,而且客户端也可以重启docker,那么直接使用第一种就好。
如果docker客户端服务器上已经跑了各种容器,不能轻易重启docker服务,那么就该使用下面两种了。
如果你有现成的https证书,又有现成的代理服务器,那么直接使用代理就好了,既不用修改客户端,也不用修改服务端。
这是我的nginx代理配置:
# vim /usr/local/nginx/conf/vhosts/harbor.oupeng.com.conf
upstream harbor-oupeng-com {
server 122.14.206.203 weight=10 max_fails=3 fail_timeout=10;
}
server {
listen 80;
server_name harbor.oupeng.com;
location / {
rewrite ^(.*)$ https://$host$1 permanent;
}
access_log /usr/local/nginx/logs/harbor.oupeng.com.access.log json;
error_log /usr/local/nginx/logs/harbor.oupeng.com.error.log;
}
server {
listen 443 ssl;
server_name harbor.oupeng.com;
ssl on;
ssl_certificate /usr/local/nginx/conf/keys/oupeng.com.pem;
ssl_certificate_key /usr/local/nginx/conf/keys/oupeng.com.key;
ssl_session_timeout 10m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
access_log /usr/local/nginx/logs/harbor.oupeng.com.ssl.access.log json;
error_log /usr/local/nginx/logs/harbor.oupeng.com.ssl.error.log error;
location / {
proxy_pass http://harbor-oupeng-com;
proxy_next_upstream error http_502 http_503 http_504 timeout;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 0;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
break;
}
}
使用代理之后出现了两个问题:
1、push镜像中途中断报EOF错误。
解决办法:在registry的配置文件里添加一个参数relativeurls: true。
# vim /docker/harbor/common/config/registry/config.yml
...
http:
addr: :5000
relativeurls: true
secret: placeholder
debug:
addr: localhost:5001
...
# docker-compose down
# docker-compose up -d
2、push镜像中途中断报413 Request Entity Too Large和connection reset by peer错误。
每次push到一个固定的大小中断,很明显是有哪里设置了限制,由于加代理之前使用正常,所以问题应该在代理的设置上。
解决办法:修改nginx的参数client_max_body_size 0;,这个参数用来限制上传文件大小,设置为0表示不限制。可以查看上面的配置。
以上完成就可以使用admin账户正常pull/push镜像了。
配置LDAP验证
这里也踩到两个坑,按照官方guide修改配置文件auth_mode = ldap_auth,然后添加ldap相关搜索信息,重启harbor。
本以为就可以用ldap账户登录了,尝试登录了一下,发现不行。查看日志,提示验证方式依然为db_auth,也就是本地数据库验证。
后来发现,要使ldap生效,要确认两个文件的设置正确:
# cat /docker/harbor/common/config/adminserver/env
...
AUTH_MODE=ldap_auth
...
# cat /docker/harbor/data/config/config.json
...
"auth_mode": "ldap_auth",
...
然而修改配置文件只改变了第一个文件,因此配置没生效。手动修改第二个文件,然后再次重启harbor。
这下好了吧?然而,并没有。
把源码clone下来随意浏览了一下,无意中看到了一张图:

难道要在UI上配置?试试。

竟然好了...配置文件敢情是假动作。
然后,又出现了另外一个问题。在UI上可以正常登陆,但是在终端上无法docker login xxx,就提示来看,是https通信问题。
经过一番排查,最后发现是token验证问题。解决办法,修改token服务的URL协议为https即可。
# vim /docker/harbor/common/config/registry/config.yml
...
auth:
token:
issuer: harbor-token-issuer
realm: https://harbor.oupeng.com/service/token
rootcertbundle: /etc/registry/root.crt
service: harbor-registry
...
# docker-compose down
# docker-compose up -d
部署harbor1.2.0开启ldap验证的更多相关文章
- mongodb3.0分片及java代码连接操作测试(开启用户验证)
最近抽时间搭建了一下mongodb简单的分片,整个过程还算是蛮顺利,只不过在用户验证这一块遇到了一些问题,好在最后终于搞定. 一.服务器搭建过程: 1.安装四个mongodb:一个作为config.一 ...
- mongodb的连接和开启安全验证
首先是启动mongodb a.打开cmd,cd进入mongodb的安装目录下的bin目录下面,执行 mongod --dbpath D:\MongoDBdata(数据存放的目录) 或者将mongodb ...
- Linux系统部署规范v1.0
Linux系统部署规范v1.0 目的: 1.尽可能减少线上操作: 2.尽可能实现自动化部署: 3.尽可能减少安装服务和启动的服务: 4.尽可能使用安全协议提供服务: 5.尽可能让业务系统单一: 6.尽 ...
- DEDECMS开启邮箱验证通知的解决方法
[摘要]织梦CMS是开源内容管理系统,是国内开源CMS的领先品牌,目前程序安装量已达七十万,本文介绍DEDECMS会员注册时,开启邮箱验证通知的解决方法. 在论坛上看到很多人都说这个功能没用,邮箱根本 ...
- centos6.5中部署Zeppelin并配置账号密码验证
centos6.5中部署Zeppelin并配置账号密码验证1.安装JavaZeppelin支持的操作系统如下图所示.在安装Zeppelin之前,你需要在部署的服务器上安装Oracle JDK 1.7或 ...
- 离线方式部署Ambari2.6.0.0
Hadoop生态圈-离线方式部署Ambari2.6.0.0 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我现在所在的公司用的是CDH管理Hadoop集群,前端时间去面试时发现很多 ...
- windows版本 MongoDB副本集搭建及开启身份验证
------------恢复内容开始------------ ------------恢复内容开始------------ MongoDB副本集搭建 我搭建的是一个主节点,两个副节点 构建目录结构如下 ...
- Docker部署ELK 7.0.1集群之Kibana安装介绍
1.下载镜像 [root@vanje-dev01 ~]# docker pull kibana: 2.安装部署 2.1 创建宿主机映射目录 [root@vanje-dev01 ~]# mkdir /e ...
- Elasticsearch7.3开启x-pack验证
原文 Elasticsearch7开启x-pack验证 前言 在Elasticsearch7.3,x-pack已经作为默认的插件集成在Elasticsearch里面了,所以无需在bin/elastic ...
随机推荐
- scala-数组操作
package com.bigdata import scala.collection.mutable.ArrayBuffer object ArrayO { def main(args: Array ...
- 20155209 林虹宇 Exp9 Web安全基础
Exp9 Web安全基础 XSS 1.Phishing with XSS 跨站脚本攻击,在表单中输入超文本代码 在网页中形成一个自制的登陆表单,然后将结果反馈到自己的主机上. 攻击成功 2.Store ...
- Caffe 深度学习框架上手教程
Caffe 深度学习框架上手教程 blink 15年1月 Caffe (CNN, deep learning) 介绍 Caffe -----------Convolution Architec ...
- 校内模拟赛 coin
题意: n*m的棋盘,每个格子可能是反着的硬币,正着的硬币,没有硬币,每次可以选未选择的一行或者未选择的一列,将这一行/列的硬币取反.如果没有可选的或者硬币已经全部正面,那么游戏结束. 最后一次操作的 ...
- RegExp,实现匹配合法时间(24小时制)的正则表达式
合法时间格式 00:00:00 - 23:59:59 格式分析:H + ":" + M + ":" + S H-分析: 00:00:00 - 09:5 ...
- ES6 之reduce的高级技巧
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值.reduce() 方法接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 ...
- [UOJ#268]. 【清华集训2016】数据交互[动态dp+可删堆维护最长链]
题意 给出 \(n\) 个点的树,每个时刻可能出现一条路径 \(A_i\) 或者之前出现的某条路径 \(A_i\) 消失,每条路径有一个权值,求出在每个时刻过后能够找到的权值最大的路径(指所有和该路径 ...
- python常用算法实现
排序是计算机语言需要实现的基本算法之一,有序的数据结构会带来效率上的极大提升. 1.插入排序 插入排序默认当前被插入的序列是有序的,新元素插入到应该插入的位置,使得新序列仍然有序. def inser ...
- JS基础内容小结(基础)(一)
字符串的各类方法 str.charAt(1); 从第0个开始计算获取第一个子符串,如str=‘你好吗’获取到‘好’ str.charCodeAt(1); 获取对应字符串的编码数字:从第0个开始计算 S ...
- vsftp在防火墙开启需要开放的端口
1.开放tcp端口 firewall-cmd --zone=public --add-port=20/tcp --permanent firewall-cmd --zone=public --add- ...