Какой API-клиент рекомендуется для Kubernetes для NodeJS? - PullRequest
0 голосов
/ 22 октября 2018

Я использую AKS (Azure k8), мне нужен клиент k8s node.js для этой опции

Убить модуль по имени
Изменить количество модулей развертывания
Перезапустить все модули развертывания

Мне нужны только эти функции, ведь для этого лучше всего подойдет lib?

Пожалуйста, предоставьте также примеры использования lib для некоторых из этих функций.

Спасибо

ОБНОВЛЕНИЕ

Мне понравился этот Node.js (TypeScript) github.com/Goyoo/node-k8s-client, можете ли вы предоставить больше информации об учетной записи службы и доступе?

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Вот полный список всех клиентских библиотек.

https://kubernetes.io/docs/reference/using-api/client-libraries/

Вам потребуется создать учетную запись службы и привязку роли, чтобы настроить надлежащие разрешения для выполнения этих операций.из клиентской библиотеки.

Определенные библиотеки node.js:

Node.js (TypeScript) github.com/Goyoo/node-k8s-client

Node.js github.com/tenxcloud/node-kubernetes-client

Node.js github.com/godaddy/kubernetes-client

Базовый пример (с использованием Godaddy-клиента)

/* eslint no-console:0 */
//
// Demonstrate some of the basics.
//
const Client = require('kubernetes-client').Client;
const config = require('kubernetes-client').config;

const deploymentManifest = require('./nginx-deployment.json');

async function main() {
  try {
    const client = new Client({ config: config.fromKubeconfig(), version: '1.9' });

    //
    // Get all the Namespaces.
    //
    const namespaces = await client.api.v1.namespaces.get();
    console.log('Namespaces: ', namespaces);

    //
    // Create a new Deployment.
    //
    const create = await client.apis.apps.v1.namespaces('default').deployments.post({ body: deploymentManifest });
    console.log('Create: ', create);

    //
    // Fetch the Deployment we just created.
    //
    const deployment = await client.apis.apps.v1.namespaces('default').deployments(deploymentManifest.metadata.name).get();
    console.log('Deployment: ', deployment);

    //
    // Change the Deployment Replica count to 10
    //

    const replica = {
      spec: {
        replicas: 10
      }
    };

    const replicaModify = await client.apis.apps.v1.namespaces('default').deployments(deploymentManifest.metadata.name).patch({ body: replica });
    console.log('Replica Modification: ', replicaModify);

    //
    // Modify the image tag
    //
    const newImage = {
      spec: {
        template: {
          spec: {
            containers: [{
              name: 'nginx',
              image: 'nginx:1.8.1'
            }]
          }
        }
      }
    };
    const imageSet = await client.apis.apps.v1.namespaces('default').deployments(deploymentManifest.metadata.name).patch({ body: newImage });
    console.log('New Image: ', imageSet);

    //
    // Remove the Deployment we created.
    //
    const removed = await client.apis.apps.v1.namespaces('default').deployments(deploymentManifest.metadata.name).delete();
    console.log('Removed: ', removed);
  } catch (err) {
    console.error('Error: ', err);
  }
}

main();
0 голосов
/ 22 октября 2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...