K8S Harbor搭建及配置

摘要:
Harbor支持复制安装在多个Registry节点中的映像资源。所有图像都保存在私人注册表中,确保数据和知识产权在公司内部网络中得到控制。

 

一、harbor简介

Habor是由VMWare公司开源的容器镜像仓库,用于存储和分发Docker镜像的企业级Registry服务器,添加一些企业必需的功能特性,例如安全、标识和管理等
事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用
这些新的企业级特性包括:管理用户界面,基于角色的访问控制,AD/LDAP集成以及审计日志等,足以满足基本企业需求。
Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。

官方文档:https://goharbor.io/docs/  官方地址:https://vmware.github.io/harbor/cn/

github用户手册:https://github.com/goharbor/harbor/blob/master/docs/user_guide.md

二、要求

软件要求
软件描述
Python2.7或更高版本请注意,您可能必须在Linux发行版(Gentoo,Arch)上安装Python,默认情况下不安装Python解释器
Docker引擎版本1.10或更高版本有关安装说明,请参阅:https//docs.docker.com/engine/installation/
Docker Compose版本1.6.0或更高版本有关安装说明,请参阅:https//docs.docker.com/compose/install/
OpenSSL建议最新的为Harbor生成证书和密钥
网络端口要求
端口协议描述
443HTTPSHarbor门户和核心API将接受此端口上的https协议请求
4443HTTPS只有在连接到Dock的Docker Content Trust服务启用认证时才需要
80HTTPHarbor端口和核心API将接受此端口上的http协议请求

根据版本的不同,可能环境要求各不相同,具体可以参官方文档:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

 

 三、安装Harbor

1. 安装docker

# 安装依赖包  官方文档:https://docs.docker.com
yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker软件包源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker CE
yum install -y docker-ce

# 启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker

镜像从哪里来?
Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。
地址:https://hub.docker.com/explore

配置镜像加速器:https://www.daocloud.io/mirror  #下载镜像时会加速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

2.安装Docker-compose
Docker-compose有两种安装方式,分别为下载源码和pip安装

下载源码安装(可以指定版本):
1、下载指定版本的docker-compose
  [root@harbor-server ~]# curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2、对二进制文件赋可执行权限
  [root@harbor-server ~]# chmod +x /usr/local/bin/docker-compose
3、测试下docker-compose是否安装成功
  [root@harbor-server ~]#docker-compose --version
pip安装:
[root@harbor-server ~]# yum install python-pip -y
[root@harbor-server ~]# pip install --upgrade pip
[root@harbor-server ~]# pip install docker-compose #默认最新版本,可以使用 docker-compose==version指定安装版本
[root@harbor-server ~]# docker-compose -version 
docker-compose version 1.23.2, build 1110ad0

3.安装Harbor
harbor有两个版本,分别为offline(离线)和online(在线),离线的安装包比较大,后续安装会相对快一点,在线的安装包比较下,但是后续安装会比较慢,这里我们选择离线安装
下载地址:https://github.com/goharbor/harbor/releases
在指定版本的Download Binary处现在对应的安装包,复制链接

 K8S Harbor搭建及配置第1张

[root@harbor-server ~]# wget https://storage.googleapis.com/harbor-releases/release-1.6.1/harbor-offline-installer-v1.6.1.tgz

[root@harbor-server ~]# ls
anaconda-ks.cfg docker-compose-Linux-x86_64 harbor harbor-offline-installer-v1.6.1.tgz
[root@harbor-server ~]# cp docker-compose-Linux-x86_64 /usr/bin/docker-compose
[root@harbor-server ~]# chmod +x /usr/bin/docker-compose
[root@harbor-server ~]# tar -xf harbor-offline-installer-v1.6.1.tgz
[root@harbor-server ~]# ls
c^Hanaconda-ks.cfg harbor harbor-offline-installer-v1.6.1.tgz
[root@harbor-server ~]# cd harbor
[root@harbor-server harbor]# ls
common docker-compose.clair.yml docker-compose.yml harbor.cfg install.sh NOTICE prepare
docker-compose.chartmuseum.yml docker-compose.notary.yml ha harbor.v1.6.1.tar.gz LICENSE open_source_license
************************************************
# vi harbor.cfg
hostname = 192.168.1.200 #当前主机IP
ui_url_protocol = http
harbor_admin_password = Harbor12345 #admin的密码
***********************************************

[root@harbor-server 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-server harbor]#
[root@harbor-server harbor]# ./install.sh

4.Harbor配置文件
解压缩之后,目录下回生成harbor.conf文件,该文件就是Harbor的配置文件。

K8S Harbor搭建及配置第2张K8S Harbor搭建及配置第3张
1 ## Configuration file of Harbor
 2 
 3 # hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
 4 hostname = 172.33.16.1   #需要根据实际情况手动修改
 5 
 6 # 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
 7 ui_url_protocol = http
 8 
 9 # mysql数据库root用户默认密码root123,实际使用时修改下
10 db_password = root123
11 
12 max_job_workers = 3 
13 customize_crt = on
14 ssl_cert = /data/cert/server.crt
15 ssl_cert_key = /data/cert/server.key
16 secretkey_path = /data
17 admiral_url = NA
18 
19 # 邮件设置,发送重置密码邮件时使用
20 email_identity = 
21 email_server = smtp.mydomain.com
22 email_server_port = 25
23 email_username = sample_admin@mydomain.com
24 email_password = abc
25 email_from = admin <sample_admin@mydomain.com>
26 email_ssl = false
27 
28 # 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
29 harbor_admin_password = Harbor12345
30 
31 # 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
32 auth_mode = db_auth
33 
34 # LDAP认证时配置项
35 #ldap_url = ldaps://ldap.mydomain.com
36 #ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
37 #ldap_search_pwd = password
38 #ldap_basedn = ou=people,dc=mydomain,dc=com
39 #ldap_filter = (objectClass=person)
40 #ldap_uid = uid 
41 #ldap_scope = 3 
42 #ldap_timeout = 5
43 
44 # 是否开启自注册
45 self_registration = on
46 
47 # Token有效时间,默认30分钟
48 token_expiration = 30
49 
50 # 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
51 project_creation_restriction = everyone
52 
53 verify_remote_cert = on
配置文件解析

5. 启动

[root@harbor-server harbor]# docker-compose up -d  #启动harbor
harbor-log is up-to-date
harbor-db is up-to-date
redis is up-to-date
registry is up-to-date
harbor-adminserver is up-to-date
harbor-ui is up-to-date
harbor-jobservice is up-to-date
nginx is up-to-date

 6.访问

1、网页形式 http://192.168.1.200/    admin  Harbor12345

 K8S Harbor搭建及配置第4张

默认安装后会自动创建一个名称为library的项目,且访问级别为公开(表示任何人可读,即任何人都可以下载该项目中的镜像)

添加一个用户 mxxl 密码Gota1234  加入到library项目组

K8S Harbor搭建及配置第5张

 K8S Harbor搭建及配置第6张

2、harbor也可以在命令行下进行登录,登录后可以将本地的镜像上传到harbor,也可以下载用户拥有权限项目下的镜像

打tag格式

docker tag SOURCE_IMAGE[:TAG] 192.168.1.200/library/IMAGE[:TAG]
docker push 192.168.1.200/library/IMAGE[:TAG]
#####例如: docker 主机192.168.1.11上#########

[root@localhost ~]# vim /etc/docker/daemon.json #编辑后的语法格式一定要对 否则起不来

{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"], #   "registry-mirrors": ["http://86d2a50b.m.daocloud.io"] 是国内daocloud公司代理的Registry Hub仓库的地址,可以加快国内访问Registry Hub仓库的速度
"insecure-registries": ["192.168.1.200"] #信任IP 如果harbor服务不是默认的80端口 也要把端口加进去

}

[root@localhost ~]# systemctl restart docker
[root@localhost ~]#

[root@localhost ~]# docker login 192.168.1.200 #登录
Username: mxxl
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@localhost ~]# docker tag tomcat:v1 192.168.1.200/library/tomcat:v1
[root@localhost ~]# docker push 192.168.1.200/library/tomcat:v1
The push refers to repository [192.168.1.200/library/tomcat]
9efeb4888585: Pushed 
a0921a1ccaaa: Pushed 
d69483a6face: Pushed 
v1: digest: sha256:55ae66cba90148525597599f5b24a17be30992c1ade3a83691022ed20f4b009d size: 952
[root@localhost ~]# docker tag tomcat:v2 192.168.1.200/library/tomcat:v2
[root@localhost ~]# docker push 192.168.1.200/library/tomcat:v2

 harbor用户指南

 https://github.com/goharbor/harbor/blob/master/docs/user_guide.md

免责声明:文章转载自《K8S Harbor搭建及配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇编程珠玑第二章C#打印图片下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Xamarin.Form中遇到的调用原生Android JAR的问题(一) 编译过程 命名冲突问题

 官方调用java的原理说明:https://docs.microsoft.com/zh-cn/xamarin/android/platform/java-integration/working-with-jni 1. 百度官方选择功能下载SDK 2.创建Android绑定库(Xamarin) 3.将SDK里的jar和so文件一起复制到Jars中 4....

物体检测丨Faster R-CNN详解

这篇文章把Faster R-CNN的原理和实现阐述得非常清楚,于是我在读的时候顺便把他翻译成了中文,如果有错误的地方请大家指出。 原文:http://www.telesens.co/2018/03/11/object-detection-and-classification-using-r-cnns/ 在这篇文章中,我将详细描述最近引入的基于深度学习的对象...

个人亲历运维面试

Docker 1. docker通过哪些方式实现资源隔离的 Docker 主要通过六大 Namespace 来实现资源的隔离 Mount Namespace,挂载命名空间,用来隔离挂载目录,让不同 Namespace 拥有独立的挂载结构,而程序中对挂载信息的修改不会影响到其他 Namespace 中程序的运行。 UTS Namespace,UTS Nam...

Uncaught (in promise) Error: Network Error at createError(axios跨域问题)

axios请求到了数据但then返回不到数据,这是由于vue前端访问地址出现的跨域问题。 1、如果你是自己写的后端,可以添加配置类来避免跨域问题(建议使用) packagecom.ftest.springboot.config; importorg.springframework.context.annotation.Configuration; im...

UVM_COOKBOOK学习【DUT-Testbench Connections】

关注微信公众号摸鱼范式,后台回复COOKBOOK获取COOKBOOK原本和译本 PDF度盘链接 将testbench连接到DUT 概述 本节,我们主要讨论将UVM testbench连接到RTL DUT的问题。 UVM testbench对象不能直接连接到DUT信号来驱动或采样。driver和monitor组件对象与DUT之间的连接是通过一个或多个具有静态...

报错 Invalid options in vue.config.js: "baseUrl" is not allowed 问题解决

报错 Invalid options in vue.config.js: "baseUrl" is not allowed vue3.0版本中 执行 npm run build会出现报错 Invalid options in vue.config.js: "baseUrl" is not allowed 这是因为vue cli3.3之后废除了baseUr...