第六篇 kubernetes helm部署harbor镜像仓库

摘要:
所以这里建议使用httpsdocker客户端访问#在DockerClient的启动文件里面加入--insecure-registry参数,强制信任这个镜像仓库。

1.harbor镜像仓库简介
第六篇 kubernetes helm部署harbor镜像仓库第1张

 Harbor 是为企业用户设计的容器镜像仓库开源项目,包括了权限管理(RBAC)、LDAP、审计、安全漏洞扫描、
 镜像验真、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。

2.harbor 组件简介

从安装组件我们可以看出harbor主要依靠以下几个组件:

Nginx(Proxy):用于代理Harbor的registry,UI, token等服务
db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权
jobsevice:负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log
Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
Registry:原生的docker镜像仓库,负责存储镜像文件。
Log:为了帮助监控Harbor运行,负责收集其他组件的log,记录到syslog中

第六篇 kubernetes helm部署harbor镜像仓库第2张

harbor的优势

1.基于角色控制:用户与Docker镜像仓库通过"项目"进行组织管理,一个用户可以对多个镜像仓库在统一命名空间(projec)里有不同的权限
2.图形化用户界面:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间
3.审计管理:所有这怒地镜像仓库的错都可以被记录追溯,用于审计管理
4.基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制。
5.支持LDAP认证:Harbor的用户授权可以使用已经存在的用户。
6.镜像删除和垃圾回收:image可以被删除并且回收image占用的空间。
7.简单的部署功能:harbor提供了online、offline安装,此外还提供了virtualappliance安装
8.harbor和docker registry的关系:harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

第六篇 kubernetes helm部署harbor镜像仓库第3张

3.在k8s中使用helm 部署harbor

(1)从github拉取harbor-helm

#cd  /root
#yum install -y git 
#git clone https://github.com/goharbor/harbor-helm
#cd harbor-helm/

(2)修改相关配置

#在harbor-helm文件夹里面,可以看到Chart.yml 及 values.yaml 等helm 部署相关的文件,vi 编辑一下value.yaml,根据实际情况修改配置:
ingress:
    hosts:
      core: harbor.k8s.com          #修改ingress里面的域名
      notary: notary.k8s.com
……
externalURL: https://harbor.k8s.com   #修改访问的URL
……
#这部分可以看到,这里需要6个pvc,也就是说需要手动创建6个pv,官方默认为3个5G,3个1G,可根据需要修改size,这里由于是实验环境,所以不作改动
  persistentVolumeClaim:
    registry:
      existingClaim: ""
      storageClass: ""
      subPath: ""
      accessMode: ReadWriteOnce
      size: 5Gi
    chartmuseum:
      existingClaim: ""
      storageClass: ""
      subPath: ""
      accessMode: ReadWriteOnce
      size: 5Gi
    jobservice:
      existingClaim: ""
      storageClass: ""
      subPath: ""
      accessMode: ReadWriteOnce
      size: 1Gi
    database:
      existingClaim: ""
      storageClass: ""
      subPath: ""
      accessMode: ReadWriteOnce
      size: 1Gi
    redis:
      existingClaim: ""
      storageClass: ""
      subPath: ""
      accessMode: ReadWriteOnce
      size: 1Gi
……
harborAdminPassword: "Harbor12345"   #默认管理员密码为Harbor12345,可在这里进行修改,建议不要修改

(3)创建需要的5个pv

为简化实验,本实验环境使用local-storage作为持久化存储,使用k8s3机器的 /data/harbor 目录作为本地持久化存储。
在k8s3上面创建五个文件夹:
#mkdir /data/harbor/{data01,data02,data03,data04,data05}
提升文件夹权限
#chmod -R 777 /data/harbor/

在master上面编写6个pv的yaml文件,并创建pv(我只贴出了一个pv.yaml ,剩下的可仿照创建)

apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    pv.kubernetes.io/bound-by-controller: "yes"
  finalizers:
  - kubernetes.io/pv-protection
  name: harbor-data01
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 1Gi
  hostPath:
    path: /data/harbor/data01
    type: ""
  persistentVolumeReclaimPolicy: Delete
  volumeMode: Filesystem
status:


#kubectl create -f pv.yaml
#kubectl  get   pv

第六篇 kubernetes helm部署harbor镜像仓库第4张

可以看到5个pv已经准备就绪

(4) 使用helm部署harbor

#kubectl   create ns  harbor
#cd /root/harbor-helm
#helm dependency update
#helm install . --debug -n harbor --namespace harbor

参数说明:
--debug  部署过程中开启debug模式
-n  定义helm release的名字
--namespace 指定使用哪个namespace部署
分别查看helm、pvc、deployment、pod、service、ingress 等是否正常(其中部分pod有可能会失败,但会自动重建,直到最后全部pod都会处理Running状态)

第六篇 kubernetes helm部署harbor镜像仓库第5张

(5)使用浏览器访问

在master节点,node节点和访问主机的hosts 文件中添加映射
192.168.25.65 master.k8s.com   harbor.k8s.com   notary.k8s.com

浏览器访问地址: https://harbor.k8s.com/
输入用户名: admin     密码   Harbor12345(这是默认密码)

注意:我登录时候遇到一个问题是,使用http://harbor.k8s.com  登录会报用户名或密码错误。所以这里建议使用https 

第六篇 kubernetes helm部署harbor镜像仓库第6张

(6) docker客户端 访问

#在Docker Client 的启动文件里面加入 --insecure-registry 参数,强制信任这个镜像仓库。
[root@master ~]# cat /etc/docker/daemon.json
{
 "live-restore": true,
 "insecure-registries" : ["harbor.k8s.com"],
 "registry-mirrors": ["https://q2hy3fzi.mirror.aliyuncs.com"]
}
[root@master ~]#

#重启 docker 及 daemon
#systemctl daemon-reload  &&  systemctl restart docker 

#docker login  harbor.k8s.com

第六篇 kubernetes helm部署harbor镜像仓库第7张

到此harbor 的部署就完成了,更多的使用才能发现上面的新功能!

官网地址: https://harbor.com/
github地址: https://github.com/goharbor/harbor

第六篇 kubernetes helm部署harbor镜像仓库第8张

免责声明:文章转载自《第六篇 kubernetes helm部署harbor镜像仓库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mysql:语法:自增列Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux通过docker安装运行酷Q--用QQ骰子君进行跑团

Linux通过docker安装运行酷Q 文:铁乐与猫 需求:和小伙伴周末进行愉快的TRPG跑团,需要在QQ讨论组上加了qq小号后,将qq小号用酷Q配合投骰的应用变成骰子君。限制:我个人的云计算服务器都是Linux的,所以不能直接用普通青年在windows服务器上安装酷Q的简单方法。环境:centos7.4、docker、酷Q容器 酷Q on Docker...

docker容器的启动,关闭,删除,进入容器

删除一个容器 docker rm -f 容器id   启动一个容器 docker start 容器id 关闭一个容器 docker stop 容器id 进入容器 1、docker attach 退出后容器也被关闭   2、docker exec 从容器退出,容器不会停止 docker exec -it 容器id /bin/bash...

kubernetes命令(一)

版权声明:本文为博主原创文章,支持原创,转载请附上原文出处链接和本声明。 本文链接地址:https://www.cnblogs.com/wannengachao/p/12073552.html 1、查看pod 格式:kubectl get pod 2、查看node 格式:kubectl get node 3、查看pod详细信息 格式:kubectl des...

NVidia-Docker2安装与常用命令

前提条件:配置apt国内镜像源1.备份sources.list  sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2.修改sources.list  sudo gedit /etc/apt/sources.list3.替换云镜像阿里  deb http://mirrors.aliyun.com/...

dockerfile构建的镜像中文乱码

使用locale查看系统变量: LANG后面没有相关设置系统不支出中文 在dockerfile中增加中文编码,并设置变量 yum -y groupinstall chinese-support ENV LANG=en_US.UTF-8 在dockerfile文件中设置环境变量之后进去docker中查看如下: 中文显示就正常了...

使用docker搭建gitlab服务器

简单记录Docker的使用和GitLab的搭建 ## Docker基础篇 ### 没有sudo权限 ### 安装docker ### 基础命令 ### docker安装mysql和配置 ### Dockerfile常用命令 ### 制作镜像 ### 发布镜像 ### 容器网络 ### Docker Compose ### Swarm模式 集群## 正式搭建...