![](/img/trans.png)
[英]How to automate CI/CD pipeline unit tests for a node.js container deployment in kubernetes
[英]How to create a Kubernetes deployment using the Node.js SDK
我正在使用 Node.js 构建一个项目,这将要求我有一个可以部署到 Kubernetes 的应用程序。 我正在处理的服务将获取一些 Kubernetes 清单,向其中添加一些 ENV 变量,然后部署这些资源。
我有一些代码可以使用 SDK 和createNamespace
和deleteNamespace
为我创建和销毁命名空间。 这部分按我想要的方式工作,即不需要 Kubernetes YAML 文件。 我也想使用 SDK 来创建部署,但我似乎无法让它工作。 我找到了createNamespacedDeployment
的代码示例,但是使用0.13.2
的 0.13.2 版我无法使其正常工作。 当我运行找到的示例代码时,我收到此错误消息。
k8sApi.createNamespacedDeployment is not a function
我试图检查 SDK 的 git 存储库,尽管它很大,我还没有找到任何可以让我在 Z3B2819DD4C24EDA2FAF2052EEF449551 中定义部署的代码,但是找到了最接近的 IEF449551 部署不适合我,我需要部署。
如何通过 Node.js 创建部署并将其应用于我的 Kubernetes 集群?
您可以使用@c6o/kubelcient
kubernetes 客户端。 这有点简单:
import { Cluster } from '@c6o/kubeclient'
const cluster = new Cluster({}) // Assumes process.env.KUBECONFIG is set
const result = await cluster.upsert({kind: 'Deployment', apiVersion.. })
if (result.error) ...
如果您有多个步骤,您也可以使用流利的 API :
await cluster
.begin(`Provision Apps`)
.upsertFile('../../k8s/marina.yaml', options)
.upsertFile('../../k8s/store.yaml', options)
.upsertFile('../../k8s/harbourmaster.yaml', options)
.upsertFile('../../k8s/lifeboat.yaml', options)
.upsertFile('../../k8s/navstation.yaml', options)
.upsertFile('../../k8s/apps.yaml', options)
.upsertFile('../../k8s/istio.yaml', options)
.end()
我们正在处理文档,但这里有很多使用此客户端的供应商: https://github.com/c6o/provisioners
部署管理由AppsV1Api class 处理:
const k8s = require('@kubernetes/client-node');
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
const appsApi = kc.makeApiClient(k8s.AppsV1Api);
const deploymentYamlString = fs.readFileSync('./deployment.yaml', { encoding: 'utf8'});
const deployment = k8s.loadYaml(deploymentYamlString);
const res = await appsApi.createNamespacedDeployment('default', deployment);
Generally, you can find the relevant API class for managing a Kubernetes object by its apiVersion, eg: Deployment -> apiVersion: apps/v1
-> AppsV1Api
, CronJob -> apiVersion: batch/v1
-> BatchV1Api
.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.