k8sharbor——企业级容器镜像仓库

一、概述

k8sharbor是一个企业级的容器镜像仓库,是CNCF(Cloud Native Computing Foundation)的孵化项目。它支持存储、签名和扫描镜像。Harbor提供了CLI和API来管理镜像仓库,同时也可以与pre-commit、RBAC等集成。

Harbor是一个开源项目,旨在解决企业在使用容器时可能面临的安全和管理问题,提供了多租户、LDAP/AD、API、可扩展性等功能。它支持Docker和Kubernetes,并允许管理员设置存储、调度和安全策略等等。

二、安装与配置

1、安装前的准备工作:


# 新建harbor用户和用户组
sudo useradd -r -s /bin/false harbor

# 新建配置文件目录
sudo mkdir -p /etc/harbor/

# 新建数据存储目录
sudo mkdir -p /data/harbor

# 将harbor用户添加到docker组中
sudo usermod -aG docker harbor

2、下载并解压Harbor离线安装包:


wget https://storage.googleapis.com/harbor-releases/release-2.1.2/harbor-offline-installer-v2.1.2.tgz
tar -zxvf harbor-offline-installer-v2.1.2.tgz
cd harbor

3、修改harbor.cfg:


# 设置Harbor的URI
hostname = hub.example.com

# 管理员密码
harbor_admin_password = Harbor12345

# 数据库密码
database_password = root123

# 海外用户访问速度可选配置
https:
  port: 443
  certificate: /your/certificate/path
  private_key: /your/private/key/path

# 使用Docker Compose进行安装
docker-compose up -d

三、镜像管理

1、镜像库的管理:


# 新增项目
curl -X POST -H "Content-Type:application/json" -H "Authorization: Basic YWRtaW46SGFyYm9yMTIzNDU=" http://hub.example.com/api/v2.0/projects -d '{"name": "test"}'

# 删除项目
curl -X DELETE -H "Authorization: Basic YWRtaW46SGFyYm9yMTIzNDU=" http://hub.example.com/api/v2.0/projects/1

2、镜像的上传和下载:


# 登录
docker login -u admin -p Harbor12345 hub.example.com

# 推送
docker tag nginx:latest hub.example.com/test/nginx:latest
docker push hub.example.com/test/nginx:latest

# 拉取
docker pull hub.example.com/test/nginx:latest

3、镜像扫描与漏洞修复:


# 安装和配置Trivy扫描器
wget https://github.com/aquasecurity/trivy/releases/download/v0.15.0/trivy_0.15.0_Linux-64bit.tar.gz
tar zxvf trivy_0.15.0_Linux-64bit.tar.gz
sudo mv trivy /usr/local/bin

# 扫描并列出漏洞
trivy -no-progress alpine:3.10

# 使用Harbor来扫描你的Docker镜像
curl -X POST http://hub.example.com/api/security/scan -H 'Content-Type: application/json' -H 'Authorization: Basic YWRtaW46SGFyYm9yMTIzNDU=' -d '{"registry":"https://index.docker.io","repo":"library/python","tag":"2.7"}'

四、RBAC权限管理

1、基本角色:


# 只读用户
docker login -u read-only-user -p password hub.example.com

# 项目管理员
docker login -u project-admin -p password hub.example.com

# 系统管理员
docker login -u admin -p Harbor12345 hub.example.com

2、镜像仓库的权限管理:


# 新增用户
curl -u admin:Harbor12345 -H "Content-Type: application/json" -X POST "http://hub.example.com/api/v2.0/users" -d '{"username": "testuser","password":"Testpassword1%","email":"test@example.com","realname":"testuser","comment":""}'

# 修改用户密码
curl -u admin:Harbor12345 -H "Content-Type: application/json" -X PUT "http://hub.example.com/api/users/password?username=testuser" -d '{"new_password": "Testpassword2%"}'

# 新增角色
curl -u admin:Harbor12345 -H "Content-Type: application/json" -X POST "http://hub.example.com/api/v2.0/projects/1/members" -d '{"member_user":{"username":"testuser"},"role_id":2}'

五、自动赋予权限的pre-commit Hook

1、自动构建:


# 以Nginx为例,新建一个Dockerfile
FROM nginx:latest
COPY nginx.conf /etc/nginx/conf.d/default.conf

# 创建pre-commit hook
touch .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

# 写入shell脚本
#!/bin/bash
if docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v ${PWD}:/work uumpa/harbor-precommit
then
    exit 0
else
    exit 1
fi

# 提交代码
git add .
git commit -m "feat: add Nginx server"

2、自动赋予项目管理员权限:


# 新建push事件的一个处理页面(push.php)
 array(
        'user_id' => $user_id,
        'username' => $user
    ),
    'role_id' => 2
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$server_output = curl_exec($ch);
curl_close($ch);
?>

六、总结

本文介绍了k8sharbor——一个企业级容器镜像仓库的安装与配置、镜像管理、RBAC权限管理和使用pre-commit Hook实现自动赋予权限等方面。它可以帮助企业在使用容器时提高安全性和管理效率,值得一试。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/245538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:09
下一篇 2024-12-12 13:09

相关推荐

  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • 现在镜像站不行了,怎么办?

    现在镜像站不行了是很常见的问题,本文将从多个方面对此问题进行详细阐述,为大家提供解决方案。 一、检查网络环境 镜像站不通常见的原因之一是网络问题,可能是个人网络不稳定,也可能是IS…

    编程 2025-04-29
  • 解决docker-compose 容器时间和服务器时间不同步问题

    docker-compose是一种工具,能够让您使用YAML文件来定义和运行多个容器。然而,有时候容器的时间与服务器时间不同步,导致一些不必要的错误和麻烦。以下是解决方法的详细介绍…

    编程 2025-04-29
  • Gogs仓库名为什么必须是英文?

    对于使用Gogs进行代码管理的开发者来说,他们可能已经发现Gogs仓库名需要使用英文命名。这是为什么呢?下面我们将分别从历史原因、技术原因、国际化考虑三个方面进行详细阐述。 一、历…

    编程 2025-04-29
  • EulerOS V2R7:企业级开发首选系统

    本文将从多个方面为您介绍EulerOS V2R7,包括系统简介、安全性、易用性、灵活性和应用场景等。 一、系统简介 EulerOS V2R7是一个华为公司开发的企业级操作系统,该系…

    编程 2025-04-28
  • yarn npm 仓库用法介绍及使用案例

    本文将从多个方面对yarn npm仓库进行详细阐述,并为你提供一些实际使用案例。 一、npm和yarn的比较 npm和yarn都是JavaScript的包管理工具。npm在Java…

    编程 2025-04-27
  • 如何在Python中配置国内镜像源

    如果你使用Python进行开发,那么肯定会遇到下载模块或库速度慢的情况。这时,我们就可以配置国内镜像源来解决这一问题。本文将会从多个方面来介绍如何配置国内镜像源。 一、pip配置国…

    编程 2025-04-27
  • Python数据容器切片

    本文将从多个方面详细阐述Python数据容器切片的应用、技巧和方法。 一、切片的基本操作 Python的数据容器包括字符串、列表、元组、字典等,而切片是对这些容器进行子序列提取的常…

    编程 2025-04-27
  • 如何删除gitee远程仓库并清除idear中相关文件

    可能由于多种原因,我们需要删除gitee远程仓库并清除idear中相关文件,以下为详细步骤: 一、删除gitee远程仓库 1、首先登录gitee账号,找到需要删除的仓库。 2、点击…

    编程 2025-04-27
  • Docker批量删除容器详解

    一、前言 Docker是一个开源的应用容器引擎,提供了一种轻量级容器化技术,方便快捷的进行应用打包、发布、运行。作为广泛应用的技术之一,Docker是开发、测试、运维的得力助手。但…

    编程 2025-04-25

发表回复

登录后才能评论