RPI Microk8s NodeJS Tutorial
Hello NodeJS
Docker Image generieren und in die lokale Registry pushen.
Installation über Helm Chart.
docker build -t localhost:32000/hello-node:1.0 . docker push localhost:32000/hello-node:1.0 microk8s helm3 install hello-node ./k8s --set defaultBackend.enabled=false,controller.defaultBackendService=hello-golang-service -n dev --create-namespace microk8s helm3 uninstall hello-node -n dev
server.js
'use strict';
const express = require('express');
// Constants
const PORT = 8080;
const HOST = '0.0.0.0';
// App
const app = express();
app.get('/', (req, res) => {
res.send('Hello World
'+JSON.stringify(process.env)+'
');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);
Dockerfile
FROM node:14
# 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 package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: hello-node-ingress
spec:
tls:
- hosts:
- kimo2007.dnshome.de
secretName: letsencrypt-tls
defaultBackend:
service:
name: custom-default-backend1
port:
number: 80
rules:
- host: kimo2007.dnshome.de
http:
paths:
- path: /hello-node(/|$)(.*)
pathType: Prefix
backend:
service:
name: hello-node-service
port:
number: 80
Deployment & Service (deployment.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-node
spec:
replicas: 1
selector:
matchLabels:
app: hello-node
template:
metadata:
labels:
app: hello-node
spec:
containers:
- name: app
image: localhost:32000/hello-node:1.0
ports:
- containerPort: 8080
env:
- name: MONGO_URL
value: mongodb://mongo:27017/dev
imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
labels:
app: hello-node-service
name: hello-node-service
spec:
externalTrafficPolicy: Cluster
ports:
- port: 80
targetPort: 8080
selector:
app: hello-node
type: NodePort