![](/img/trans.png)
[英]kubernetes-client javascript - create job from cronjob
[英]How do I write a CRD using the kubernetes-client for javascript?
示例非常有限,因此請關閉我的 IDE 向我展示的內容以及我從源代碼中挖掘出來的內容。 遇到麻煩。
我已經創建了我的 CRD。 我想發布它。 目前,它只是一個帶有我計划稍后修剪的有效負載的 github webhook。 我似乎找不到正確的構造函數來傳遞給 KubeConfig 的 makeApiClient 函數。 我有 CRD,我最初認為它是 Custom_objectsApi,但這僅用於 CRD 創建,而不是我的類型的新自定義對象。
有沒有辦法做到這一點? 我必須自己創建一個新課程嗎? 如果是這樣,我可以只發布原始 yaml 嗎?
這是我的 CRD 以及我要發布的 json。
const yamlString = k8s.dumpYaml({
"apiVersion": "hook-to-k8s.sfxworks.net/v1",
"kind": "Payload",
"metadata": {
"type": "github",
"name": event.payload.repository.name,
"sha": event.payload.after,
"head commit author": event.payload.head_commit.author.name
},
"spec": {
"payload": event.payload
}
})
編輯:我們是否可以解釋我們的否決行動而不是不這樣做? 我現在沒有理由這樣做。 其他用戶可能也有這個問題。
為了澄清,我試圖發布一個使用我創建的 CRD 的對象。 不是新的 CRD。
編輯 2:供參考,使用https://www.npmjs.com/package/@kubernetes/client-node
如果您已經構建了 CRD,則可以像這樣訪問 kubernetes api 中的對象。
const k8s = require('@kubernetes/client-node');
const kc = new k8s.KubeConfig()
kc.loadFromDefault();
const k8sClient = kc.makeApiClient(k8s.CustomObjectsApi);
resp = k8sClient.getNamespacedCustomObjectStatus('api.yourorg.io', apiVersion', namespace, crdKind, objName)
// resp.body is your object. for example resp.body.spec.
這應該可以使用自動生成的方法來實現:
使用示例:
import {
CustomObjectsApi,
KubeConfig
} from "@kubernetes/client-node";
// Split your example of hook-to-k8s.sfxworks.net/v1 into:
const group = "sfxworks.net";
const version = "v1";
const plural = "hook-to-k8s";
const kubeConfig = new KubeConfig();
kubeConfig.loadFromDefault();
const client = kubeConfig.makeApiClient(CustomObjectsApi);
const namespace = "foobar";
const body = { /* payload */ };
await client.createNamespacedCustomObject(
group,
version,
namespace,
plural,
body
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.