K8S ConfigMap and NGINX.
Table of Contents
ConfigMap as a "Volume"
We can use a ConfigMap to declare a file and then mount it as a volume to any container:
The ConfigMap is specified in the volumes section, the name of the volume has to match the volumeMounts name.
Two things to take into account, the mountPath could have been any path, the subPath must match the ConfigMap→data→key/file(index.html, in this case) defined.
The Service can be used to attach to an existing Ingress or any networking resource.
volumeMounts:
- name: html-volume
mountPath: /usr/share/nginx/html/index.html
subPath: index.html
ports:
- containerPort: 80
volumes:
- name: html-volume
configMap:
name: html
apiVersion: v1
kind: ConfigMap
metadata:
name: html
data:
index.html: |
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Hello World</title>
</head>
<body>
<h2>Hello</h2>
</body>
</html>
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: simple-web-server
spec:
selector:
matchLabels:
app: simple-web-server
template:
metadata:
labels:
app: simple-web-server
spec:
containers:
- name: simple-web-server
image: nginx:latest
resources:
limits:
memory: "128Mi"
cpu: "500m"
volumeMounts:
- name: html-volume
mountPath: /usr/share/nginx/html/index.html
subPath: index.html
ports:
- containerPort: 80
volumes:
- name: html-volume
configMap:
name: html
---
apiVersion: v1
kind: Service
metadata:
name: simple-web-server-service
spec:
type: NodePort
selector:
app: simple-web-server
ports:
- port: 80
targetPort: 80
protocol: TCP