Доступ работы в кластере Kubernetes

У меня есть несколько динамических заданий, вращающихся с помощью сценария. Работа должна делать свое дело, но я хочу показать какой-то 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();

Мой стандартный Nocker 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, кстати.

0 ответов

Другие вопросы по тегам