Доступ работы в кластере 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, кстати.