harbor


1、harbor 官网

https://goharbor.io/docs/2.12.0/install-config/
https://github.com/goharbor/harbor/tags

2、harbor 安装先决条件

1.硬件

CPU 4U
Mem 8G
Disk 160G

2.软件

  1. docker (20.10.10+)
  2. docker-compose (v1.18.0+)
cat << EOF > /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/rhel/gpg
EOFdnf clean all
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
docker version
systemctl status docker
systemctl start docker
systemctl enable docker
systemctl status docker
docker version
docker-compose --version

3、安装 harbor

cd /opt
wget https://github.com/goharbor/harbor/releases/download/v2.12.1/harbor-offline-installer-v2.12.1.tgz
tar xzvf harbor-offline-installer-v2.12.1.tgz

4、配置对 Harbor 的 HTTPS 访问

// 因为是公共证书,所以直接放在目录即可
mkdir -p /data/harbor/cert
mv /tmp/server.* /data/harbor/cert/

cd /opt/harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml

hostname: regharbor.xx.comcertificate: /data/harbor/cert/server.crtprivate_key: /data/harbor/cert/server.key

4、开启监控指标 (非必须,根据个人需求开启)

vim harbor.yml

metric:enabled: trueport: 9090path: /metrics

5、运行 prepare 脚本以启用 HTTPS

./prepare --with-trivy
./install.sh --with-trivy

6、测试

https://regharbor.xx.com
docker login regharbor.xx.com

1. 首先在 harbor 新建一个项目 test

2. 从 docker hub 下载一个镜像

docker pull busybox

3. 为镜像打一个私有仓库的标签,格式为:仓库服务地址/项目名称/镜像名称: [TAG],TAG 可以不写默认就是 latest

docker tag busybox regharbor.xx.com/test/busybox

4. 推送镜像到 harbor 仓库

docker push regharbor.xx.com/test/busybox

5. 在其他机器 pull 此镜像

docker pull regharbor.xx.com/test/busybox

7、重新配置 harbor

1. 停止

docker compose down -v

2. 更新 harbor.yml

vim harbor.yml

3. 运行 prepare 脚本以填充配置

./prepare --with-trivy

4. 重新创建并启动 Harbor 实例

docker-compose up -d

8、升级 harbor 和 迁移数据

1.停止 harbor

// find / -name harbor
cd /opt/harbor
docker-compose down

2.备份 harbor

cd /opt/
tar zcf harbor-4.207-20250108.tar.gz harbor
sz harbor-4.207-20250108.tar.gz

3.备份数据库

默认情况下,该数据库位于目录 /data/database 中
cd /data
tar zcf harbor-database-4.207-20250118.tar.gz database
sz harbor-database-4.207-20250118.tar.gz

4.下载离线包

// https://github.com/goharbor/harbor/releases/tag
cd /root
wget https://github.com/goharbor/harbor/releases/download/v1.10.0/harbor-offline-installer-v1.10.0.tgz

5.下载迁移工具

// docker pull goharbor/harbor-migrator:[tag]
将 [tag] 替换为新港版本,例如 v1.10.0
docker pull goharbor/harbor-migrator:v1.10.0

6.下加载新版本镜像

tar zxf harbor-offline-installer-v1.10.0.tgz
docker image load -i harbor/harbor.v1.10.0.tar.gz

7.升级 harbor.yml 文件

// v1.10.0
docker run -it --rm -v /opt/harbor/harbor.cfg:/harbor-migration/harbor-cfg/harbor.yml goharbor/harbor-migrator:v1.10.0 --cfg up
// v2.4.0
cp /root/harbor/harbor.yml /opt/harbor/
docker run -it --rm -v /:/hostfs goharbor/prepare:v2.4.0 migrate -i /opt/harbor/harbor.yml
ps:
每个版本的升级命令都不一样,自行查阅官网 https://goharbor.io/docs/2.4.0/administration/upgrade/

8.运行 install.sh 脚本

cd /root/harbor
./install.sh

9、docker login

在命令行模式下,需要先执行 docker login,登陆成功后,才可以 docker pull
我们在命令行方式下,输入 docker login 登陆成功后,会在 /root/.docker/ 目前下生成一个 config.json 文件打开后可以看到如下的内容:
{
"auths": {
"regharbor.xxx.com": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="
}
}
}

– secret:是一个保存少量诸如密码,token 等敏感数据的对象,采用 secret 方式保存可以获取更好的控制力和减少敏感数据意外暴露的风险,一般作为文件挂载到容器中或者是在 kubelet 拉取镜像时使用
– serviceAccount:为运行在pod中的进程提供身份信息
使用 secret 和 serviceAccount 就可以实现 kubernetes 在创建 pod 的时候通过 docker registry server 的认证来拉取镜像,下面我们看下如何来使用这 2 个对象

  1. 创建secret:
    有 2 种方式可以创建 secret:
  • 使用命令行:
    kubectl create secret docker-registry SECRET_NAME --namespace=NAME_SPACE
    --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER
    --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
    其中,
    docker-server 为通过docker login登陆时输入的地址
    docker-username 为登陆时的账号
    docker-password 为登陆时的密码
    docker-email 为注册的账号时的邮箱地址
    创建成功后,我们看一下secret的内容:
    kubelet get secret firmament-secret --namespace=sky-firmament -o yaml
    图中data部分,dockerconfigjson为data的类型,后面的一长串即为进过base64加密的内容,通过解密后,你就会发现,里面的内容基本上就是/root/.docker/config.json中的内容
  • 定义yaml文件:
    中的type必须是:kubernetes.io/dockerconfigjson
  1. 创建serviceAccount
  2. 让Harbor为kubernetes提供镜像服务
    首先在Harbor中创建创建用户,项目,将项目设置为私有,将创建的用户加入到项目中,设置用户的角色为开发者或者为项目管理员确保该账户具有拉取该仓库镜像的权限
    其次,按照上述的方式创建secret和serviceAccount,其中secret中的用户名、密码和邮箱地址信息为在Harbor中创建的用户的信息
    这样配置后就可以让kubernetes从Harbor拉取镜像了

总结
Harbor 提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制
kubernetes 中通过 namespace 来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将 kubernetes 使用的镜像资源进行管理和访问控制,增强镜像使用的安全性
尤其是在多租户场景下,可以通过租户、namespace 和项目相结合的方式来实现对多租户镜像资源的管理和访问控制

             ------------------------------- THE END -------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/866656.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

官宣!通义灵码 AI 程序员全面上线

通义灵码2.0 你的AI程序员来了!速来领取你的全新魔法搭档吧! 通义灵码AI程序员成为全球首个同时支持 VS Code、JetBrains IDEs 开发工具的AI程序员产品。此次上线的AI程序员相比传统AI辅助编程工具,能力更全面,可以让开发者以更高效、更沉浸的方式完成编码任务,通过全程对…

htb Escape

扫描端口 nmap -sC -sV -p- -v -Pn -T4 10.10.11.202 Host is up (0.39s latency). Not shown: 65515 filtered tcp ports (no-response) PORT STATE SERVICE VERSION 53/tcp open domain Simple DNS Plus 88/tcp open kerberos-sec Microsoft Wind…

2025年销售攻略

随着2024年的落幕,我们迎来了全新的2025年,新一轮的业绩争夺战已经悄然打响。面对新的挑战与机遇,我们该如何在销售领域脱颖而出,实现业绩的稳步增长呢? 一、明确目标,勇往直前 销售工作离不开明确的目标。设定清晰、可行的销售目标,并将其分解为具体的时间节点和任务,…

杭州铭师堂的云原生升级实践

杭州铭师堂,是一个致力于为人的全面发展而服务的在线教育品牌。杭州铭师堂秉持“用互联网改变教育,让中国人都有好书读”的使命,致力于用“互联网+教育”的科技手段让更多的孩子都能享有优质的教育,促进他们的全面成长。作者:升学e网通研发部基建团队 公司介绍 杭州铭师堂…

新年餐饮业营销攻略:数据驱动,精准营销!

餐饮业借助项目管理软件开展新年营销,可以更加高效、精准地管理营销活动,提升销售业绩和用户体验。通过选择合适的软件工具、制定详细的营销计划、设置可视化的任务列表和进度跟踪、促进团队协作和沟通、收集和分析数据以优化营销策略、评估和调整项目计划以及总结经验和教训…

解锁新应用:探索GPU扩展是如何提升渲染农场的工作效率

联瑞GPU扩展方案在渲染农场的应用,是在原有计算机设备的基础上增加GPU的数量,不用额外购买GPU服务器,有效的帮助企业降本增效渲染农场是一种基于计算机GPU集群的渲染解决方案,主要用于分布式渲染。它将渲染任务分发到多个计算机(渲染节点)上,通过GPU并行计算和协同工作,实…

Task实战

一:场景描述 在一个文件下查找js文件中指定的关键字,并记录完成查找所需时间。完成此任务使用了3种写法,分别为: 1.仅使用一个task,在任务中进行for循环,循环调用异步业务处理方法,只利用一个后台线程进行业务处理。2.先查找出文件路径,然后对每一个文件路径创建一个ta…

多网卡配置bond模式4(Ubuntu22.04)

编辑网卡配置文件 vim /etc/netpla/00-installer-config.yaml示例一:示例二:

中考英语优秀范文-013 Computer in my life 电脑在我的生活中

中考英语优秀范文-013 Computer in my life 电脑在我的生活中 1 写作要求 假设某中学生英文报开展关于计算机与学生生活的征文活动,请你根据下表所提示的要点,以Computer in my life为题,用英语为该报写一篇短文,简述计算机在你生活中的用途,并就计算机对你生活的影响谈谈…

BAPI

预制发票:BAPI_INCOMINGINVOICE_PARKDATA: ls_header TYPE bapi_incinv_create_header,lt_itemdata TYPE TABLE OF bapi_incinv_create_item,ls_itemdata TYPE bapi_incinv_create_item,lt_taxdata TYPE TABLE OF bapi_incinv_create_tax,ls_taxdata TYPE bapi_…

车云远程诊断系统 - DRS

INTEWORK-DRS(Diagnostic Remote-Service System)是由经纬恒润自主研发的一款基于车云远程的诊断解决方案产品,具备整车级或单ECU级的如参数读写、故障读清、例程标定、动作测试和程序升级等传统常见诊断功能,并且支持基于云任务的车端主动诊断如车辆故障主动预警、关键数据…

Kubernetes集群运维生产常见问题解析与解决方案

前言:在Kubernetes集群的日常运维工作中,我们难免会遇到各种各样的问题。这些问题可能涉及到集群的部署、配置、监控、性能优化等多个方面。为了解决这些问题,我们需要不断地学习和积累经验。在这里,我打算收集并整理一些网友曾经提出的问题,并提供相应的解析和解决方案,…