Skip to content
Merged

Dev #68

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 22 additions & 9 deletions server/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,26 @@ import { initializeWebSocket } from './services/websocketService';

const app = express();
const secret = await getSecretKeys(); // Load secrets from Google Secret Manager
const port = secret.PORT;
// Use Cloud Run's PORT env var if available, otherwise fall back to secret or default
const port = process.env.PORT || secret.PORT || 3000;
const server = createServer(app);

// Initialize WebSocket
initializeWebSocket(server);

// ------------------------------------------------------------------------------------------------
// * K8s EVENT WATCHER & PROCESSOR
// * K8s EVENT WATCHER & PROCESSOR (Started after server is running)
// ------------------------------------------------------------------------------------------------
startK8sEventWatcher().catch((err) =>
console.error(chalk.redBright('Failed to start K8s watcher:', err)),
); // Start Kubernetes event watcher

startK8sEventProcessor().catch((err) =>
console.error(chalk.redBright('Failed to start K8s processor:', err)),
); // Start Kubernetes event processor
// Start these services asynchronously after server starts to prevent blocking
setTimeout(() => {
startK8sEventWatcher().catch((err) =>
console.error(chalk.redBright('Failed to start K8s watcher:', err)),
); // Start Kubernetes event watcher

startK8sEventProcessor().catch((err) =>
console.error(chalk.redBright('Failed to start K8s processor:', err)),
); // Start Kubernetes event processor
}, 2000); // Wait 2 seconds after server starts

// ------------------------------------------------------------------------------------------------
// * MIDDLEWARE
Expand All @@ -49,6 +53,15 @@ app.get('/status', (req, res) => {
res.status(200).json({ status: 'online', message: 'Server is online!' });
});

// Health check endpoints for Cloud Run
app.get('/health', (req, res) => {
res.status(200).json({ status: 'healthy', timestamp: new Date().toISOString() });
});

app.get('/ready', (req, res) => {
res.status(200).json({ status: 'ready', timestamp: new Date().toISOString() });
});

app.use(express.json()); // EXPRESS
app.use('/api', routes); // ROUTES
app.use('/api/gke', clusterRouter);
Expand Down
5 changes: 4 additions & 1 deletion server/vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ export default defineConfig({
'cors',
'dotenv',
'express',
'redis'
'google-auth-library',
'js-yaml',
'redis',
'socket.io'
],
output: {
dir: 'dist',
Expand Down