zoukankan      html  css  js  c++  java
  • 第六篇 kubernetes helm部署harbor镜像仓库

    1.harbor镜像仓库简介

     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中
    

    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做了封装,扩展了自己的业务模板。
    

    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
    

    可以看到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状态)
    

    (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 
    

    (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
    

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

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

  • 相关阅读:
    zoj 2812
    按1的个数排序
    输出等腰梯形
    约瑟夫环杂题
    九度oj 题目1369:字符串的排列
    .NET CORE LOG
    .NET CORE 配置
    dotnet core 数据库
    asp.net core mvc简介
    dotnet core 项目
  • 原文地址:https://www.cnblogs.com/wenyang321/p/14150926.html
Copyright © 2011-2022 走看看