我希望創建一個小型 Web 應用程式,用于列出有關集群中入口的一些資料。該應用程式將托管在集群本身中,因此我假設我將需要一個附加到后端應用程式的服務帳戶,該應用程式呼叫 kubernetes api 以獲取資料,然后通過 axios 通過 GET 將其提供給前端等等。我在這里是正確的嗎?
uj5u.com熱心網友回復:
您可以直接在您的節點應用程式中使用 JavaScript Kubernetes Client 包用于節點,以通過 REST API 訪問 kubeapi 服務器
npm install @kubernetes/client-node
您可以使用任何一種方式向您的 kubernetes 客戶端提供身份驗證資訊
這是一個對我有用的代碼
const k8s = require('@kubernetes/client-node');
const cluster = {
name: '<cluster-name>',
server: '<server-address>',
caData: '<certificate-data>'
};
const user = {
name: '<cluster-user-name>',
certData: '<certificate-data>',
keyData: '<certificate-key>'
};
const context = {
name: '<context-name>',
user: user.name,
cluster: cluster.name,
};
const kc = new k8s.KubeConfig();
kc.loadFromOptions({
clusters: [cluster],
users: [user],
contexts: [context],
currentContext: context.name,
});
const k8sApi = kc.makeApiClient(k8s.NetworkingV1Api);
k8sApi.listNamespacedIngress('<namespace>').then((res) => {
console.log(res.body);
});
在我使用networkingV1Api的情況下,您需要根據您的入口使用Api客戶端
您可以從https://github.com/kubernetes-client/javascript獲得更多選項
uj5u.com熱心網友回復:
JS 客戶端:https : //github.com/kubernetes-client/javascript
如果您有不同的身份驗證方式,如您提到的服務帳戶,那也是其中之一。
是的,您將需要它,但是如果您計劃僅在集群上運行腳本,則不需要它。
您可以直接使用該方法進行身份驗證
const kc = new k8s.KubeConfig()
kc.loadFromDefault()
const k8s = require('@kubernetes/client-node')
const kc = new k8s.KubeConfig()
kc.loadFromDefault()
const k8sApi = kc.makeApiClient(k8s.NetworkingV1beta1Api) // before 1.14 use extensions/v1beta1
k8sApi.listNamespacedIngress('<Namespace name>').then((res) => {
console.log(res.body);
});
您可以查看此示例:https://github.com/kubernetes-client/javascript/tree/master/examples您也可以使用typescript。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/317636.html
標籤:节点.js Kubernetes
