Linux版本:

Linux node3 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

1、关闭防火墙和selinux

2、安装docker-ce

yum install -y yum-utils

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce docker-ce-cli containerd.io -y

systemctl enable docker; systemctl start docker

3、安装docker-compose

harbor对docker-compose版本有要求,尽量安装较高版本

curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

aarch64版本安装:

yum install python3-pip

pip3 install docker-compose

4、安装harbor

4.1 下载harbor

使用离线安装包安装

curl -OL https://github.com/goharbor/harbor/releases/download/v2.2.2/harbor-offline-installer-v2.2.2.tgz

4.2 解压

tar -xf harbor-offline-installer-v2.2.2.tgz

4.3 harbor配置

进入harbor目录,拷贝一份模板配置文件进行修改:

cd harbor

cp harbor.yml.tmpl harbor.yml

参数说明:

//node3为本机主机名,需要事先在/etc/hosts配好

hostname: node3

//使用oidc

auth_mode: oidc_auth

//修改登录密码

harbor_admin_password: 123

//如果使用http则把以下行注释:

‘’’

https:

# https port for harbor, default is 443

port: 445

# The path of cert and key files for nginx

certificate: /etc/harbor/node3.crt

private_key: /etc/harbor/node3.key

‘’’

//如果使用https则把以下行注释,同时需要生成https所需文件:

‘’’

http:

# port for http, default is 80. If https enabled, this port will redirect to https port

port: 80

‘’’


使用该脚本即可,并将node3.key和node3.crt拷贝到harbor.yml配置文件中配置的路径,注意将以下脚本中的node3改为自己的域名或主机名:

openssl genrsa -out ca.key 4096

openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=node3" -key ca.key -out ca.crt

openssl genrsa -out node3.key 4096

openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=node3" -key node3.key -out node3.csr

cat > v3.ext <<-EOF

authorityKeyIdentifier=keyid,issuer

basicConstraints=CA:FALSE

keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

extendedKeyUsage = serverAuth

subjectAltName = @alt_names

[alt_names]

DNS.1=node3

DNS.2=node3.com

DNS.3=node3

EOF

openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in node3.csr -out node3.crt

openssl x509 -inform PEM -in node3.crt -out node3.cert

cp node3.crt /etc/pki/ca-trust/source/anchors/node3.crt

update-ca-trust


4.4 开始安装

如果使用http执行执行install.sh

如果使用https需要执行prepare脚本,经测试,只执行install.sh即可

./prepare

详见Harbor docs | Configure HTTPS Access to Harbor

问题:第一次配置即使用https,此时本地会提示本地没有prepare镜像,会从远端拉取,此时的做法应该是先执行install.sh脚本,再执行./prepare,然后再执行install.sh

5、登录harbor页面

注意:此时登录没有通过OIDC登录选项,需等到配置oidc且测试连接通过后才有该选项,此时暂不考虑,继续往下走

注意使用浏览器打开harbor页面时使用域名,不要使用ip,否则在对接OIDC时会出现如下问题

https://github.com/goharbor/harbor/issues/12982

6、keycloak安装

docker run -p 172.20.42.54:8443:8443 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:13.0.1

注:8443即使用https,8080使用http,公网ip或harbor对接时必须使用https:

Keycloak Docker HTTPS required - Stack Overflow

keycloak默认使用H2数据库,keycloak容器重启数据会丢失,以下使用外部postgres数据库做持久化

6.1 docker network create keycloak-network

6.2 docker run -d --name postgres --net keycloak-network -v /data/keycloak/postgres:/var/lib/postgresql/data -e POSTGRES_DB=keycloak -e POSTGRES_USER=keycloak -e POSTGRES_PASSWORD=password postgres

6.3 docker run -d -p 172.20.42.183:8443:8443 --name keycloak --net keycloak-network -e ADDR=postgres -e DB_USER=keycloak -e DB_PASSWORD=password -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=Kylincloud@123. -e DB_VENDOR=postgres quay.io/keycloak/keycloak:13.0.1

参考: https://github.com/keycloak/keycloak-containers/blob/13.0.1/server/README.md

7、登录keyclock页面

https://IP:8443

点击Administration Console登录管理员用户,密码admin/admin,docker run时可修改,也可进管理页面修改

8、创建realm域

域之间相互隔离,点击左上角`Select realm`然后点击add realm添加域

输入自定义名称,此处为harbor,点击create创建

9、创建Clients

填入Client ID,harbor连接时需要;

Root URL为harbor根路由,最好使用域名,不使用ip

10、配置Client

Harbor中Valid Redirect URLs必须为c/oidc/callback/,如果端口为443则不要在此添加端口号

Secret在harbor连接时会用到,如果界面没有此选项则不用改

添加mapper,类型为Group Membership,Token Claim Name名称在harbor连接时会用到,添加此mapper才能与harbor间保持组同步

11、创建组

12、创建用户

加入到group1,firstName和LastName必填

13、设置用户密码

14、harbor配置

进入harbor页面进行配置

系统管理->配置管理->认证管理

注意:非*可不填,除组名称

OIDC Endpoint:keyclock地址,harbor为在keyclock添加的域名称,harbor前面的保持固定

OIDC客户端标识:keyclock创建的Client ID名称

OIDC客户端密码:keyclock中的Secret,上文有截图

组名称:与keyclock mapper中Token Claim Name一致

OIDC scope: 必须包含openid

自动登录:勾选表示直接使用keyclock中的用户名

详见Harbor docs | Configure OIDC Provider Authentication

测试通过后保存,然后退出登录

15、通过OIDC登录

会跳转到如下界面:

输入用户名密码后会跳转到harbor

此时再使用admin用户登录harbor,能看到用户管理中多了一个test的用户,组管理中多了一个/group1的组,这是从keyclock同步而来

问题:

[ERROR] [/core/controllers/oidc.go:76]: State mismatch, in session: %!s(<nil>), in url: 2pG0sDHtGx32UgFPRlDCag8CVdR17Qkf

解决方法:

使用域名在浏览器登录,不使用ip,如果使用ip登录harbor的话跳转到/c/oidc/login时也会使用ip,但是/c/oidc/callback/强制使用域名

详见:

https://github.com/goharbor/harbor/issues/12982

@lz006 @Leo-ljr

What you browser are you using? Is it Chrome?

Could you use the developer tools to check the requests to /c/oidc/login and /c/oidc/callback, has the cookie sid changed?

Are you using the same hostname to access the login page and in redirect URL of the OIDC provider?

参考链接

Harbor docs | Configure OIDC Provider Authentication

Harbor docs | Configure HTTPS Access to Harbor

Harbor docs | Configure the Harbor YML File

Harbor docs | Configure Harbor User Settings at the Command Line

Keycloak - Guide - Keycloak on Docker

Keycloak Docker HTTPS required - Stack Overflow

https://github.com/goharbor/harbor/issues/12982

Keycloak快速上手指南,只需10分钟即可接入Spring Boot/Vue前后端分离应用实现S【附源码】_Java_老男孩_51CTO博客

Harbor对接OIDC相关推荐

  1. 搭建一个高可用的镜像仓库,这是我见过最详细、最简单的教程

    作者 | 小碗汤 来源 | 我的小碗汤 今天分享一篇搭建一个高可用镜像仓库的教程.详细中夹杂着简单~. Harbor 部署架构图 harbor 使用 helm 部署在 k8s 集群中,通过 ingre ...

  2. [OHIF-Viewers]医疗数字阅片-医学影像-事件总线管理器

    [OHIF-Viewers]医疗数字阅片-医学影像-事件总线管理器 添加按钮>调用命令>注册回调函数 App.js import React, { Component } from 're ...

  3. 【云原生】k8s 管理平台 rancher

    文章目录 一.概述 二.Rancher 架构 三.安装 Rancher 1)安装Helm 2)安装ingress-controller 3)为 Rancher 创建命名空间 4)选择 SSL 配置 5 ...

  4. maven项目对接harbor镜像仓库配置详解分析

    一.配置自定义maven仓库的settings.xml文件 大概130左右的样子添加: <server><!--maven的pom中可以根据这个id找到这个server节点的配置-- ...

  5. containerd对接harbor

    containerd 实现了 kubernetes 的 Container Runtime Interface (CRI) 接口,提供容器运行时核心功能,如镜像管理.容器管理等,相比 dockerd ...

  6. k8s containerd对接harbor私有仓库

    文章目录 1.harbor自签证书配置https 2.containerd对接harbor(在所有节点上操作) 3.配置k8s执行yaml自动拉取 4.测试 1.harbor自签证书配置https h ...

  7. Containerd对接Harbor拉取与上传镜像

    本文将介绍在Kubernetes中使用containerd作为容器运行时如何去通过harbor拉取与上传镜像,在已有的harbor环境下,如何配置containerd去拉取harbor镜像 1.创建存 ...

  8. mysql创建只读权限用户_新品速递 | Harbor 修复权限提升漏洞,MySQL Plus 支持密码强度校验以及审计功能...

    为了更好的服务 QingCloud 用户,我们推出了『产品速递』栏目,帮助大家梳理青小云家最近上线的新功能和新产品,供大家从中快速选择,得以应用. 1 Harbor On QingCloud 升级至 ...

  9. harbor登录验证_Harbor 源码浅析

    Harbor 源码浅析​www.qikqiak.com Harbor 是一个CNCF基金会托管的开源的可信的云原生docker registry项目,可以用于存储.签名.扫描镜像内容,Harbor 通 ...

最新文章

  1. centos7 docker
  2. php util.js,javascript中一些util方法汇总_javascript技巧
  3. Python-列表的常用方法
  4. 初学者应该如何开启自己的编程生涯?,nginx架构图
  5. python后台架构Django教程——日志系统
  6. Unity Animation需要Inspector右键打开Debug模式,然后勾选Legacy,最后再Inspector右键打开Normal...
  7. Java基础篇:方法重载
  8. Leetcode 318答案详解(基于C++位操作)
  9. 用 Java 实现的八种常用排序算法
  10. (几何学:大圆距离)编写一个程序,提示用户输入地球表面两点经度和纬度的度数然后显示它们的大圆距离。
  11. Qt实现柱状图、饼状图、折线图、曲线图
  12. Android 白天黑夜模式切换适配及引起的Activity销毁重启解决
  13. CSDN写漂亮博客的技巧--改字体大小颜色、插入多列表格、字体高亮等
  14. PHP 面试总结(持续更新) --小丑
  15. 各国家 MCC 和 MNC 列表
  16. 机器学习--特征选择(Python代码实现)
  17. echarts 饼图 中间 画圈 + 文字
  18. linux ip打印机驱动程序,Ubuntu下佳能ip1000打印机驱动的安装
  19. 计算机网络基础名词,计算机网络基础名词解释
  20. 大数据架构师拿50W的方法诀窍

热门文章

  1. 使用PL/SQL连接Oracle时报连接超时的错误
  2. 新一年新目标新奋斗新生活
  3. 怎么用计算机名字链接打印机,4个步骤,教会你快速学会电脑如何连接打印机的安装使用方法...
  4. jenkin 部署项目脚本整理
  5. (Java面试之知识点串烧)
  6. Sleuth Kit、Autopsy 的使用
  7. SEO是什么,你如何定义SEO的意思?
  8. php 上传.doc .docx文件,无法上传doc和docx文件
  9. vue获取css内容进行替换_Vue获取DOM元素样式和样式更改示例
  10. LED灯关灯时微亮问题原因及解决办法