簡體   English   中英

如何使用 javascript 的 kubernetes-client 編寫 CRD?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM