Harbor 部署、操作使用指南 |
您所在的位置:网站首页 › harbor访问不了 › Harbor 部署、操作使用指南 |
1. 概述
Harbor是VMware公司开源的企业级Docker Registry 项目,其目标是帮助用户迅速搭建一个 企业级的Docker Registry 服务。虽然Docker官方提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署企业自己的私有镜像仓库也是非常必要的。 Harbor以docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control),AD/LDAP集成,以及审计日志(Auditlogging)等企业用户需求的功能,同时还原生支持中文。 Harbor的每个组件都是以Docker容器的形式构建的,使用docker-compose来对它进行部署;用于部署Harbor的docker-compose模板位于/usr/local/bin/harbor/docker-compose.yml(自定义);Docker harbor有可视化的web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制功能。 1.1 harbor的优势:(1)基于角色控制:有管理员与普通用户,可赋权普通用户,比如只能上传和下载,可根据项目来进行操作和管理。 (2)基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。 (3)支持LDAP/AD:Harbor 可以集成企业内部有的AD/LDAP (类似数据库的一-张表),用于对已经存在的用户认证和管理。 (4)镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。 (5)图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。 (6)审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。 (7)支持RESTful API:RESTful API提供给管理员对于Harbor 更多的操控,使得与其它管理软件集成变得更容易。 (8)Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。 1.2 harbor的核心组件:Harbor在架构上主要有Proxy、 Registry、 Core services、 Database ( Harbor-db)、Log collector ( Harbor-log)、Job services六个组件。 (1)Proxy:这是一个反向代理组件;Harbor 的Registry、UI、Token 服务等组件,都处在nginx 反向代理后边。该代理将来自浏览器、docker clients .的请求转发到后端不同的服务上。 (2)Registry:负责储存Docker 镜像,并处理Docker push/pull 命令;由于要对用户进行访问控制,即不同用户对Docker镜像有不同的读写权限,Registry 会指向一个Token 服务,强制用户的每次Docker pull/push 请求都要携带一个合法的Token,Registry会通过公钥对Token 进行解密验证。 (3)Core services: Harbor的核心功能,主要提供以下3个服务: UI (harbor-ui) :提供图形化界面,帮助用户管理Registry. 上的镜像(image) ,并对用户进行授权。WebHook:网站的一些服务功能,为了及时获取Registry.上 image状态变化的情况,在Registry上配置Webhook, 把状态变化传递给UI模块。Token 服务:令牌,提供身份验证服务,负责根据用户权限给每个Docker push/pull 命令签发Token。 Docker 客户端向Registry 服务发起的请求,如果不包含Token, 会被重定向到Token 服务,获得Token 后再重新向Registry 进行请求。(4)Database (harbor-db) :为core services提供数据库服务,负责储存用户权限、审计日志、Docker镜像分组信息等数据。 (5)Job services:主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上。 (6)Log collector (harbor-log) :负责收集其他组件的日志到一个地方。 Harbor的每个组件都是以Docker 容器的形式构建的,因此,使用Docker Compose 来对它进行部署。通过在docker- compose . yml所在目录中执行docker-compose ps命令来查看。 1.3 harbor主要功能及优势 基于角色的访问控制用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。 基于镜像的复制策略镜像可以在多个Registry实例中复制(可以将仓库中的镜像同步到远程的Harbor,类似于MySQL主从同步功能),尤其适合于负载均衡,高可用,混合云和多云的场景。 图形化用户界面用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。 支持 AD/LDAPHarbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。 镜像删除和垃圾回收Harbor支持在Web删除镜像,回收无用的镜像,释放磁盘空间。image可以被删除并且回收image占用的空间。 审计管理所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。 RESTful APIRESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。 部署简单提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。 1.4 harbor的简易架构:如图所示:所有的请求都经过proxy代理,proxy代理转发给Core services和Registry,其中Core services包括UI界面、token令牌和webhook网页服务功能,Registry主要提供镜像存储功能。如果要进行下载上传镜像,要经过token令牌验证然后从Registry获取或上传镜像,每一次下载或上传都会生成日志记录,会记入Log collector,而用户身份权限及一些镜像语言信息会被存储在Database中。 2. 部署环境搭建(使用云服务器部署) 2.1 卸载服务器中的旧版本docker及其安装时自动安装的所有包 sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc #删除docker其他没有卸载 dpkg -l | grep docker dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P #删除无用的相关的配置文件 sudo apt-get autoremove docker-ce-* #删除docker的相关配置&目录 sudo rm -rf /etc/systemd/system/docker.service.d sudo rm -rf /var/lib/docker #查看确定docker卸载完毕 docker --version 2.2 安装最新版的docker及docker-compose①安装必要的系统工具 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common gnupg-agent②安装GPG证书 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - ③写入软件源信息 sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" ④安装Docker及其组件 sudo apt-get -y update sudo apt-get install -y docker-ce docker-ce-cli containerd.io sudo apt install -y python3-pip sudo pip3 install docker-compose 2.3 创建证书(如不使用域名访问可忽略跳过此步骤)a. 创建一个保存证书的目录 mkdir -p /data/cert/ b. 生成证书颁发机构证书(使用server.yin123.com登录) #生成 CA 证书私钥 sudo openssl genrsa -out ca.key 4096 #生成 CA 证书 openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=server.yin123.com" \ -key ca.key \ -out ca.crtc. 生成服务器证书 #生成 CA 证书私钥 sudo openssl genrsa -out server.yin123.com.key 4096 #生成证书签名请求 (CSR) sudo openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=server.yin123.com" \ -key server.yin123.com.key \ -out server.yin123.com.csr #生成 x509 v3 扩展文件 sudo vim v3.extv3.ext内容如下 authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=server.yin123.com DNS.2=yin123.com DNS.3=server #使用该v3.ext文件Harbor 主机生成证书 sudo openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in server.yin123.com.csr \ -out server.yin123.com.crtd. 向 Harbor 和 Docker 提供证书 #将服务器证书和密钥复制到 Harbor 主机上的 certficates 文件夹中 cp server.yin123.com.crt /data/cert/ cp server.yin123.com.key /data/cert/ #转换crt为cert 供 Docker 使用 #Docker 守护进程将.crt文件解释为 CA 证书,将.cert文件解释为客户端证书 openssl x509 -inform PEM -in server.yin123.com.crt -out server.yin123.com.cert #将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。必须先创建文件夹 mkdir -d /etc/docker/certs.d/server.yin123.com/ cp server.yin123.com.cert /etc/docker/certs.d/server.yin123.com/ cp server.yin123.com.key /etc/docker/certs.d/server.yin123.com/ cp ca.crt /etc/docker/certs.d/server.yin123.com/ #重启docker systemctl restart docker 3. 下载、安装 harborHarbor 提供了多种安装方式: 在线安装:通过在线安装包安装 Harbor,在安装过程中需要从 Docker Hub 获取预置的 Harbor 官方组件镜像。离线安装:通过离线安装包安装 Harbor,从离线安装包中装载所需要的 Harbor组件镜像。源码安装:通过编译源码到本地安装 Harbor。基于 Helm Chart 的安装:通过 Helm 安装 Harbor Helm Chart 到 Kubernetes 集群。这里采用离线安装,去官网下载想要的版本,这里以2.4.2版本为例。 a. 将下载下来的压缩包传到服务器中,并解压 tar xvf harbor-offline-installer-v2.4.2.tgz b. 复制修改配置文件 新版本的harbor配置文件已经改为用harbor.yml而不是harbor.cfg cp harbor.yml.tmpl harbor.yml vim harbor.yml 修改相应参数,参考下图,根据实际情况 c. 执行安装脚本 sudo ./install.sh sudo ./install.sh --with-notary --with-notary --with-trivy --with-chartmuseum同时安装插件Notary、Trivy 和Chart 存储库服务(可选)。 d. 查看组件的启动情况 docker ps cd 到 docker-compose.yml的目录下docker-compose ps e.web访问,进行初始化 此处没有域名,所以使用 ip 登录 输入之前设置的用户名和密码就可以登录了! 4. 卸载 卸载harbor步骤:(针对脚本一键安装) docker-compose down #停止 docker-compose rm -rf /data * #删除挂载的harbor持久化数据的目录内容 rm -rf /opt/harbor #删除harbor目录 docker-compose up -d #重启 5. 基础操作使用参考:Harbor docs | Harbor Administration 5.1 命令行登录、拉取、上传等基础操作命令行登录 新建一个项目 进入项目,可以看到不同的推送命令 命令行拉取镜像 如果在数据库中创建用户,Harbor 会被锁定在数据库模式,将无法更改为其他身份验证模式。 Harbor有2种认证方式:auth_mode 使用的身份验证类型 db_auth——默认,凭据存储在数据库中 ldap——对于LDAP身份验证,需将其设置为ldap_auth 在只读模式下,Harbor 允许docker pull 但阻止docker push和删除存储库和标签。 要对资源使用进行控制,可以为项目设置配额,限制项目可以使用的存储容量,默认情况下,所有项目都有无限的存储使用配额。 复制允许用户以拉取或推送模式在 Harbor 和非 Harbor 注册表之间复制资源。 管理注册表:Registries下可以列出、添加、编辑和删除注册表,只能删除未被任何规则引用的注册表。 创建复制规则参考:Harbor docs | Creating a Replication Rule 5.6 漏洞扫描Harbor 通过开源项目 Trivy 提供对图像漏洞的静态分析,必须在安装 Harbor 实例时启用 Trivy(通过附加安装选项--with-trivy)。 5.7 创建系统机器人帐户Harbor v2.2 引入了管理员创建系统机器人帐户的功能,可以使用这些帐户在 Harbor 实例中运行自动化操作。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |