Skip to content

Commit

Permalink
Fixes loklak#1410: Set up Nginx with Kubernetes (loklak#1415)
Browse files Browse the repository at this point in the history
  • Loading branch information
vibhcool authored and mariobehling committed Aug 16, 2017
1 parent 579dbd9 commit 3aca737
Show file tree
Hide file tree
Showing 20 changed files with 258 additions and 29 deletions.
27 changes: 0 additions & 27 deletions kubernetes/bin/deploy-development.sh

This file was deleted.

53 changes: 53 additions & 0 deletions kubernetes/bin/deploy-staging.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/bin/bash
export DIR=kubernetes

USAGE="USAGE: ./kubernetes/bin/deploy-development.sh create|create all|delete|delete all"

if [[ "$1" = "create" ]];
then
echo "Creating objects from configurations."
echo "Make sure that persistent disk is already created."
echo ""
echo "Creating Elasticsearch Deployment"
kubectl create -R -f ${DIR}/yamls/staging/elasticsearch/
# For mqtt
kubectl create -R -f ${DIR}/yamls/mosquitto/
if [[ "$2" = "all" ]];
then
# Start KubeLego deployment for TLS certificates
kubectl create -R -f ${DIR}/yamls/lego/
echo "Start nginx deployment, ingress & service"
kubectl create -R -f ${DIR}/yamls/nginx/
fi
# Create web namespace
kubectl create -R -f ${DIR}/yamls/staging/web/
# Wait for some time to prevent any chance of API-Server to access incomplete deployments
sleep 20
echo "Creating loklak deployment"
# Create API server deployment and service for development branch
kubectl create -R -f ${DIR}/yamls/staging/api-server/
echo "Deployed loklak on Kubernetes"
echo "Trying to fetch public IP. ~50s."
sleep 50
if [[ "$2" = "all" ]];
then
kubectl get services --namespace=nginx-ingress
fi
else
kubectl get services --namespace=web
fi
if [[ "$1" = "delete" ]];
then
echo "Clearing the cluster."
if [ "$2" = "all" ]; then
kubectl delete -f ${DIR}/yamls/lego/00-namespace.yml
kubectl delete -f ${DIR}/yamls/nginx/00-namespace.yml
fi
kubectl delete -R -f ${DIR}/yamls/staging/
kubectl delete -f ${DIR}/yamls/mosquitto/00-namespace.yaml
echo "Deleted loklak project from Kubernetes"
elif [[ -z "$1" ]];
then
echo "No arguments provided"
echo $USAGE
fi
File renamed without changes.
1 change: 0 additions & 1 deletion kubernetes/yamls/api/api-server/api-service.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,3 @@ spec:
targetPort: 80
selector:
app: server
type: LoadBalancer
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: web
name: kube-lego
8 changes: 8 additions & 0 deletions kubernetes/yamls/lego/configmap.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v1
metadata:
name: kube-lego
namespace: kube-lego
data:
lego.email: "vibhorverma1995@gmail.com"
lego.url: "https://acme-v01.api.letsencrypt.org/directory"
kind: ConfigMap
39 changes: 39 additions & 0 deletions kubernetes/yamls/lego/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: kube-lego
namespace: kube-lego
spec:
replicas: 1
template:
metadata:
labels:
app: kube-lego
spec:
containers:
- name: kube-lego
image: jetstack/kube-lego:0.1.4
imagePullPolicy: Always
ports:
- containerPort: 8080
env:
- name: LEGO_EMAIL
valueFrom:
configMapKeyRef:
name: kube-lego
key: lego.email
- name: LEGO_LOG_LEVEL
value: debug
- name: LEGO_URL
valueFrom:
configMapKeyRef:
name: kube-lego
key: lego.url
- name: LEGO_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: LEGO_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
4 changes: 4 additions & 0 deletions kubernetes/yamls/nginx/00-namespace.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: nginx-ingress
17 changes: 17 additions & 0 deletions kubernetes/yamls/nginx/configmap.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#
# nginx ingress controller config
# @ref https://github.com/kubernetes/ingress/blob/master/controllers/nginx/configuration.md
#
apiVersion: v1
data:
proxy-connect-timeout: "15"
proxy-read-timeout: "600"
proxy-send-imeout: "600"
hsts-include-subdomains: "false"
body-size: "64m"
server-name-hash-bucket-size: "256"
server-tokens: "false"
kind: ConfigMap
metadata:
namespace: nginx-ingress
name: nginx
31 changes: 31 additions & 0 deletions kubernetes/yamls/nginx/default-deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: default-http-backend
namespace: nginx-ingress
spec:
replicas: 1
template:
metadata:
labels:
app: default-http-backend
spec:
containers:
- name: default-http-backend
image: gcr.io/google_containers/defaultbackend:1.0
livenessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
ports:
- containerPort: 8080
resources:
limits:
cpu: 10m
memory: 20Mi
requests:
cpu: 10m
memory: 20Mi
12 changes: 12 additions & 0 deletions kubernetes/yamls/nginx/default-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: default-http-backend
namespace: nginx-ingress
spec:
ports:
- port: 80
targetPort: 8080
protocol: TCP
selector:
app: default-http-backend
40 changes: 40 additions & 0 deletions kubernetes/yamls/nginx/deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx
namespace: nginx-ingress
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: gcr.io/google_containers/nginx-ingress-controller:0.8.3
name: nginx
imagePullPolicy: Always
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
livenessProbe:
httpGet:
path: /healthz
port: 10254
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
ports:
- containerPort: 80
- containerPort: 443
args:
- /nginx-ingress-controller
- --default-backend-service=nginx-ingress/default-http-backend
- --nginx-configmap=nginx-ingress/nginx
16 changes: 16 additions & 0 deletions kubernetes/yamls/nginx/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: nginx-ingress
annotations:
service.beta.kubernetes.io/external-traffic: "OnlyLocal"
spec:
type: LoadBalancer
ports:
- port: 80
name: http
- port: 443
name: https
selector:
app: nginx
16 changes: 16 additions & 0 deletions kubernetes/yamls/staging/web/ingress-notls.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-notls
namespace: web
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: staging.loklak.org
http:
paths:
- path: /
backend:
serviceName: server
servicePort: 80
21 changes: 21 additions & 0 deletions kubernetes/yamls/staging/web/ingress-tls.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web
namespace: web
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- staging.loklak.org
secretName: loklak-api-tls
rules:
- host: staging.loklak.org
http:
paths:
- path: /
backend:
serviceName: server
servicePort: 80

0 comments on commit 3aca737

Please sign in to comment.