zoukankan      html  css  js  c++  java
  • 部署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 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
    
  • 相关阅读:
    eclipse中的项目的JRE换成JDK
    Eclipse中maven项目的创建和运行
    git 发布命令
    vbox中虚拟ubuntu增加新的虚拟硬盘
    MyServer
    java常用的中间件
    高并发解决方案
    浅谈SpringMVC
    浅谈HIbernate
    javaweb笔记七
  • 原文地址:https://www.cnblogs.com/keithtt/p/7596290.html
Copyright © 2011-2022 走看看