首页 > 其他分享 >harbor

harbor

时间:2025-01-09 18:11:07浏览次数:1  
标签:harbor -- secret 镜像 docker com


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
EOF

dnf 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.com
  certificate: /data/harbor/cert/server.crt
  private_key: /data/harbor/cert/server.key

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

vim harbor.yml

metric:
  enabled: true
  port: 9090
  path: /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 -------------------------------

标签:harbor,--,secret,镜像,docker,com
From: https://www.cnblogs.com/ordinaryRoadX/p/18662666

相关文章

  • Harbor配置https
     harbor是不附带任何证书的,因此默认情况下使用http来进行访问K8S在使用harbor作为私有仓库时或生产环境下强烈建议使用https生成证书生产环境下,需要从CA获取证书,测试或者开发可以使用OpenSSL自己生成证书生成私钥#创建证书的存储目录mkdir/home/sslcd/home/sslope......
  • harbor 镜像清理
    查看当前磁盘使用率harbor垃圾清理harbor执行垃圾清理释放磁盘空间harbor垃圾清理报错查看nginx配置worker_processesauto;events{worker_connections1024;useepoll;multi_accepton;}http{tcp_nodelayon;#thisisnecessaryforusto......
  • openEuler欧拉部署Harbor.240108
    ​一、系统优化关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld二、安装Harborwgethttps://github.com/goharbor/harbor/releases/download/v2.8.1/harbor-offline-installer-v2.8.1.tgztarxvfharbor-offline-installer-v2.8.1.tgzdf-hmvharbor//ho......
  • 通过本地私有的镜像仓库harbor解决网络原因导致的jdk无法加载而造成的docker打包错误.
    ​各种网络原因,或是docker.io无法访问,或是阿里的镜像源故障,导致java打包发布的时候报错,很影响代码发布的质量。解决思路:墙出去把jdk下载下来,代码使用本地的harbor库进行引用,一劳永逸。此解决方法也适用于国外优质不频繁变动的镜像源的本地化使用。解决方法1.墙出去,把需要......
  • Podman 安装 harbor
    看了官方文档,harbor无法直接支持Podman,于是尝试手工部署,理论上无容器环境也可以部署,只需要将其中的关系和相关配置文件梳理清楚。手工过程确实很繁琐,没那个耐心还是用官方推荐的方式进行吧。初始化安装podman我部署的操作系统是用的Debian,差异的地方我认为就仅安装podman的方式......
  • debian11部署harbor
    在Debian11上部署Harbor,您可以遵循以下步骤:1.安装Docker和相关依赖:sudoaptupdatesudoaptinstallca-certificatescurlgnupglsb-releasecurl-fsSLhttps://download.docker.com/linux/debian/gpg|sudogpg--dearmor-o/usr/share/keyrings/docker-archive-keyrin......
  • Docker之Harbor管理仓库
    Harbor仓库管理Harbor的概念:harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是DockerRegistry的更高级封装Harbor的特点:1、天生拥有UI界面2、基于角色的访问控制3、支持日志审计(如日志的上传下载)4、支持漏洞扫描harbor的基本组件组件功能harbor-......
  • Helm方式部署Gitlab、Gitlab-Runner、Harbor
    Helm方式部署Gitlab、Gitlab-Runner、Harbor参考文档Runner:https://docs.gitlab.cn/runner/install/kubernetes.htmlGitlab:https://docs.gitlab.cn/charts/installation/Harbor:https://artifacthub.io/packages/helm/harbor/harbor安装gitlab这里演示使用的是国内的极狐g......
  • jenkins+gitlab+docker+harbor+k8s终结篇
    之前我们已经把相关环境,持续集成这一块都实现了。详细内容可查看我cicd专栏前三篇的内容。本篇内容主要是讲解持续集成和持续交付是如何实现和部署的。概念持续交付建立在持续集成的基础上,通过自动化的流程确保软件可以随时随地进行部署。流程这时,持续交付后的代码已经在主......
  • Ubuntu22.04 LTS 部署harbor-v2.7.2高可用
    Ubuntu22.04LTS部署harbor高可用环境准备均需要docker环境IP主机名10.0.0.20harbor0110.0.0.21harbor02一、harbor环境部署1.下载harbor包[root@harbor01:~]#wgethttps://github.com/goharbor/harbor/releases/download/v2.7.2/harbor-offline-insta......