How to change Nginx index.html in Kubernetes with Configmap?

Change Nginx index.html in Kubernetes with Configmap

In this guide, I will show you how to change the default index.html in Kubernetes Nginx deployment using an index.html file from the configmap.

In this guide, we will do the following task.

  • Create a config map with an index.html file as data
  • Add the index.html configmap to the Nginx deployment as volume

If you are preparing for Kubernetes certification, I recommend you check out the Linux Foundation Coupon page to get discounts on CKAD, CKS, KCNA & CKA certifications.

So, let’s get started.

How To Change Nginx index.html in Kubernetes?

Follow the below steps to change the default index.html file served by Nginx in a Kubernetes cluster using a ConfigMap.

Step 1: Create an HTML file

So the first step you need to take is to create the custom index.html file that you want to serve using the Nginx. You can simply create a simple HTML file and save it as an index.html.

Step 2: Create a ConfigMap

Now, create a configmap in Kubernetes that stores the index.html custom file. Now, use the following command to create a configmap or define a YAML file.

Here is an example code to create a configmap from a YAML file:

apiVersion: v1
kind: ConfigMap
  name: nginx-config
  index.html: |
    <!DOCTYPE html>
        <title>Custom Nginx Page</title>
        <h1>Welcome to my custom Nginx page!</h1>

Now, save this YAML file & apply it using the following kubectl command:

kubectl apply -f nginx-configmap.yaml

Step 3: Create a Kubernetes Deployment

Now, to run the Nginx container with the custom index.html file, you will need a Kubernetes Deployment. Here is a simple example:

apiVersion: apps/v1
kind: Deployment
  name: nginx-deployment
  replicas: 1
      app: nginx
        app: nginx
      - name: nginx
        image: nginx:latest
        - containerPort: 80
        - name: nginx-config-volume
          mountPath: /usr/share/nginx/html
  - name: nginx-config-volume
      name: nginx-config

Just save this YAML file and apply it using the following kubectl command:

kubectl apply -f nginx-deployment.yaml

Step 4: Verify the Deployment

When you apply the Deployment, Kubernetes will create a Pod running Nginx with the custom index.html file. Now you can verify that the Pod is running using the following command:

kubectl get pods

Step 5: Expose the Nginx Service (Optional)

To access the Nginx service externally, you need to create a Kubernetes service and expose it using a NodePort, LoadBalancer, or an Ingress controller.

Example of NodePort service is as follows:

apiVersion: v1
kind: Service
  name: nginx-service
    app: nginx
  - protocol: TCP
    port: 80
    targetPort: 80
  type: NodePort

Now, you need to save this YAML file and apply it using the following kubectl command:

kubectl apply -f nginx-service.yaml

If you have followed the steps correctly, you should have an Nginx Deployment serving your custom index.html file in your Kubernetes cluster. To access it, you must use the Service IP address or NodePort.

Read the Kubernetes tutorials for beginners guide and improve your skills.

Final Thoughts

I hope this guide helped you to change the Nginx index.html in Kubernetes with configmap.

If you face any error or do not understand any part of this guide, please let me know in the comment section, and I will try to answer them to my best.

Frequently Asked Questions

How to serve an HTML file with nginx?

The configuration file for Nginx should be opened. This is usually found in /etc/nginx/nginx.conf or /etc/nginx/sites-available/default. In the server block, add a location block for the path where you want the HTML files to be served.

What is the maximum size of ConfigMap in Kubernetes?

A ConfigMap’s data storage capacity is limited to 1 MiB. If you need to store settings that exceed this limit, then you need to consider mounting a disk or using a separate database or file service.

How do I refresh a config file?

To refresh a config file, select the loaded configurations that you want to reload and click Reload. Only configurations with the status Loaded can be reloaded. To refresh Configs, click Refresh. The information for all of the configurations in the table is displayed again.

What is ConfigMap used for in Kubernetes?

ConfigMaps are a Kubernetes technique for inserting configuration data into application pods. To keep containerized applications portable, the ConfigMap idea allows you to separate configuration artifacts from image content.

Suggested Tutorials:

Leave a Reply

Your email address will not be published. Required fields are marked *

Share this article

Get Proven Copywriting Tips Straight to Your Inbox

Avail 20% instant discount on a huge training catalog using our special Linux Foundation coupons: UPWRITEZ20