/hello-kubernetes

Provides a demo image to deploy to a Kubernetes cluster. It displays a message, the name of the pod and details of the node it's deployed to.

Primary LanguageDockerfileMIT LicenseMIT

Hello Kubernetes!

This container image can be deployed on a Kubernetes cluster. When accessed via a web browser on port 8080, it will display:

  • a default Hello world! message
  • the pod name
  • node os information

Hello world! from the hello-kubernetes image

The default "Hello world!" message displayed can be overridden using the MESSAGE environment variable. The default port of 8080 can be overriden using the PORT environment variable.

DockerHub

It is available on DockerHub as:

Deploy

Standard Configuration

Deploy to your Kubernetes cluster using the hello-kubernetes.yaml, which contains definitions for the service and deployment objects:

$ kubectl apply -f hello-kubernetes.yaml

Specify Custom Port

By default, the hello-kubernetes app listens on port 8080. If you have a requirement for the app to listen on another port, you can specify the port via an env variable with the name of PORT. Remember to also update the containers.ports.containerPort value to match.

Here is an example:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-kubernetes-custom
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello-kubernetes-custom
  template:
    metadata:
      labels:
        app: hello-kubernetes-custom
    spec:
      containers:
      - name: hello-kubernetes
        image: paulbouwer/hello-kubernetes:1.8
        ports:
        - containerPort: 80
        env:
        - name: PORT
          value: "80"

Build Container Image

If you'd like to build the image yourself, then you can do so as follows. The build-arg parameters provides metadata as defined in OCI image spec annotations.

Bash

$ docker build --no-cache --build-arg IMAGE_VERSION="1.8" --build-arg IMAGE_CREATE_DATE="`date -u +"%Y-%m-%dT%H:%M:%SZ"`" --build-arg IMAGE_SOURCE_REVISION="`git rev-parse HEAD`" -f Dockerfile -t "hello-kubernetes:1.8" app

Powershell

PS> docker build --no-cache --build-arg IMAGE_VERSION="1.8" --build-arg IMAGE_CREATE_DATE="$(Get-Date((Get-Date).ToUniversalTime()) -UFormat '%Y-%m-%dT%H:%M:%SZ')" --build-arg IMAGE_SOURCE_REVISION="$(git rev-parse HEAD)" -f Dockerfile -t "hello-kubernetes:1.8" app

Develop Application

If you have VS Code and the Visual Studio Code Remote - Containers extension installed, the .devcontainer folder will be used to build a container based node.js 13 development environment.

Port 8080 has been configured to be forwarded to your host. If you run npm start in the app folder in the VS Code Remote Containers terminal, you will be able to access the website on http://localhost:8080. You can change the port in the .devcontainer\devcontainer.json file under the appPort key.

See here for more details on working with this setup.