暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mac 上学习k8s系列(44)helm安装harbor

        利用harbor我们可以搭建自己的docker repository,同时利用它自带的chartmesum插件我们可以利用harbor来管理我们的charts。在mac 上学习k8s系列(5)helm chart 我们详细介绍了如何使用helm和helm chart的基本原理,本节我们实战应用helm搭建harbor。新版的helm只需要下载解压就行

    https://github.com/helm/helm/releases
    tar -zxvf helm-v3.8.2-linux-amd64.tar.gz linux-amd64/
    chmod +x linux-amd64/helm
    sudo cp linux-amd64/helm usr/local/bin/

    Harbor由6个大的模块所组成:

    Proxy: Harbor的registry、UI、token services等组件,都处在一个反向代理后边。该代理将来自浏览器、docker clients的请求转发到后端服务上。

    Registry: 负责存储Docker镜像,以及处理Docker push/pull请求。因为Harbor强制要求对镜像的访问做权限控制, 在每一次push/pull请求时,Registry会强制要求客户端从token service那里获得一个有效的token。

    Core services: Harbor的核心功能,主要包括如下3个服务:

    1)UI: 作为Registry Webhook, 以图像用户界面的方式辅助用户管理镜像。

    2) WebHook:WebHook是在registry中配置的一种机制, 当registry中镜像发生改变时,就可以通知到Harbor的webhook endpoint。Harbor使用webhook来更新日志、初始化同步job等。

    3) Token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。

    Database:为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。

    Job services: 主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上。

    Log collector: 负责收集其他组件的日志到一个地方

    harbor-adminserver主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui所要操作的所有数据都通过harbor-adminserver这样一个数据配置管理中心来完成。

    我们可以根据的描述https://helm.sh/zh/docs/intro/install/

    https://github.com/goharbor/harbor-helm,使用helm安装harbor

       helm repo add harbor https://helm.goharbor.io

      根据文档的描述,制定参数。

        helm install my-harbor harbor/harbor --set domain=124.220.185.35 --set expose.type=nodePort  --set expose.tls.auto.commonName=harbor --set externalURL=https://124.220.185.35:30003 -n harbor

        NAME: my-harbor
        LAST DEPLOYED: Fri Apr 29 06:17:14 2022
        NAMESPACE: harbor
        STATUS: deployed
        REVISION: 1
        TEST SUITE: None
        NOTES:
        Please wait for several minutes for Harbor deployment to complete.
        Then you should be able to visit the Harbor portal at https://124.220.185.35:30003
        For more details, please visit https://github.com/goharbor/harbor

        由于没有制定externalIP的参数,上述安装外网不能直接访问,需要修改下

          # kubectl -n harbor edit svc harbor
          spec:
          externalIPs:
            - 124.220.185.35

          接着我们可以打开harbor的管理页面

          https://124.220.185.35:30003/account/sign-in?redirect_url=%2Fharbor%2Fprojects

          其中,harbor的默认用户名密码默认为:admin/Harbor12345,接着我们就看到了如下页面:

          下面开始推送镜像。

            % docker login 124.220.185.35:30003
            Username: admin
            Password:
            Login Succeeded
              % docker push 124.220.185.35:30003/library/tools:v0.0.1
              The push refers to repository [124.220.185.35:30003/library/tools]
              275387ba739a: Preparing
              275387ba739a: Pushing 61.51MB/411.5MB
              c396586d4164: Pushed
              510f18150319: Pushed

              接着我们了解下推送char的过程。

              根据文档https://github.com/goharbor/harbor-helm我们知道Chartmuseum默认是允许的:

              chartmuseum.enabled Enable chartmusuem to store chart true

              首先打包我们的chart

                % helm package .
                Successfully packaged chart and saved it to: /Users/xiazemin/source/k8s_learn/helm/mychart/mychart-0.1.0.tgz

                生成索引文件

                  helm repo index .
                  index.yaml

                  索引文件是一个名为 index.yaml 的 Yaml 文件。它包含有关 Chart 包的一些元数据,包括 Chart.yaml 文件的内容。有效的 Chart Repository 必须具有索引文件。索引文件包含有关 Chart Repository 中每个 Chart 的信息。可以通过 helm repo index 命令将本地目录下的 Chart 生成索引文件。

                  添加repo

                    % helm repo add harbor https://124.220.185.35:30003/chartrepo/library --username admin --password Harbor12345 --insecure-skip-tls-verify 
                    "harbor" has been added to your repositories

                    安装helm 推送插件

                      helm plugin install https://github.com/chartmuseum/helm-push

                      推送我们的chart

                        % helm cm-push mychart-0.1.0.tgz harbor  --insecure
                        Pushing mychart-0.1.0.tgz to harbor...
                        Done.

                        到管理界面查看已经成功了


                        文章转载自golang算法架构leetcode技术php,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论