How to Deploy to Minikube using GitHub Actions

In this Article we are going to learn How to Deploy to Minikube using GitHub Actions | Deploy Node.js app to Minikube using GitHub Actions.

Prerequisite:

Step #1:Create Dockerfile for Node.js App

We need to create Dockerfile for Node.js App using below code.

FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
RUN npm install express
COPY . .
EXPOSE 3000
CMD [ "node", "server.js" ]

Step #2:Create package.json file

After the first step we need to create package.json file using below code.

{
    "name": "docker_web_app",
    "version": "1.0.0",
    "description": "Node.js on Docker",
    "author": "First Last <[email protected]>",
    "main": "server.js",
    "scripts": {
      "start": "node server.js"
    },
    "dependencies": {
      "express": "^4.16.1"
    }
  }

Step #3:Create Server.js file

Now lets create server.js file

'use strict';

const express = require('express');

// Constants
const PORT = 3000;
const HOST = '0.0.0.0';

// App
const app = express();
app.get('/', (req, res) => {
  res.send('Hello World');
});

app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);

Step #4:Create Kubernetes Deployment and Service file

Here lets create k8s-node-app.yaml file using below code.

---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: nodejs-app
  namespace: default
  labels:
    app: nodejs-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nodejs-app
  template:
    metadata:
      labels:
        app: nodejs-app
    spec:
      containers:
      - name: nodejs-app
        image: "devopshint/node-app:latest"
        ports:
          - containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
  name: nodejs-app
  namespace: default
spec:
  selector:
    app: nodejs-app
  type: NodePort
  ports:
  - name: http
    targetPort: 3000
    port: 80

Step #5:GitHub Actions Workflow to Deploy to Minikube using GitHub Actions

Now its time to create workflow so firstly create .github>>Workflows>>deploy-to-minikube-github-actions.yaml

name: Deploy to Minikube using GitHub Actions

on: [push]
  
jobs:
  job1:
    runs-on: ubuntu-latest
    name: build Node.js Docker Image and deploy to minikube
    steps:
    - uses: actions/checkout@v2
    - name: Start minikube
      uses: medyagh/setup-minikube@master
    - name: Try the cluster !
      run: kubectl get pods -A
    - name: Build image
      run: |
          export SHELL=/bin/bash
          eval $(minikube -p minikube docker-env)
          docker build -f ./Dockerfile -t devopshint/node-app:latest .
          echo -n "verifying images:"
          docker images         
    - name: Deploy to minikube
      run:
        kubectl apply -f k8s-node-app.yaml
    - name: Test service URLs
      run: |
          minikube service list
          minikube service nodejs-app --url

After that go to the actions and check your job is success or not

How to Deploy to Minikube using GitHub Actions 1
img 1

So you can see my job status is success

How to Deploy to Minikube using GitHub Actions 2
img 2

You can see the final output

We have covered Deploy to Minikube using GitHub Actions.

Conclusion:

In this article we have covered How to Deploy to Minikube using GitHub Actions | Deploy Node.js app to Minikube using GitHub Actions

Related Articles:

How to Install Minikube on Ubuntu 22.04 LTS

Reference:

Setup Minikube as CI step in GitHub Actions official page

Shweta Mamidwar

I am Shweta Mamidwar working as a Intern in Product Company. Likes to share knowledge.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Share via
Copy link
Powered by Social Snap