通过 grpc 和 http 接口部署 helm charts (仅支持3.0.0+)
- 有时候您希望通过程序在集群上部署和管理helm release。
- 有时候您希望通过http接口在集群上部署和管理helm release。
Method Name | Request Type | Response Type | Description |
---|---|---|---|
CreateContext | HelmContextReq | HelmContextRes | CreateContext 创建context |
DeleteContext | DeleteHelmContextReq | .google.protobuf.Empty | DeleteContext 删除context |
UpdateRepo | UpdateRepoReq | .google.protobuf.Empty | UpdateRepo 更新context 内repo 信息 |
InstallRelease | InstallReq | Release | InstallRelease 安装charts |
UpgradeRelease | UpgradeReq | Release | UpgradeRelease 更新release |
UninstallRelease | ReleaseReq | .google.protobuf.Empty | UninstallRelease 删除release |
GetChart | GetChartReq | Chart | GetChart 获取 chart 信息 |
GetRelease | ReleaseReq | Release | GetRelease 获取某个release实例信息 |
GetReleaseValues | ReleaseReq | Values | GetReleaseValues 某个release实例values信息 |
ListRelease | ListReleaseReq | ListReleaseRes | ListRelease 列出某个context下全部release. |
RollbackRelease | ReleaseRollbackReq | .google.protobuf.Empty | RollbackRelease 回滚某个release |
GetReleaseHistory | ReleaseReq | ListReleaseRes | GetReleaseHistory 列出release 历史 |
Search | SearchReq | SearchRes | Search 查找某个repo的chart |
All | ListChartReq | SearchRes | All 列出某个context所有的chart |
- Context
- context 存储了k8s权限和helm repository。所以用户可以通过context 复用这些信息。
- ContextName
- 如果用户请求中带有ContextName 请求会使用对应context 存储的k8s权限和helm repository。如果请求不带有contextName,请求会根据RepoInfo 和 KubeInfo创建一个临时的context。
- git clone [email protected]:weapons97/helm-api.git
- cd helm-api
- kubectl install -f deploy
请看 doc/doc.md
请看 swagger/helm-api.swagger.json
请看 protos/helm-api.proto
cd ./examples 打开此目录,运行一下脚本以验证接口。
- 确保你安装了 nodejs 环境。
-
指定ip和端口
export host=<你的 helm-api host> export port=<你的 helm-api port>
-
创建context。
# node createContext.js <your kubeconfig> <your context> <your namespace> node createContext.js ~/kube.config "" "test"
创建 incluster context。 incluster context 使用service account 为操作授权。
Create an incluster context. Incluster context uses service account to authorize operations.
# node inclusterContext.js <your namespace> node inclusterContext.js default
-
更新 repo
node repoupdate.js
-
获得 chart 信息
# node getchart.js test <repo name> <chart name> node getchart.js test bitnami mariadb
-
创建一个mysql release
# node install.js <release name> node install.js mysql
-
获取mysql release values
# node getreleasevalues.js <context name> <release name> node getreleasevalues.js test mysql
-
更新mysql release
# node upgrade <release name> node upgrade mysql
-
获取mysql release all
# node getreleasevalues.js <context name> <release name> node getreleasevalues.js test mysql
-
获取 release history
# node history.js <context name> <release name> node history.js test mysql
-
回滚 release
# node rollback.js <context name> <release name> <version> node rollback.js test mysql 1
-
删除 release
# node deleterelease.js <context name> <release name>
node deleterelease.js test mysql
-
删除context
# node deleteContext.js <context name> node deleteContext.js test