美文网首页operator
使用Harbor 2 管理docker,helm charts及

使用Harbor 2 管理docker,helm charts及

作者: 万州客 | 来源:发表于2021-01-25 08:45 被阅读0次

    Harbor升级到2.1之后,就可以比较方便的统一管理docker, helm charts及AI model文件了。我们以一个个具体的示例demo,来演示如何进行这三类文件的管理。

    更改docker配置文件,让其支持内部harbor仓库

    Insecure Registries:
     harbor.demo.com.cn
     127.0.0.0/8
    Registry Mirrors:
    https://docker.mirrors.ustc.edu.cn/
    

    一,docker镜像

    1,先在harbor里建立project项目(istio)

    2,从外网下载镜像

    docker pull istio/proxyv2:1.8.1
    

    如果不能直接从外网拉取镜像,也可以从其它地方拉取镜像之后,通过save和reload命令,导入镜像。

    3,更改镜像tag

    docker tag istio/proxyv2:1.8.1 harbor.demo.com.cn/istio/proxyv2:1.8.1
    

    4,上传镜像

    docker push harbor.demo.com.cn/istio/proxyv2:1.8.1
    

    如果项目是私有的,可能还需要使用docker login命令,先登陆harbor服务器。

    5,拉取harbor镜像到本地缓存

    docker pull harbor.demo.com.cn/istio/pilot:1.8.1
    1.8.1: Pulling from istio/pilot
    Digest: sha256:2fe9f9cd22bcfb724c706124feadaaa18dfc11c1a434aad21c2b7ec5c52ccca2
    Status: Image is up to date for harbor.demo.com.cn/istio/pilot:1.8.1
    

    6,镜像导出

    docker save harbor.demo.com.cn/istio/pilot:1.8.1 -o pilot-1.8.1
    

    会在当前目录下,生成一个名为pilot-1.8.1压缩文件,此文件可通过cp等方法,在服务器之间转移。

    7,镜像导入

    docker load -i pilot-1.8.1
    

    如果当前目录下,存在pilot-1.8.1这个镜像压缩文件,此命令可以将之导入docker的本地缓存,以供docker run,docker tag,docker push等命令使用。

    二, helm charts

    Kubernetes提供了统一模式的API,能以YAML格式的文件定义Kubernetes集群内的资源。这些资源的种类繁多,例如无状态应用的部署 Deployment、有状态应用的部署StatefulSet、配置项ConfigMap等。

    在这个基于YAML文件的软件交付体系不断完善过程中,云原生社区衍生了一个更高维度的概念及其实现工具,即Chart和Helm。

    Chart是一系列Kubernetes集群内资源描述文件的组合,一个Chart可以是一个WordPress和MySQL的组合,也可以是一个etcd集群的组合。

    Helm是一个命令行程序,用于管理这些Chart,以及其运行态Release。

    1, Harbor里新建一个项目(helm-repo)

    2, 定位应用的helm charts目录

    这里以seldon-core-1.5.1项目为例,下载这个项目的源代码目录,然后进入到helm-charts子目录,此目录即为seldon-core项目提供的helm charts文件。SeldonIO/seldon-core这里以seldon-core-1.5.1项目为例,下载这个项目的源代码目录,然后进入到helm-charts子目录,此目录即为seldon-core项目提供的helm charts文件。

    当然,如果能直接连外网,甚至在更好的网络条件下,我们是直接可以使用helm install或是helm pull命令,操作互联网上的charts文件。

    https://github.com/SeldonIO/seldon-core​github.com

    3, 安装配置helm

    A,安装helm

    就一个helm可执行文件,放到合适的目录即可。我使用的是3.4.2。

    https://github.com/helm/helm​github.com

    B,安装插件

    Helm要能推送charts到harbor仓库,还得安装一个helm-push插件。这里不考虑联网条件,直接下载压缩包,使用如下命令安装。

    helm plugin install helm-push_0.9.0_linux_amd64.tar.gz

    如果这样有问题,也可以直接把这个文件解压到helm的插件目录。

    https://github.com/chartmuseum/helm-push​github.com

    C,配置helm仓库

    使用如下命令,为helm增加一个chart repo仓库。

    helm repo add harbor-test-helm-repo 
        --username=xxx 
        --password=xxx 
        http://harbor.demo.com.cn/chartrepo/helm-repo
    

    这个harbor设置比较魔幻,chartrepo这个目录不知如何界定的,反正就是行。

    之后,就可以通过如下命令,查看我们增加过哪些chart repo仓库。

    helm repo list
    NAME URL  
    harbor-test-helm-repo http://harbor.demo.com.cn/chartrepo/helm-repo
    

    D,更新本地charts缓存,更新之后,才可以使用search命令搜索helm charts.

    helm repo update
    Hang tight while we grab the latest from your chart repositories...
    ...Successfully got an update from the "harbor-test-helm-repo" chart repository
    Update Complete. ⎈Happy Helming!⎈
    

    E,搜索charts仓库里的文件

    helm search repo seldom
    

    F,下载helm应用charts

    helm pull harbor-test-helm-repo/seldon-mab
    
    • harbor-test-helm-repo表示harbor chart repo
    • seldon-mab表示这个repo里的具体的charts
    • 此命令将会在当前目录下,生成一个seldon-mab-0.2.0.tgz文件。
      (我怀疑helm pull生成的文件和helm package文件是一样的,一个从远程,一个从本地)

    G,打包charts文件夹

    helm package seldon-core-operator/
    Successfully packaged chart and saved it to: /opt/seldon-core-1.5.1/helm-charts/seldon-core-operator-1.5.1.tgz
    
    • 有时为了能在没联网的情况,在不同的环境和服务器之间,传递helm charts。可以使用helm package命令,将charts的目录全部打包成一个tgz文件。
    • 有了这个文件,就可以使用正常的文件传输工具进行cp和install部署了。

    4, 上传helm charts到harbor仓库

    A,一种方式是直接上传charts文件夹

    helm push seldon-mab harbor-test-helm
    
    • seldon-mab是charts目录
    • harbor-test-helm是harbor charts repo名称

    B,另一种是将charts package文件包push

    helm push seldon-core-operator-1.5.1.tgz harbor-test-helm
    Pushing seldon-mab-0.2.0.tgz to harbor-test-helm...
    Done.
    Pushing seldon-core-operator-1.5.1.tgz to harbor-test-helm...
    Done.
    

    C,如果一切正常,在harbor里就可以看到这些charts的信息了。

    5, 安装helm charts应用

    A, 从远程harbor charts repo安装

    helm install seldon-mab harbor-test-helm-repo/seldon-mab
    
    • seldon-mab这是命名,必须的,要不然要自动产生名字--generate-name

    B, 从本地目录或压缩文件安装

    kubectl create namespace seldon-system
    helm install seldon-core \
        --namespace seldon-system 
        --set usageMetrics.enabled=true 
        --set istio.enabled=true 
        seldon-core-operator
    
    • install之后的参数,对应的是部署名称,
    • 最后一个参数,对应的是本地目录或charts压缩文件名。
    NAME: seldon-core
    LAST DEPLOYED: Fri Jan 24 18:04:29 2021
    NAMESPACE: seldon-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None 
    

    C, 查看已安装charts

       helm list -n seldon-system
    

    6, 删除helm charts应用

    helm uninstall seldon-core -n seldon-system 
    

    三,AI model

    ORMB的名称源自 OCI-Based Registry for ML/DL Model Bundle,它能够将模型和模型的元数据利用已有的镜像仓库进行分发。通过镜像仓库来分发模型,可以帮助用户更好的管理他们的机器学习/深度学习模型。通过ORMB,模型能更易于创建、版本化、共享以及发布。

    <u style="text-decoration: none; border-bottom: 1px dashed grey;">字节跳动将于近日完成对容器平台才云科技(Caicloud)的全资收购,收购完成后,才云科技的团队及业务,将加入字节跳动火山引擎。</u>

    ORMB 是 Klever 下的一个命令行管理工具子项目,可以像 Docker 管理镜像一样管理模型。它支持 OCI 标准,可以对模型文件和模型属性进行分层存储管理。

    Ormb的命令比较简单,和docker操作harbor的命令类似,对照起来学习更快。这里演示的AI MODEL模型,是以ormb项目的examples里的文件列表为素材的。

    1, ormb下载安装

    https://github.com/kleveross/ormb​github.com

    将下载得到的ormb_0.0.10_Linux_x86_64.tar.gz解压,放于linux可执行目录即可。通过如下命令,输出ormb的版本信息

    ormb version
    Version: 0.0.10
    Git SHA: cd8d7163ecbdb4dfa91b422846140286c780443a
    Repo Root: git@github.com:simon-cj/ormb.git
    Go Version: go1.15.6
    Go OS/Arch: linux/amd64
    

    (压缩包里还有另一个ormb-storage-initializer文件,此文件在部署klever时有用,暂且不表。)

    2, ormb登陆harbor

    同docker一样,如何harbor里的项目是私有的话,在上传下载model时,需要先登陆

    ormb login --insecure harbor.demo.com.cn
    Username: admin
    Password: 
    Login insecurely
    INFO[2021-01-18T09:38:42+08:00] Error logging in to v2 endpoint, trying next endpoint: Get "https://harbor.demo.com.cn/v2/": http: server gave HTTP response to HTTPS client 
    Login succeeded
    

    因为没有使用Https登陆,所以会有安全提示。

    3, 将当前目录下的模型文件存储到本地缓存中

    ormb save PMML-model/ harebor.demo.com.cn/ai-model/PMML-model:v0.1
    ref: harbor.demo.com.cn/ai-model/PMML-model:v0.1
    digest: 47e6f69c39bf37ccd8bbe162cd208fd0bb9c602672efad04c40deb0721ab86b6
    size: 6.1 KiB
    format: PMML
    v0.1: saved
    

    4, 更改模型的tag

    ormb tag harbor.demo.com.cn/ai-model/PMML-model:v0.1 harbor.demo.com.cn/ai-model/pmml_model:v0.2
    harbor.demo.com.cn/ai-model/PMML-model:v0.1: tagged
    
    • 如果有一天,发现后现的ormb push命令老是报错,不要怀疑自己的实力,有时,就是单纯的tag不准使用大写字母等缘故。

    5, 将存储在本地缓存中的模型推送到远端仓库中

    ormb push --plain-http harbor.demo.com.cn/ai-model/pmml_model:v0.2
    The push refers to repository [harbor.demo.com.cn/ai-model/pmml_model]
    ref: harbor.demo.com.cn/ai-model/pmml_model:v0.2
    digest: 47e6f69c39bf37ccd8bbe162cd208fd0bb9c602672efad04c40deb0721ab86b6
    size: 6.1 KiB
    format: PMML
    v0.2: pushed to remote (1 layer, 6.1 KiB total)
    

    无图无真相

    6, 将存储在远端仓库的模型拉取到本地缓存中

    ormb pull --plain-http harbor.demo.com.cn/ai-model/pmml_model:v0.3
    v0.3: Pulling from harbor.demo.com.cn/ai-model/pmml_model
    ref: harbor.demo.com.cn/ai-model/pmml_model:v0.3
    digest: 47e6f69c39bf37ccd8bbe162cd208fd0bb9c602672efad04c40deb0721ab86b6
    size: 6.1 KiB
    format: PMML
    Status: Downloaded newer model for harbor.demo.com.cn/ai-model/pmml_model:v0.3
    

    7, 将存储在缓存中的模型导出到当前目录

    ormb export harbor.demo.com.cn/ai-model/pmml_model:v0.3
    ref: harbor.demo.com.cn/ai-model/pmml_model:v0.3
    digest: 47e6f69c39bf37ccd8bbe162cd208fd0bb9c602672efad04c40deb0721ab86b6
    size: 6.1 KiB
    format: PMML
    

    此条命令,与save命令相反,会在当前目录下,展开解压成model本来的文件。

    总之一句话,harbor越来越强大!

    相关文章

      网友评论

        本文标题:使用Harbor 2 管理docker,helm charts及

        本文链接:https://www.haomeiwen.com/subject/dchvzktx.html