就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 Largeconnection 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验证的更多相关文章

  1. mongodb3.0分片及java代码连接操作测试(开启用户验证)

    最近抽时间搭建了一下mongodb简单的分片,整个过程还算是蛮顺利,只不过在用户验证这一块遇到了一些问题,好在最后终于搞定. 一.服务器搭建过程: 1.安装四个mongodb:一个作为config.一 ...

  2. mongodb的连接和开启安全验证

    首先是启动mongodb a.打开cmd,cd进入mongodb的安装目录下的bin目录下面,执行 mongod --dbpath D:\MongoDBdata(数据存放的目录) 或者将mongodb ...

  3. Linux系统部署规范v1.0

    Linux系统部署规范v1.0 目的: 1.尽可能减少线上操作: 2.尽可能实现自动化部署: 3.尽可能减少安装服务和启动的服务: 4.尽可能使用安全协议提供服务: 5.尽可能让业务系统单一: 6.尽 ...

  4. DEDECMS开启邮箱验证通知的解决方法

    [摘要]织梦CMS是开源内容管理系统,是国内开源CMS的领先品牌,目前程序安装量已达七十万,本文介绍DEDECMS会员注册时,开启邮箱验证通知的解决方法. 在论坛上看到很多人都说这个功能没用,邮箱根本 ...

  5. centos6.5中部署Zeppelin并配置账号密码验证

    centos6.5中部署Zeppelin并配置账号密码验证1.安装JavaZeppelin支持的操作系统如下图所示.在安装Zeppelin之前,你需要在部署的服务器上安装Oracle JDK 1.7或 ...

  6. 离线方式部署Ambari2.6.0.0

    Hadoop生态圈-离线方式部署Ambari2.6.0.0 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我现在所在的公司用的是CDH管理Hadoop集群,前端时间去面试时发现很多 ...

  7. windows版本 MongoDB副本集搭建及开启身份验证

    ------------恢复内容开始------------ ------------恢复内容开始------------ MongoDB副本集搭建 我搭建的是一个主节点,两个副节点 构建目录结构如下 ...

  8. Docker部署ELK 7.0.1集群之Kibana安装介绍

    1.下载镜像 [root@vanje-dev01 ~]# docker pull kibana: 2.安装部署 2.1 创建宿主机映射目录 [root@vanje-dev01 ~]# mkdir /e ...

  9. Elasticsearch7.3开启x-pack验证

    原文 Elasticsearch7开启x-pack验证 前言 在Elasticsearch7.3,x-pack已经作为默认的插件集成在Elasticsearch里面了,所以无需在bin/elastic ...

随机推荐

  1. python 3.x 用户登录重设密码

    import os import sys import getpass login_username = 'admin' login_password = ' u = 0 while u < 3 ...

  2. Fiddler无法抓取某些APP的HTTPS请求,无解!!!

    遇到有些APP的HTTPS请求无法抓取!错误提示: !SecureClientPipeDirect failed: System.Security.Authentication.Authenticat ...

  3. 20155233 《网络对抗》 Exp5 MSF基础应用

    主动攻击:ms08_067漏洞攻击 启用msf终端msfconsole然后使用search命令搜索该漏洞对应的模块:search ms08_067 选择输入use exploit/windows/sm ...

  4. jdbc获取blob类型乱码

    一.使用场景: mysql数据库字段类型为longblob,在数据库里看中文字符正常,java读取字串的时候发现中文乱码 使用到了activeMq 二.排查: (1)修改eclipse的环境编码为ut ...

  5. 洛咕 P3756 [CQOI2017]老C的方块

    四染色,贼好想 一个弃疗图形刚好对应一个红-绿-黄-粉色路线(不要吐槽颜色) 就是裸的最小割,建图傻逼懒得写了 #include<bits/stdc++.h> #define il inl ...

  6. libgdx学习记录10——Particle粒子

    粒子对制作画面特效很有用,可以使用Particle Editor进行自行编辑粒子效果,跟图片一起生成.p粒子文件,然后导入到程序中使用. 本文所用的粒子效果是基于其自带的demo的. 实例: pack ...

  7. python常用算法实现

    排序是计算机语言需要实现的基本算法之一,有序的数据结构会带来效率上的极大提升. 1.插入排序 插入排序默认当前被插入的序列是有序的,新元素插入到应该插入的位置,使得新序列仍然有序. def inser ...

  8. 访问kubernetes ingress-controller

    ingress-controller可以理解为一套反向代理系统,本身需要暴露端口到集群外部,以便客户端访问. 根据实际使用,给出两种暴露端口的方式,如下: 方案一 拓扑 说明 ingress-cont ...

  9. 利用十字链表压缩稀疏矩阵(c++)-- 数据结构

    题目: 7-1 稀疏矩阵 (30 分)   如果一个矩阵中,0元素占据了矩阵的大部分,那么这个矩阵称为“稀疏矩阵”.对于稀疏矩阵,传统的二维数组存储方式,会使用大量的内存来存储0,从而浪费大量内存.为 ...

  10. Bitcoin挖矿

    目录 为什么要挖矿? 比特币挖矿 为什么要挖矿? 增加恶意行为的成本 增加记账权力,获取相应的奖励 比特币挖矿 每开采210000个区块,挖矿奖励减半 2009年1月-2012年11月,奖励50BTC ...