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 | |
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
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
Deployment
I tried it with specific path as well like: /etc/nginx/nginx.conf but it doesn't create container.
Any help would be appreciated?