KTE+COS+云原生API网关安装Harbor

2024-06-13 13:46:31 浏览数 (2)

Harbor是一个开源的企业级Docker镜像存储和管理工具。Harbor提供了安全的访问控制、镜像复制和扩展性等功能,使得团队内部可以方便地共享和管理Docker镜像。

Harbor的特点

以下是Harbor的一些主要特点:

  • 安全的访问控制:Harbor支持基于用户、团队和角色的细粒度访问控制,可以帮助企业保护镜像的安全性。
  • 镜像复制:Harbor支持镜像的复制功能,可以将镜像复制到多个节点上,提高了镜像的可用性和容错性。
  • 可扩展性:Harbor可以轻松扩展到数百个节点,以满足企业不断增长的Docker镜像管理需求。
  • 多租户支持:Harbor支持多租户环境,可以帮助企业在不同的团队和部门之间隔离Docker镜像。

本次安装使用到腾讯云KTE、COS、PostgreSQL RDS、CFS和云原生网关等云组件,redis采用有状态K8s应用方式部署。在安装前需要购买并配置好对应的组件。

安装部署

安装前的准备

  • 购买一个云原生API网关,创建完成后在ingress中与KTE关联
  • 创建一个COS对象存储桶(注意:不能启用多区域容灾功能,否则上传镜像时会报错),并创建一个子用户用于管理该桶,并生成一个密钥用于harbor连接访问
  • 购买一台PostgreSQL RDS(1 核 2 GiB,磁盘 10 G),并创建3个库:registry、notary_server、notary_signer、
  • 在KTE中创建一个新的命令空间:ns-harbor
  • 在KTE中创建一个storeageClass:sc-harbor
安装前的准备

安装配置

在控制机上配置好helm,并添加Harbor仓库源

代码语言:txt复制
helm repo add bitnami https://charts.bitnami.com/bitnami

下载helm安装包到本地用于检查分析配置项

代码语言:txt复制
helm pull bitnami/harbor --version:21.4.0

按照下面的格式填入正确的参数后,即可在控制机上安装

代码语言:txt复制
helm install harbor /opt/harbor-21.4.0.tgz -n ns-harbor 
--set global.storageClass=sc-harbor 
--set internalTLS.enabled=false 
--set exposureType=ingress 
--set ingress.core.hostname=harbor.test.com 
--set ingress.core.ingressClassName=kong 
--set ingress.core.controller=ingress-controllers.konghq.com/kong 
--set ingress.notary.hostname=notary.test.com 
--set ingress.notary.ingressClassName=kong 
--set ingress.notary.controller=ingress-controllers.konghq.com/kong 
--set externalURL=https://harbor.test.com 
--set persistence.imageChartStorage.type=s3 
--set persistence.imageChartStorage.s3.accesskey=*** 
--set persistence.imageChartStorage.s3.secretkey=*** 
--set persistence.imageChartStorage.s3.region=ap-guangzhou 
--set persistence.imageChartStorage.s3.bucket=桶名 
--set persistence.imageChartStorage.s3.regionendpoint=cos.ap-guangzhou.myzijiebao.com 
--set persistence.imageChartStorage.s3.secure=true 
--set adminPassword="***" 
--set postgresql.enabled=false 
--set externalDatabase.host="***" 
--set externalDatabase.user="rdsadmin" 
--set externalDatabase.password="***" 
--set externalDatabase.coreDatabase="registry" 
--set externalDatabase.notaryServerDatabase="notary_server" 
--set externalDatabase.notaryServerUsername="rdsadmin" 
--set externalDatabase.notaryServerPassword="***" 
--set externalDatabase.notarySignerDatabase="notary_signer" 
--set externalDatabase.notarySignerUsername="rdsadmin" 
--set externalDatabase.notarySignerPassword="***"

等待几分钟后安装完成,通过harbor.test.com访问配置好的Harbor,正常登录首页如下:

由于COS对Harbor的支持不是很友好,上面的安装配置完成后,上传镜像时仍然会报错(原因:list强一致问题,即put 文件后直接list不一定能list到文件),需要腾讯云提工单(提供客户账号appid、可用区、桶名称信息),要求COS运维下发强一致的配置,会保障能list出来。

另外,从2024年1月份开始腾讯云因为域名合格问题进行了一些限制,必须联系腾讯云客户将使用的桶开白名单才行,否则会报错,提示:bucket you are attempting to access must be addressed using COS virtual-styled domain.

如果想要通过公网能够访问Harobr,可以在云原生API网关的实例信息详情页面,添加“公网负载均衡”即可。

如果镜像保存到CFS文件存储里面,那就将persistence.imageChartStorage.type修改为filesystem并去掉s3相关的配置即可,镜像会保存在前面定义的SC文件存储里面,参考命令如下:

代码语言:bash复制
helm install harbor /opt/harbor-21.4.0.tgz -n ns-harbor 
--set global.storageClass=sc-harbor 
--set internalTLS.enabled=false 
--set exposureType=ingress 
--set ingress.core.hostname=harbor.test.com 
--set ingress.core.ingressClassName=kong 
--set ingress.core.controller=ingress-controllers.konghq.com/kong 
--set ingress.notary.hostname=notary.test.com 
--set ingress.notary.ingressClassName=kong 
--set ingress.notary.controller=ingress-controllers.konghq.com/kong 
--set externalURL=https://harbor.test.com 
--set persistence.imageChartStorage.type=filesystem 
--set adminPassword="***" 
--set postgresql.enabled=false 
--set externalDatabase.host="***" 
--set externalDatabase.user="rdsadmin" 
--set externalDatabase.password="***" 
--set externalDatabase.coreDatabase="registry" 
--set externalDatabase.notaryServerDatabase="notary_server" 
--set externalDatabase.notaryServerUsername="rdsadmin" 
--set externalDatabase.notaryServerPassword="***" 
--set externalDatabase.notarySignerDatabase="notary_signer" 
--set externalDatabase.notarySignerUsername="rdsadmin" 
--set externalDatabase.notarySignerPassword="***"

0 人点赞