kubernetes 4

29.7/29.8 harbor部署/ 在kubernetes中使用harbor

29.7/29.8 harbor部署/ 在kubernetes中使用harbor

Harbor是由VMWare中国团队开源的容器镜像仓库。事实上,Habor是在Docker Registry(用于私人仓库)上进行了相应的企业级扩展,从而获 得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,水平扩展,同步,AD/LDAP集成以及 审计日志等。kubernetes使用harbor让k8s创建pod时指定拉取从harbor里镜像。

手动部署

1) 下载最新的docker-compose二进制文件

1
2
curl -L https://github.com/docker/compose/releases/download/1.22.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose

 

2)下载harbor离线安装包并解压
github地址 https://github.com/goharbor/harbor/releases
选择最新的v1.6.1下载

1
tar zxvf harbor-offline-installer-v1.6.1.tgz

 

3)准备ca证书(建议大家购买一个便宜的域名,并去申请一个免费的ssl证书)
如果不想购买域名,那就自己手动生成ca证书吧,可以参考这个文档https://coding.net/u/aminglinux/p/nginx/git/blob/master/ssl/key.md 免费ssl证书 https://freessl.org/

这里提供一个harbor.yuankeedu.com的证书 ,后只要设置下hosts即可
链接:https://pan.baidu.com/s/1FWNWKaGmo9jUql9cgo-1PQ 提取码:e4oh

1
2
3
tar zxvf harbor.yuankeedu.com.key.tar.gz
mkdir -p /data/cert  ##创建ca证书的目录
mv cert/server.* /data/cert/

4)设置并安装harbor

1
cd harbor

 

编辑配置文件

1
2
3
4
5
6
7
8
9
10
11
12
vim harbor.cfg

hostname = harbor.yuankeedu.com   ##填写域名

ui_url_protocol = https

ssl_cert = /data/cert/server.crt   ##指定ca证书路径
ssl_cert_key = /data/cert/server.key

harbor_admin_password = 38003800  ##指定登录harbor密码

sh install.sh //自动安装完成

 

当安装完成后haibor会默认下载多个容器 可以使用docker-compose down 关闭容器 docker-compose up -d 后台启动容器

5)访问

1
2
hosts 绑定域名https://harbor.yuankeedu.com 使用浏览器访问
admin 默认密码为 38003800

 

6) 创建私人项目

7) 拉取公共镜像

1
2
docker pull busybox
docker tag busybox harbor.yuankeedu.com/kun/busybox:lastet  ##镜像打标签 格式为域名/项目/镜像名

 

8) 把镜像推送到harbor

1
2
docker login https://harbor.yuankeedu.com  ##登录harbor服务器
docker push harbor.yuankeedu.com/kun/busybox  ##上传镜像

 

问题 连接不到域名

Error response from daemon: Get https://harbor.yuankeedu.com/v1/users/: dial tcp 192.168.111.131:443: getsockopt: connection refused

解决 服务器上绑定域名

1
2
3
vim /etc/hosts

192.168.80.105 harbor.yuankeedu.com

 

问题 x509

Error response from daemon: Get https://harbor.yuankeedu.com/v1/users/: x509: certificate signed by unknown authority

解决

1
2
3
4
mkdir -p /etc/docker/certs.d/harbor.yuankeedu.com
cat cert/ca > /etc/docker/certs.d/harbor.yuankeedu.com/ca.crt   ##把ca证书的内容写入该目录下的ca.crt文件里
chmod 400 /etc/docker/certs.d/harbor.yuankeedu.com/ca.crt
systemctl restart docker

 

或者

1
2
echo -n | openssl s_client -showcerts -connect harbor.yuankeedu.com:443 2>/dev/null | sed -ne '/-BEGINCERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-bundle.trust.crt
systemctl restart docker

 

9.)在kubernetes中使用harbor

以下操作在master上执行:
1)创建secret

1
kubectl create secret docker-registry my-secret --docker-server=harbor.yuankeedu.com --docker-username=admin  --docker-password=38003800 --docker-email=coco445566@1163.com   ##把harbor的登录用户密码记录在k8s中

 

查看secret

1
kubectl get secret

2)定义一个pod
首先,需要在harbo私有仓库里推送一个httpd的镜像,地址为harbor.yuankeedu.com/aminglinux/httpd:latest

1
2
3
4
docker pull httpd
docker tag  httpd harbor.yuankeedu.com/kun/httpd
docker login https://harbor.yuankeedu.com
docker push harbor.yuankeedu.com/kun/httpd

 

然后再定义yaml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vim httpd.yaml

apiVersion: v1
kind: Pod
metadata:
  name: httpd-pod
spec:
  containers:
  - image: harbor.yuankeedu.com/kun/httpd:latest  ##指定镜像路径
    name: httpd-pod
  imagePullSecrets:
  - name: my-secret  ##指定密码

kubectl create -f httpd.yaml

 

查看pod创建过程的错误信息

1
kubectl describe pod httpd-pod

利用kubeasz项目部署

1)下载docker-compose二进制文件,改名后把它放到项目/etc/ansible/bin/目录下

1
2
wget https://github.com/docker/compose/releases/download/1.18.0/docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /etc/ansible/bin/docker-compose

 

2)下载habor安装文件
github地址 https://github.com/goharbor/harbor/releases

1
wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.0-rc3.tgz

 

3)由于ansible解压的一些问题,需要将官方的tgz包,重新打包为zip包

1
2
3
tar zxf harbor-offline-installer-v1.6.0-rc3.tgz
zip -r harbor-offline-installer-v1.6.0-rc3.zip harbor
mv harbor-offline-installer-v1.6.0-rc3.zip /etc/ansible/down/harbor-offline-installer-v1.6.0.zip

 

4)在deploy节点编辑/etc/ansible/hosts文件

5)在deploy节点执行

1
2
vim /etc/ansible/roles/harbor/defaults/main.yml //修改版本号
ansible-playbook /etc/ansible/11.harbor.yml
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值