Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
sample Nginx configuration on Kubernetes using ConfigMap to configure nginx.
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-conf
data:
nginx.conf: |
user nginx;
worker_processes 3;
error_log /var/log/nginx/error.log;
events {
worker_connections 10240;
}
http {
log_format main
'remote_addr:$remote_addr\t'
'time_local:$time_local\t'
'method:$request_method\t'
'uri:$request_uri\t'
'host:$host\t'
'status:$status\t'
'bytes_sent:$body_bytes_sent\t'
'referer:$http_referer\t'
'useragent:$http_user_agent\t'
'forwardedfor:$http_x_forwarded_for\t'
'request_time:$request_time';
access_log /var/log/nginx/access.log main;
server {
listen 80;
server_name _;
location / {
root html;
index index.html index.htm;
}
}
include /etc/nginx/virtualhost/virtualhost.conf;
}
virtualhost.conf: |
upstream app {
server localhost:8080;
keepalive 1024;
}
server {
listen 80 default_server;
root /usr/local/app;
access_log /var/log/nginx/app.access_log main;
error_log /var/log/nginx/app.error_log;
location / {
proxy_pass http://app/;
proxy_http_version 1.1;
}
}
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: /etc/nginx # mount nginx-conf volumn to /etc/nginx
readOnly: true
name: nginx-conf
- mountPath: /var/log/nginx
name: log
volumes:
- name: nginx-conf
configMap:
name: nginx-conf # place ConfigMap `nginx-conf` on /etc/nginx
items:
- key: nginx.conf
path: nginx.conf
- key: virtualhost.conf
path: virtualhost/virtualhost.conf # dig directory
- name: log
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: nginx
@Nj-kol

This comment has been minimized.

Copy link

Nj-kol commented Feb 26, 2020

Not able to mount under /etc/nginx. Pod goes into CrashLoopBackOff. Permissions issue?

@vacar

This comment has been minimized.

Copy link

vacar commented Feb 28, 2020

@Nj-kol its mostly the permission issue but you check the logs of your nginx pod for more informations.

~$ kubectl get pods
~$ kubectl logs {POD_NAME}
or
~$ kubectl describe pod {POD_NAME}

@Nj-kol

This comment has been minimized.

Copy link

Nj-kol commented Feb 28, 2020

@vacar Thanks for your reply, I was able to resolve the issue. The problem was not actually the mount, there was some config issue in nginx.conf which prevented nginx from starting up. Because by default, nginx write log under /var/log/nginx and not standard out, kubectl logs did not produce any output, hence rendering it very difficult to debug. Once I change nginx.conf to debug to standard out, things became clear

@therzv

This comment has been minimized.

Copy link

therzv commented Jul 29, 2020

i have some issue, all files under /etc/nginx is erased

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.