harbor是一款开源的镜像仓库,在docker仓库的基础上,通过调用api的方式,,进一步封装,支持web界面、项目管理、用户权限划分等诸多特性。目前针对harbor的安装,主要有三种方式:
- 物理机安装
- docker-compose
- k8s集群内部安装
优势
1、用户管理
用户和仓库都是基于项目进行组织的,而用户基于项目可以拥有不同的权限。
2、项目管理
镜像可以在多个Harbor实例之间进行复制(同步)。 适用于负载平衡,高可用性,多数据中心,混合和多云场景。
3、支持LDAP
Harbour与现有的企业LDAP / ADA集成,用于用户认证和管理。
4、图形UI
用户可以轻松浏览,搜索镜像仓库以及对项目进行管理。
5、审计
对存储库的所有操作都进行跟踪
6、支持高可用
支持跨数据仓库镜像远程同步功能,从某种程度上可以满足HA的需求
我使用的版本:
docker-ce | 19.0.5
docker-compose | v1.25.4 | https://github.com/docker/compose/releases
harbor | v1.10.1 | https://github.com/goharbor/harbor/releases
docker-compose安装harbor
1、安装docker-compose
由于网速的原因,在服务器上安装太慢
# 安装 docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 配置权限
chmod u+x /usr/local/bin/docker-compose
# 查看安装是否正常
docker-compose --version
2、安装harbor
# 下载
wget https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-offline-installer-v1.10.1.tgz
# 解压
tar -xvf harbor-online-installer-v1.9.3.tgz
3、配置
进入解压文件内,修改配置
打开文件 harbor.yml
# 修改hostname,也可使用ip
hostname: harbor.example.com
# 修改端口号,默认为80,可以默认
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# 使用https修改,不需要则注释即可
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /your/certificate/path
private_key: /your/private/key/path
# 修改admin的密码
harbor_admin_password: xxx
4、安装
# 检查
./prepare
# 安装
./install
访问 harbor.yml中配置的hostname 即可以访问Harbor服务了
5、使用
登录浏览器,使用上面配置的域名或者ip+port,进入harbor内创建一个项目test
image.png
在/etc/docker/daemon.json
下添加
添加如下配置(若使用域名,替换为域名)
{
"insecure-registries":["xx.xx.xx.xx:8080"]
}
重启使配置生效
# 重启docker
systemctl restart docker
打tag推送镜像
# 登录仓库,使用域名或者ip+端口
docker login -u <username> xx.xx.xx.xx
# 打tag镜像,
docker tag nginx:latest xx.xx.xx.xx:8080/test/nginx:v1
# push
docker push xx.xx.xx.xx:8080/test/nginx:v1
6、配置域名访问
# 更新
apt-get update
# 安装
apt-get install nginx -y
# 添加配置文件
cat <<EOF > /etc/nginx/sites-available/harbor.example.com
server
{
listen 80;
server_name harbor.example.com;
client_max_body_size 0; # 放开上传文件大小限制
index index.php index.html index.htm default.php default.htm default.html;
location /
{
proxy_pass http://xx.xx.xx.xx:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
expires 12h;
}
}
EOF
# 添加软链
ln -s /etc/nginx/sites-available/harbor.example.com /etc/nginx/sites-enabled/harbor.example.com
# 加载配置文件
nginx -s reload
ubuntu添加域名认证 : /etc/docker/daemon.json
{
"insecure-registries":["harbor.example.com"]
}
mac添加域名认证
image.png image.png
k8s安装harbor
1、安装文件地址
项目地址:https://github.com/goharbor/harbor-helm
软件要求:
- Kubernetes cluster 1.10+
- Helm 2.8.0+
2、参数修改
进入harbor-helm下,调整values.yaml参数
type: nodePort 这里我们使用对外暴露方式为nodePort
enable: false 这里不适用tls,使用http,通过nginx反向代理
**externalURL: http://{IP}:{PORT} **这里使用ip+端口号,设置代理请求地址
image.png3、pvc设置
这里使用了nfs存储,默认的storageclass,如有不同存储后端,或者指定存储storageclass,需要自行修改配置。
实际参数大小,需要调整,这里暂时测试运行,使用的默认的pvc配置,没有做改动。
4、运行
harbor-helm仓库路径下
helm install my-harbor .
5、访问
kubectl get svc -n <harbor-namespace> | grep harbor | grep NodePort
6、导出yaml文件安装
为了便于安装,在harbor-helm下将values.yaml文件参数调整后,通过helm导出安装文件
helm install harbor-release harbor-helm --namespace=harbor-release --dry-run >> harbor-release.yaml
镜像同步
harbor仓库支持镜像同步复制,通过管理员账户登录配置
1、仓库管理
左侧的仓库管理选项,点击新建目标,参数配置如下
提供者:harbor
目标明:自定义名字
目标URL:目标harbor的地址
访问ID:目标仓库的账号
访问密码:目标仓库的密码
验证远程证书:这里选择忽略,没有使用证书
image.png
2、复制管理
选中左侧的复制管理,点击新建规则,参数配置如下
名称:自定义
描述:简单描述信息,选填
复制模式:Push-based
资源过滤器:默认不填,即全部复制
目标Registry:选择对应仓库
触发模式:根据实际需要选择,这里暂时测试了定时
image.png
网友评论