1. 安装harbor
[root@longxi-01 ~]# cd /home
[root@longxi-01 ~]# wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
解压
harbor
├── common.sh
├── harbor.v2.10.0.tar.gz
├── harbor.yml.tmpl
├── install.sh
├── LICENSE
└── prepare
[root@longxi-01 home]# cd harbor
修改配置文件
[root@longxi-01 harbor]# mv harbor.yml.tmpl harbor.yml
[root@longxi-01 harbor]# vim harbor.yml
#修改访问地址,我这填写的IP
hostname: 10.211.55.5
#端口
port: 80
#管理员admin密码
harbor_admin_password: Harbor12345
#数据存储目录
data_volume: /home/harbor/data
#日志存储路径
location: /home/harbor/log
#我们这是测试环境没有配置https所以注释掉了
#https:
# port: 443
安装
[root@longxi-01 harbor]# ./install.sh
访问
创建test的私有库
2. 上传镜像至harbor并登录私有库
kubernetes集群所有节点配置harbor仓库,node节点都需要执行
[root@longxi-01 harbor]# vim /usr/lib/systemd/system/docker.service
#新增--insecure-registry 10.211.55.5
ExecStart=/usr/bin/dockerd --insecure-registry 10.211.55.5 -H fd:// --containerd=/run/containerd/containerd.sock
#重载docker
[root@longxi-01 harbor]# systemctl daemon-reload
[root@longxi-01 harbor]# systemctl restart docker
#因为我harbor安装在longxi-01的,重启了一下docker,所以需要重启一下harbor,不然后面登录有点问题
[root@longxi-01 harbor]# docker-compose restart
登录,node节点都需要执行
[root@longxi-01 harbor]# docker login http://10.211.55.5
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
镜像上传测试
这是我先前自建的一个容器,以这个为例,上传到test私有仓库中
#将镜像php8.1.0-alpine:v3名称归档为自建的harbor仓库
[root@longxi-01 harbor]# docker tag php8.1.0-alpine:v3 10.211.55.5/test/php8.1.0-alpine:v3
[root@longxi-01 harbor]# docker push 10.211.55.5/test/php8.1.0-alpine:v3
登录harbor查看
3. kubernetes下载并使用harbor仓库中的镜像
创建docker-registry类型secret
Kubernetes 集群需要访问私有的 Harbor 仓库时,需要在 Kubernetes 中创建一个 secret,以存储 Harbor 仓库的访问凭证。
[root@longxi-01 harbor]# kubectl create secret docker-registry harbor-secret --docker-server=10.211.55.5 --docker-username=admin --docker-password=Harbor12345
[root@longxi-01 harbor]# kubectl get secret |grep harbor-secret
harbor-secret kubernetes.io/dockerconfigjson 1 60s
说明:
- 类型为docker-registry
- –docker-server指定harbor仓库的IP
- –docker-username指定harbor仓库的登录用户名
- –docker-password指定harbor仓库的登录密码
使用测试:
[root@longxi-01 harbor]# vim harbor-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-harbor
spec:
containers:
- name: php
image: 10.211.55.5/test/php8.1.0-alpine:v3
imagePullSecrets:
- name: harbor-secret # 与上面创建的secret名一致
#构建
[root@longxi-01 harbor]# kubectl apply -f harbor-pod.yaml
pod/test-harbor created
#查看是否是harbor拉取的镜像
[root@longxi-01 harbor]# kubectl describe pod test-harbor