Harbor仓库概述
Docker官方提供了Registry镜像仓库,但是Registry的功能相对简陋。Harbor是VMware公司提供的一款镜像仓库,提供了权限控制、分布式发布、强大的安全扫描与审查机制等功能
Harbor 私有仓库,它以 Registry 为基础,提供了对用户友好的管理界面,可以帮助我们快速搭建一个企业级的 Docker Registry 服务。
Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 Docker Compose 进行部署。
Harbor优势
基于角色控制:有管理员与普通用户,可赋权普通⽤户,比如只能上传和下载,可根据项⽬来进⾏操作和管理。
基于镜像的复制策略:也与权限相关,比如有只⼀些⽤户与组才能对此项⽬进⾏相对应的操作。
⽀持LDAP/AD域控制:比如南京去下载北京harbor私有仓库的镜像,两端打上局域网的地址,连接在一块,数据信息的传输通过⼀条隧道,会通过两层加密,第⼀层为隧道加密,第⼆层为数据加密,安全可靠。
图像删除和垃圾收集:即回收站机制。
图形UI:具有统计功能,比如访问量与镜像下载热度。
Harbor环境准备
安装 docker
使用阿里云开源软件镜像站。
# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
安装docker-ce
# yum -y install docker-ce
# systemctl enable --now docker安装 docker compose
harbor通过docker-compose进行管理,需要提前下载docker-compose二进制文件
# wget https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64移动二进制文件到/usr/bin目录,并更名为docker-compose
# mv docker-compose-Linux-x86_64 /usr/bin/docker-compose为二进制文件添加可执行权限
# chmod +x /usr/bin/docker-compose安装完成后,查看docker-compse版本
# docker-compose version安装 harbor仓库
下载harbor离线安装包
# wget https://github.com/goharbor/harbor/releases/download/v2.5.1/harbor-offline-installer-v2.5.1.tgz解压harbor
# tar xf harbor-offline-installer-v2.5.1.tgz -C /
创建配置文件
# cd harbor/
# mv harbor.yml.tmpl harbor.yml修改配置文件中的如下内容
# vim harbor.yml
#上述内容省略...
hostname: 192.168.0.17 指定Harbor主机地址
http: #访问方式为http(不用修改)
port: 80 #默认端口(不用修改)
https: 注释https访问方式(需要证书才可以使用)
port: 443 注释端口
certificate: /root/harbor/6864844_kubemsb.com.pem 注释证书文件
private_key: /root/harbor/6864844_kubemsb.com.key 注释证书文件
harbor_admin_password: 12345 访问密码
#下述内容省略...执行预备脚本
# ./prepare
执行安装脚本
# ./install.sh
...
✔ ----Harbor has been installed and started successfully.----
验证运行情况
# docker ps提示:以下操作需要在集群所有节点指定harbor仓库地址
harbor主机修改后直接将修改后的文件拷贝到所有节点即可
[root@harbor harbor]# vim /etc/docker/daemon.json
{
"insecure-registries": ["http://192.168.0.17"]
}
停止harbor后重启docker
[root@harbor harbor]# docker-compose down
[root@harbor harbor]# systemctl daemon-reload && systemctl restart docker
启动harbor
[root@harbor harbor]# docker-compose up -d拷贝文件到集群所有节点
[root@harbor harbor]# for i in 10 11 12 13 14
do
scp /etc/docker/daemon.json 192.168.0.$i:/etc/docker/daemon.json
done所有节点重启docker
[root@harbor harbor]# for i in 10 11 12 13 14
do
ssh 192.168.0.$i systemctl daemon-reload && systemctl restart docker
done镜像上传到Harbor仓库
下载常用镜像(nginx等)镜像并上传到harbor仓库
[root@harbor harbor]# docker pull nginx:1.20.0
[root@harbor harbor]# docker images
登录到harbor仓库上传镜像
[root@harbor harbor]# docker login 192.168.0.17
Username: admin
Password: 这里密码是12345
修改镜像标签
[root@harbor harbor]# docker tag nginx:1.20.0 192.168.0.17/image/nginx:1.20.0
上传镜像
[root@harbor harbor]# docker push 192.168.0.17/image/nginx:1.20.0
K8s集群使用Harbor仓库
创建一个给 Docker registry 使用的 secret
k8s中的secrets用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息。它把 Pod 想要访问的加密数据存放到 Etcd 中。然后用户就可以通过在 Pod 中表明具体的方式访问到这些 Secret 里保存的信息了。
[root@master01 ~]## kubectl create secret --help
[root@master01 ~]# kubectl create secret docker-registry docker-harbor --docker-server=192.168.0.17 --docker-username=admin --docker-password=12345 --namespace=test -o yaml > docker-harbor.yaml
说明:
kubectl create secret #创建命令
docker-registry #资源类型
docker-harbor #名称(自定义)
--docker-server #指定harbor仓库的IP
--docker-username #指定harbor仓库的登录用户名
--docker-password #指定harbor仓库的登录密码
--namespace=test #指定命名空间提示:这个secret只针对于test命名空间生效,其他命名空间的Pod无法使用该secret拉取镜像,如果其他命名空间需要使用secret,需在指定的空间再次创建。
验证查看
[root@master01 ~]# kubectl get secret -n test |grep docker-harbor[root@master01 ~]# kubectl describe secret docker-harbor -n test创建pod并使用secret
[root@master01 ~]# vim nginx.yml
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: test
spec:
imagePullSecrets: #定义镜像下载使用的secrets
- name: docker-harbor #secret名称,与上边创建名称保持一致
containers:
- name: nginx
image: 192.168.0.17/image/nginx:1.20.0 #镜像
创建Pod
[root@master01 ~]# kubectl create -f nginx.yml验证pod 镜像下载地址
[root@master01 ~]# kubectl describe pod -n testHarbor使用注意事项
当docker重启后,harbor服务需要先关闭在进行重启才可以正常使用
关闭harbor方式(进入到harbor路径)
[root@harbor harbor]# docker-compose down
启动harbor
[root@harbor harbor]# docker-compose up -d
查看harbor容器,总共有九个容器
[root@harbor harbor]# docker ps
harbor-jobservice
nginx
harbor-core
registryctl
registry
harbor-portal
harbor-db
redis
harbor-log








评论区