Created
March 11, 2018 11:04
-
-
Save petitviolet/d36f33d145d0bbf4b54eb187b79d0244 to your computer and use it in GitHub Desktop.
sample Nginx configuration on Kubernetes using ConfigMap to configure nginx.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
Hello,
I have created config map to mount nginx.conf inside the nginx contianer.
But I am seeing the nginx default page inside pod not the one I have mounted via configmap.
PS: I am trying this on OpenShift 4.6 cluster.
My files are:
Config map
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-conf
namespace: nginx-ingress
data:
nginx.conf: |-
user nginx;
worker_processes 10;
events {
worker_connections 10240;
}
http {
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html; #Change this line
index index.html index.htm;
}
}
}
Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: nginx-ingress
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
compute1: worker1
volumes:
- name: nginx-conf
configMap:
name: nginx-conf
items:
- key: nginx.conf
path: nginx.conf
containers:
- name: nginx-alpine-perl
image: docker.io/library/nginx@sha256:51212c2cc0070084b2061106d5711df55e8aedfc6091c6f96fabeff3e083f355
ports:
- containerPort: 80
securityContext:
allowPrivilegeEscalation: false
#runAsUser: 0
volumeMounts:
- name: nginx-conf
mountPath: /etc/nginx
#subPath: nginx.conf
readOnly: true
I tried it with specific path as well like: /etc/nginx/nginx.conf but it doesn't create container.
Any help would be appreciated?
Do i need to install nginx (using yum etc) or configmap will create nginx files automatically.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Can we provide the server configuration wihtout having the config map?
I don't want to use config map, I want to apply the setting configuration in the deployment directly. Is it possible?