nginx-kibana-deplyment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-kibana-deployment
labels:
app: nginx-kibana
env: prod
spec:
replicas: 1
selector:
matchLabels:
app: nginx-kibana
env: prod
template:
metadata:
labels:
app: nginx-kibana
env: prod
spec:
containers:
- name: nginx-container
image: nginx
imagePullPolicy: IfNotPresent
resources:
requests:
memory: "128Mi"
cpu: "200m"
limits:
memory: "256Mi"
cpu: "200m"
volumeMounts:
- name: nginx-conf
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
- name: nginx-admin-htpasswd
mountPath: /etc/nginx/admin-htpasswd
subPath: admin-htpasswd
ports:
- containerPort: 80
volumes:
- name: nginx-conf
configMap:
name: nginx-conf
- name: nginx-admin-htpasswd
configMap:
name: nginx-admin-htpasswd
---
kind: Service
apiVersion: v1
metadata:
name: nginx-kibana-service
labels:
app: nginx-kibana
env: prod
spec:
selector:
app: nginx-kibana
env: prod
ports:
- name: kibana-ui
protocol: TCP
port: 80
targetPort: 80
nodePort: 30081
type: NodePort
nginx.conf
events { }
http
{
upstream kibana
{
server 192.168.0.183:30063;
server 192.168.0.184:30063;
server 192.168.0.185:30063;
}
server
{
listen 80;
location / {
auth_basic "kibana admin";
auth_basic_user_file /etc/nginx/admin-htpasswd;
proxy_pass http://kibana;
}
}
}
Create admin-htpasswd auth file with htpasswd for admin user.
yum install httpd-tools
htpasswd -c admin-htpasswd admin
-Create config maps in kubernetes for above files
( nginx.conf, admin-htpasswd )
kubectl create configmap nginx-conf --from-file nginx.conf
kubectl create configmap nginx-admin-htpasswd --from-file admin-htpasswd