极狐GitLab Helm Registry 使用指南

极狐GitLab Helm Registry 使用指南

首页角色扮演Project V4更新时间:2024-06-18
导读

Helm

Helm 是云原生时代应用程序的管理利器,极狐GitLab 有开箱即用的 Helm Chart Registry,可以和极狐GitLab CI/CD 无缝集成,体验一体化 DevOps 平台的魅力。

Helm是什么

Helm是 Kubernetes 的包管理工具,是发现、分享以及使用那些在 Kubernetes 上构建的软件的最好方法,目前是 3.9.0 版本。

Helm 的安装

Helm 的安装非常简单,可以通过命令行来安装,诸如 brew、scoop、gofish、snap 等,也可以通过下载二进制文件包并将其添加到 PATH 中来完成安装,本文选择用二进制文件包来安装。

在 release(https://github.com/helm/helm/releases/tag/v3.9.0)页面找到需要安装的版本,直接下载即可。以 macOS 为例,用如下命令完成下载:

$ wget https://get.helm.sh/helm-v3.9.0-darwin-amd64.tar.gz

然后解压并将解压后的二进制文件添加到 PATH 中:

$ tar -zxvf helm-v3.9.0-darwin-amd64.tar.gz x darwin-amd64/ x darwin-amd64/helm x darwin-amd64/LICENSE x darwin-amd64/README.md $ mv darwin-amd64/helm /usr/local/bin/helm

然后使用version或者--help来查看是否安装成功:

$ helm version version.BuildInfo{Version:"v3.9.0", GitCommit:"7ceeda6c585217a19a1131663d8cd1f7d641b2a7", GitTreeState:"clean", GoVersion:"go1.17.5"} Helm Chart 的创建

使用 create 命令即可创建一个 helm chart:

$ helm create devops-is-shit Creating devops-is-shit

chart 的目录结构如下:

$ tree . ├── Chart.yaml ├── charts ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── deployment.yaml │ ├── hpa.yaml │ ├── ingress.yaml │ ├── service.yaml │ ├── serviceaccount.yaml │ └── tests │ └── test-connection.yaml └── values.yaml Helm 的使用

修改 values.yaml 文件,写入镜像、资源限制等基本内容,即可完成一个简单的 helm chart demo。接着用 helm install 命令进行安装测试。

$ helm install jihu --namespace jihu --create-namespace -f values.yaml . NAME: jihu LAST DEPLOYED: Wed Jul 6 09:04:16 2022 NAMESPACE: jihu STATUS: deployed REVISION: 1 NOTES: 1. Get the application URL by running these commands: export POD_NAME=$(kubectl get pods --namespace jihu -l "app.kubernetes.io/name=devops-is-shit,app.kubernetes.io/instance=jihu" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace jihu $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl --namespace jihu port-forward $POD_NAME 8080:$CONTAINER_PORT

可以查看一下生成的 deployment、pod、service 资源:

$ kubectl -n jihu get deploy,pods,svc NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/jihu-devops-is-shit 1/1 1 1 2d5h NAME READY STATUS RESTARTS AGE pod/jihu-devops-is-shit-6d5c8cdcf8-mffxz 1/1 Running 0 45s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/jihu-devops-is-shit ClusterIP 10.107.177.80 <none> 80/TCP 2d5h

接着将 helm chart 打成一个 package:

$ helm package devops-is-shit Successfully packaged chart and saved it to: /Users/user/Documents/user/helm-demo/devops-is-shit-0.1.0.tgz $ ls -ltr total 8 drwxr-xr-x 7 user staff 224 Jul 8 14:14 devops-is-shit -rw-r--r-- 1 user staff 3554 Jul 8 14:14 devops-is-shit-0.1.0.tgz 极狐GitLab Helm Registry 使用

接着将上面生成的 helm chart package 上传到极狐GitLab Helm Registry。关于极狐GitLab Helm Registry 使用的详细内容,可以查看极狐GitLab 官方文档(https://docs.gitlab.cn/jh/user/packages/helm_repository/)。

上传 Helm Chart 到极狐GitLab Helm Registry

使用如下命令即可将上述 package 上传到极狐GitLab Helm Registry:

$ curl --request POST \ --form 'chart=@mychart-0.1.0.tgz' \ --user <username>:<access_token> \ https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/api/<channel>/charts

参数说明:

传入实际参数后执行命令:

$ curl --request POST \ --form 'chart=@devops-is-shit-0.1.0.tgz' \ --user keyboard-man:YOUR-JIHU-ACCESS-TOKEN \ https://jihulab.com/api/v4/projects/19649/packages/helm/api/stable/charts

返回结果如下:

{"message":"201 Created"}

可以在极狐GitLab 界面上查看:项目 --> 软件包与镜像库 --> 软件包库:

可以点击查看详情:

使用极狐GitLab Helm Registry Chart

首先需要添加极狐GitLab Helm repo:

$ helm repo add --username <username> --password <access_token> project-1 https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/<channel>

传入实际参数并执行命令:

$ helm repo add --username keyboard-man --password YOUR-JIHU-ACCESS-TOKEN jihu-helm https://jihulab.com/api/v4/projects/19649/packages/helm/test "jihu-helm" has been added to your repositories

查看 repo 是否添加成功:

$ helm repo list NAME URL jihu-helm https://jihulab.com/api/v4/projects/19649/packages/helm/stable

可以看到已经添加成功,接着就可以使用了。用下面命令即可使用上述 helm chart 来安装一个 release:

$ helm install jihu-helm --namespace jihu-helm --create-namespace jihu-helm/devops-is-shit NAME: jihu-helm LAST DEPLOYED: Fri Jul 8 14:47:35 2022 NAMESPACE: jihu-helm STATUS: deployed REVISION: 1 NOTES: 1. Get the application URL by running these commands: export POD_NAME=$(kubectl get pods --namespace jihu-helm -l "app.kubernetes.io/name=devops-is-shit,app.kubernetes.io/instance=jihu-helm" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace jihu-helm $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl --namespace jihu-helm port-forward $POD_NAME 8080:$CONTAINER_PORT

查看生成的资源:

$ kubectl -n jihu-helm get deploy,pods,svc NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/jihu-helm-devops-is-shit 1/1 1 1 97s NAME READY STATUS RESTARTS AGE pod/jihu-helm-devops-is-shit-6d847f6489-c79zm 1/1 Running 0 97s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/jihu-helm-devops-is-shit ClusterIP 10.98.248.103 <none> 80/TCP 97s

可以看到成功创建了 pod。

与极狐GitLab CI/CD 的集成

Helm Chart Registry 的使用可以和极狐GitLab CI/CD 进行集成,完成 Helm Chart 的自动上传。

stages: - create-package - upload-package create-package: stage: create-package image: name: alpine/helm:3.9.0 entrypoint: [""] artifacts: paths: - devops-is-shit-0.1.0.tgz tags: - k3d script: - helm package devops-is-shit upload-package: stage: upload-package dependencies: - create-package image: name: curlimages/curl:latest tags: - k3d script: - 'curl --request POST --user gitlab-ci-token:$CI_JOB_TOKEN --form "chart=@devops-is-shit-0.1.0.tgz" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/helm/api/stable/charts"'

触发 CI/CD Pipeline,可以看到构建结果:

通过项目 --> 软件包与镜像库 --> 软件包库,可以查看上传的 chart:

以上可以看到,极狐GitLab 内置的 Helm Chart Registry 使用起来是非常方便的,结合 CI/CD 能够完成 Helm Chart 的自动发布。

更多 DevOps 技术实践,欢迎关注极狐GitLab 公众号。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved