Доступ работы в кластере Kubernetes - PullRequest
0 голосов
/ 01 марта 2019

У меня есть несколько динамических заданий, вращающихся через скрипт.Работа должна делать свое дело, но я хочу показать какой-то API для статуса работы.Например, у меня есть маленький сервер NodeJS, который будет считать до 300 и умрет.Он отображает текущее состояние подсчета через экспресс-маршрут:

const express = require('express');

const app = express();

let status = 0;
const sleep = () => new Promise((resolve) => {
  setTimeout(() => resolve(), 1000);
});


const sleepLoop = async () => {
  for (status; status < 300; status += 1) {
    await sleep();
  }
};

app.get('/status', (req, res) => {
  res.json({
    status,
  });
});

app.listen(8080, () => {
  console.log('Example app listening on port 8080!');
});

sleepLoop();

мой стандартный Dockerfile узла:

FROM node:latest

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY ./sampleNode/package.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

EXPOSE 8080
# Bundle app source
COPY ./sampleNode .

и мой Kubernetes Config как модуль JS (для генерации сценария):

module.exports = {
  apiVersion: 'batch/v1',
  kind: 'Job',
  metadata: { name: 'example-job' },
  spec:
  {
    template:
    {
      metadata: {
        name: 'example-job',
      },
      spec:
      {
        hostNetwork: true,
        containers:
          [{
            name: 'samplenode',
            image: 'eu.gcr.io/...:latest',
            command: ['/bin/bash', '-c', 'node index.js'],
          }],
        restartPolicy: 'Never',
      },
    },
  },
};

Если я запускаю его локально, я, конечно, могу проверить состояние через localhost: 8080 / status.Как я могу сделать это онлайн?Кстати, я в Google Cloud.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...