Feature/k8s rolling update (#33)
* chore: k8s rolling update deployment * chore: change param name * docs: README for k8s rolling update * docs: fix typo * chore: add namespace, add loadbalancer * docs: update doc for k8s deployment and service * feat: crontab per 20 minutes * fix: sed on linux
This commit is contained in:
parent
2b0db9f752
commit
a13bba6c1e
@ -14,3 +14,7 @@ Image contains web tool to check routing and guidance result.
|
||||
It uses MapBox GL JS and apply routing response on top of Mapbox vector tiles.
|
||||
See details in [osrm-frontend-docker](./osrm-frontend-docker/README.md)
|
||||
|
||||
## Kubernetes Deployment
|
||||
### k8s-rolling-update
|
||||
Use kubernetes rolling update deployment strategy for timed replace container with new one. Latest traffic will be used during container startup.
|
||||
See details in [k8s rolling update](./k8s-rolling-update/)
|
||||
|
||||
48
docker-orchestration/k8s-rolling-update/README.md
Normal file
48
docker-orchestration/k8s-rolling-update/README.md
Normal file
@ -0,0 +1,48 @@
|
||||
# Kubernetes Rolling Update Deployment
|
||||
Use kubernetes rolling update deployment strategy for timed replace container with new one. Latest traffic will be used during container startup.
|
||||
|
||||
## Usage
|
||||
```bash
|
||||
|
||||
# NOTE: prepare your image and fill into osrm.yaml
|
||||
$ sed -i "s#TELENAV_OSRM_BACKEND_DOCKER_IMAGE#<your image>#g" ./osrm.yaml
|
||||
|
||||
# create deployment
|
||||
$ kubectl create -f osrm.yaml
|
||||
deployment.extensions/osrm created
|
||||
|
||||
# create loadbalancer
|
||||
$ kubectl create -f osrm_svc.yaml
|
||||
service/routing-osrm-service created
|
||||
|
||||
# OPTIONAL: checking deployment status, wait READY
|
||||
$ kubectl get deployments -n routing-osrm
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||
osrm 0/1 1 0 20s
|
||||
$ kubectl get pods -n routing-osrm
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
osrm-67b55f46c9-tpfgs 0/1 Running 0 22s
|
||||
|
||||
# OPTIONAL: check deployment details for troubleshooting
|
||||
$ kubectl describe deployments -n routing-osrm
|
||||
...
|
||||
$ kubectl describe pods -n routing-osrm
|
||||
...
|
||||
|
||||
# OPTIONAL: check container running log for troubleshooting
|
||||
$ kubectl logs -f --timestamps=true -n routing-osrm osrm-67b55f46c9-tpfgs
|
||||
...
|
||||
|
||||
# start timed rolling update for traffic updating
|
||||
$ crontab osrm_cron
|
||||
$ crontab -l
|
||||
*/30 * * * * export PATH=$HOME/bin:$PATH && kubectl set env --env="LAST_MANUAL_RESTART=$(date -u +\%Y\%m\%dT\%H\%M\%S)" deploy/osrm -n routing-osrm >> ${HOME}/osrm_cron.log 2>&1
|
||||
|
||||
# OPTIONAL: if want to stop
|
||||
$ crontab -r
|
||||
$ kubectl delete deployment osrm -n routing-osrm
|
||||
deployment.extensions "osrm" deleted
|
||||
$ kubectl delete routing-osrm-service -n routing-osrm
|
||||
service "routing-osrm-service" deleted
|
||||
|
||||
```
|
||||
33
docker-orchestration/k8s-rolling-update/osrm.yaml
Normal file
33
docker-orchestration/k8s-rolling-update/osrm.yaml
Normal file
@ -0,0 +1,33 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: osrm
|
||||
namespace: routing-osrm
|
||||
spec:
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: RollingUpdate
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 0
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: routing
|
||||
spec:
|
||||
nodeSelector:
|
||||
routing-osrm/role: routing-osrm
|
||||
containers:
|
||||
- name: osrm-backend
|
||||
image: TELENAV_OSRM_BACKEND_DOCKER_IMAGE
|
||||
imagePullPolicy: IfNotPresent
|
||||
args: ["routed_startup"]
|
||||
ports:
|
||||
- containerPort: 5000
|
||||
protocol: TCP
|
||||
readinessProbe:
|
||||
tcpSocket:
|
||||
port: 5000
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 5
|
||||
failureThreshold: 1000
|
||||
1
docker-orchestration/k8s-rolling-update/osrm_cron
Normal file
1
docker-orchestration/k8s-rolling-update/osrm_cron
Normal file
@ -0,0 +1 @@
|
||||
*/20 * * * * export PATH=$HOME/bin:$PATH && kubectl set env --env="LAST_MANUAL_RESTART=$(date -u +\%Y\%m\%dT\%H\%M\%S)" deploy/osrm -n routing-osrm >> ${HOME}/osrm_cron.log 2>&1
|
||||
15
docker-orchestration/k8s-rolling-update/osrm_svc.yaml
Normal file
15
docker-orchestration/k8s-rolling-update/osrm_svc.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: routing-osrm-service
|
||||
namespace: routing-osrm
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
|
||||
spec:
|
||||
selector:
|
||||
app: routing
|
||||
ports:
|
||||
- port: 5001
|
||||
protocol: TCP
|
||||
targetPort: 5000
|
||||
type: LoadBalancer
|
||||
Loading…
Reference in New Issue
Block a user