Openshift 和Harbor的集成
1.安装配置Harbor
环境rhel 7.6
- 安装docker,python
- 安装docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/docker-compose [root@harbor harbor]# docker-compose version
docker-compose version 1.21., build a133471
docker-py version: 3.3.
CPython version: 3.6.
OpenSSL version: OpenSSL 1.0.1t May
- 下载harbor
https://github.com/goharbor/harbor/releases
我选择的是harbor-offline-installer-v1.6.2.tgz, 之前 1.5的版本没有镜像了,所以建议选择新一点的。
tar -xvf harbor-offline-installer-v1.6.2.tgz
- 修改配置harbor.cfg,我就修改了hostname
[root@harbor harbor]# cat harbor.cfg
## Configuration file of Harbor #This attribute is for migrator to detect the version of the .cfg file, DO NOT MODIFY!
_version = 1.6.
#The IP address or hostname to access admin UI and registry service.
#DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname = 192.168.56.107: #The protocol for accessing the UI and token/notification service, by default it is http.
#It can be set to https if ssl is enabled on nginx.
ui_url_protocol = http #Maximum number of job workers in job service
max_job_workers =
- 修改配置docker-compose.yml,将端口映射修改为8060
networks:
- harbor
ports:
- :
- :
- :
- 根据docker-compose.yml中的镜像把镜像下载到本地
[root@harbor ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/openjdk latest 8e7eacedab93 days ago MB
docker.io/goharbor/redis-photon v1.6.2 473bfdd9d245 weeks ago MB
docker.io/goharbor/registry-photon v2.6.2-v1.6.2 62c30cdb384a weeks ago MB
docker.io/goharbor/nginx-photon v1.6.2 c0602500e829 weeks ago MB
docker.io/goharbor/harbor-log v1.6.2 781ee4ceb5d3 weeks ago MB
docker.io/goharbor/harbor-jobservice v1.6.2 3419a2276f96 weeks ago MB
docker.io/goharbor/harbor-ui v1.6.2 66268686bb96 weeks ago MB
docker.io/goharbor/harbor-adminserver v1.6.2 4024440925a4 weeks ago MB
docker.io/goharbor/harbor-db v1.6.2 0ed4186be0d1 weeks ago MB
- 修改docker配置 /etc/sysconfig/docker,主要是OPTIONS,ADD_REGISTRY,INSECURE_REGISTRY
[root@harbor harbor]# cat /etc/sysconfig/docker
# /etc/sysconfig/docker # Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled=false --log-driver=journald --insecure-registry=192.168.56.107:8060'
if [ -z "${DOCKER_CERT_PATH}" ]; then
DOCKER_CERT_PATH=/etc/docker
fi # Do not add registries in this file anymore. Use /etc/containers/registries.conf
# instead. For more information reference the registries.conf() man page.
ADD_REGISTRY='--add-registry 192.168.56.107:8060'
INSECURE_REGISTRY='--insecure-registry=192.168.56.107:8060' # Location used for temporary files, such as those created by
# docker load and build operations. Default is /var/lib/docker/tmp
# Can be overriden by setting the following environment variable.
# DOCKER_TMPDIR=/var/tmp # Controls the /etc/cron.daily/docker-logrotate cron job status.
# To disable, uncomment the line below.
# LOGROTATE=false
- 重启docker服务
systemctl daemon-reload
systemctl restart docker.service
- 安装
[root@harbor harbor]# ./prepare
Generated and saved secret to file: /data/secretkey
Generated configuration file: ./common/config/nginx/nginx.conf
Generated configuration file: ./common/config/adminserver/env
Generated configuration file: ./common/config/ui/env
Generated configuration file: ./common/config/registry/config.yml
Generated configuration file: ./common/config/db/env
Generated configuration file: ./common/config/jobservice/env
Generated configuration file: ./common/config/jobservice/config.yml
Generated configuration file: ./common/config/log/logrotate.conf
Generated configuration file: ./common/config/registryctl/env
Generated configuration file: ./common/config/ui/app.conf
Generated certificate, key file: ./common/config/ui/private_key.pem, cert file: ./common/config/registry/root.crt
The configuration files are ready, please use docker-compose to start the service.
[root@harbor harbor]# ./install.sh [Step ]: checking installation environment ... Note: docker version: 1.13. Note: docker-compose version: 1.21. [Step ]: loading Harbor images ...
Loaded image: goharbor/registry-photon:v2.6.2-v1.6.2
0155cb3a636c: Loading layer [==================================================>] 23.38 MB/23.38 MB
62f917db5fed: Loading layer [==================================================>] 12.16 MB/12.16 MB
2e192a070c25: Loading layer [==================================================>] 17.3 MB/17.3 MB
64fa72e486ec: Loading layer [==================================================>] 11.26 kB/11.26 kB
23afd47b0f1a: Loading layer [==================================================>] 3.072 kB/3.072 kB
3fa7415d357e: Loading layer [==================================================>] 29.46 MB/29.46 MB
Loaded image: goharbor/notary-server-photon:v0.5.1-v1.6.2
2f06068ec40a: Loading layer [==================================================>] MB/ MB
d6e5bcc842f3: Loading layer [==================================================>] 10.93 MB/10.93 MB
c272c6b03ae0: Loading layer [==================================================>] 2.048 kB/2.048 kB
7b0653de0007: Loading layer [==================================================>] 48.13 kB/48.13 kB
484f0b8e979d: Loading layer [==================================================>] 3.072 kB/3.072 kB
72004696fb26: Loading layer [==================================================>] 10.98 MB/10.98 MB
- 验证
[root@harbor harbor]# docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver /harbor/start.sh Up (healthy)
harbor-db /entrypoint.sh postgres Up (healthy) /tcp
harbor-jobservice /harbor/start.sh Up
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:->/tcp
harbor-ui /harbor/start.sh Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:->/tcp, 0.0.0.0:->/tcp, 0.0.0.0:->/tcp
redis docker-entrypoint.sh redis ... Up /tcp
registry /entrypoint.sh /etc/regist ... Up (healthy) /tcp
登录192.168.56.107:8060, admin/Harbor12345
添加用户,添加项目,然后push镜像验证。
2.Openshift配置
1.需要在每个拉取镜像的节点上配置docker的配置,配置方法参照步骤1的docker配置。
2.修改/etc/origin/master/master-config.yaml配置文件,加入下面这一句
imagePolicyConfig:
internalRegistryHostname: docker-registry.default.svc:
externalRegistryHostname: 192.168.56.107:
3.重新启动master
# master-restart api
# master-restart controllers
在项目中就可以对harbor的公有镜像进行随意拉取和启动了
==============================================================================
openshift相当于一个Harbor的客户端,但是oc自己有一套管理用户权限的机制(可以绑定LDAP),而Harbor自己也有一套管理镜像的权限机制(可以绑定LDAP做认证)
因此这两套机制如何统一联动是个问题。
在原来的interregistry下,每个项目是可以看到自己下面的镜像的
但以相同的路径加入Harbor的镜像明显不再管理之列
而且发现一个bug,通过命令get is的时候发现镜像前全部换成了外部镜像库的地址,不知道是不是我忘了什么地方没有配置
Openshift 和Harbor的集成的更多相关文章
- OpenShift和F5的集成手册
OpenShift和F5的集成步骤,记录如下,如实际操作中有变更会再度编辑修改. 1.整体架构 使用BIG-IP作为Openshift的Router,能实现以下功能: 为Services创建BIG-I ...
- 三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境
写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 文章和搭建环境所需要的yml文件已收 ...
- K8S与harbor的集成
文章编写在有道云笔记,采用MarkDown编写,迁移太麻烦了,具体链接如下: http://note.youdao.com/noteshare?id=a9d344951e1fbb761ef7e4979 ...
- 私有化轻量级持续集成部署方案--06-私有镜像仓库-Harbor
提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 针对私有镜像仓库的问题,Docker 官方提供了搭建仓库服务的镜像服务:registry,使用此镜像就可以部署私有仓 ...
- docker进阶-搭建私有企业级镜像仓库Harbor
为什么要搭建私有镜像仓库 对于一个刚刚接触Docker的人来说,官方的Docker hub是用于管理公共镜像.既然官方提供了镜像仓库我们为什么还要去自己搭建私有仓库呢?虽然也可以托管私有镜像.我们 ...
- 安装Harbor
一.安装Harbor 1. Harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Dock ...
- 搭建Harbor企业级docker仓库
搭建Harbor企业级docker仓库 一.Harbor简介 1.Harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如 ...
- 搭建私有仓库Harbor
搭建Harbor企业级docker仓库 搭建Harbor企业级docker仓库 一.Harbor简介 1.Harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry ...
- VMware Harbor学习
同时安装Clair和Notary# ./install.sh --with-notary --with-clair 与notary或者Clair一起安装时管理Harbor的生命周期当Harbour与N ...
随机推荐
- C++ 静多态与动多态
多态是指通过单一的标识支持不同的特定行为的能力. C++中有两种多态,称为动多态(运行期多态)和静多态(编译期多态),而静多态主要通过模板来实现,宏也是实现静多态的一种途径. 动多态在C++中是通过虚 ...
- MVC – 15.路由机制
15.1.路由检测插件 - RouteDebug 15.2.路由约束 15.3.命名路由 15.4.验证码 15.5.ASP.NET MVC 与 三层架构 15.6.Area区域 15.6.1.尝试将 ...
- springboot 零xml集成mybatis
maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- Hadoop案例(四)倒排索引(多job串联)与全局计数器
一. 倒排索引(多job串联) 1. 需求分析 有大量的文本(文档.网页),需要建立搜索索引 xyg pingping xyg ss xyg ss a.txt xyg pingping xyg pin ...
- JavaScript之setInterval() 函数
定义和用法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被 ...
- HttpServletRequest继承字ServletRequest的常用方法
//获取请求的完整路径String origUrl = req.getRequestURL().toString(); //获取查询的参数String queryStr = req.getQueryS ...
- 主流PHP框架性能评测 (引用)
主要涉及到的框架有 CodeIgniter 老品牌易用性框架yaf 鸟哥用c写的php扩展,高性能框架yii 自动生成代码(gii)laravel 号称最优雅的框架swoole framework 支 ...
- innerText和innerHTML, outerHTML
js中 innerHTML与innerText的用法与区别及解决Firefox不支持Js的InnerHtml问题 用法: <div id="test"> <spa ...
- hdu 3336
KMP的next数组,对于next[i],是:1~i-1的最长的匹配的前缀和后缀的长度(也即在i位置匹配失败后,应该跳到的模式串的位置) 然后我们将所有满足要求的字串按照它的末尾位置分类. #incl ...
- linux常见命令集合(下)
1. tar zcvf backup-$(date "+%Y-%m-%d").tar.gz demo01dir 常用命令集合 echo helloworld date “+%y-% ...