Add kubernetes files and shell scripts for test deployment
This commit is contained in:
parent
5c6be895e4
commit
dae1700704
54
README.md
54
README.md
@ -5,3 +5,57 @@ Django Backend
|
||||
|
||||
* Start both middleware AND frontend dev server simultaneously
|
||||
* See README of subfolder for further information
|
||||
|
||||
|
||||
## Deploy Kubernetes Admin Dashboard
|
||||
|
||||
Deploy dashboard:
|
||||
```
|
||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
|
||||
```
|
||||
|
||||
Create dashboard-admin.yaml file:
|
||||
|
||||
```
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: admin-user
|
||||
namespace: kubernetes-dashboard
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: admin-user
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cluster-admin
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: admin-user
|
||||
namespace: kubernetes-dashboard
|
||||
```
|
||||
|
||||
|
||||
Apply it to kubernetes:
|
||||
```
|
||||
kubectl apply -f dashboard-admin.yaml
|
||||
```
|
||||
|
||||
Get login token:
|
||||
```
|
||||
kubectl get secret -n kubernetes-dashboard $(kubectl get serviceaccount admin-user -n kubernetes-dashboard -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode
|
||||
```
|
||||
|
||||
Start proxy:
|
||||
```
|
||||
kubectl proxy
|
||||
```
|
||||
|
||||
Access URL: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/ingress?namespace=default
|
||||
|
||||
## Fix Darwin issue with Ingress
|
||||
```
|
||||
minikube stop && minikube delete && minikube start --vm=true --driver=hyperkit
|
||||
```
|
||||
@ -1,31 +0,0 @@
|
||||
from flask import Flask
|
||||
from flask_pymongo import PyMongo
|
||||
|
||||
# make sure mongoDB (container) is running and accessible
|
||||
|
||||
# see https://flask-pymongo.readthedocs.io/en/latest/
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config["MONGO_URI"] = "mongodb://localhost:27017/myDatabase"
|
||||
mongo = PyMongo(app)
|
||||
|
||||
mongo.db.test.save({'_id': 0, 'foo': {'test': 'this'}})
|
||||
mongo.db.test.save({'_id': 1, 'suu': 'sar'})
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def home_page():
|
||||
test_results = mongo.db.test.find()
|
||||
results = []
|
||||
try:
|
||||
while True:
|
||||
result = test_results.next()
|
||||
results.append(result)
|
||||
except StopIteration:
|
||||
pass
|
||||
|
||||
return str(results)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
||||
8
components/entitiy_ident/entity_ident_service/Dockerfile
Normal file
8
components/entitiy_ident/entity_ident_service/Dockerfile
Normal file
@ -0,0 +1,8 @@
|
||||
FROM python:3.8-slim
|
||||
COPY . /app
|
||||
WORKDIR /app
|
||||
RUN pip install -r requirements.txt
|
||||
ENV PORT 5000
|
||||
EXPOSE 5000
|
||||
ENTRYPOINT [ "python" ]
|
||||
CMD [ "entity_ident.py" ]
|
||||
@ -0,0 +1,38 @@
|
||||
import jsonify as jsonify
|
||||
from flask import Flask
|
||||
from flask_pymongo import PyMongo
|
||||
|
||||
# make sure mongoDB (container) is running and accessible
|
||||
|
||||
# see https://flask-pymongo.readthedocs.io/en/latest/
|
||||
|
||||
app = Flask(__name__)
|
||||
#app.config["MONGO_URI"] = "mongodb://localhost:27017/myDatabase"
|
||||
#mongo = PyMongo(app)
|
||||
|
||||
#mongo.db.test.insert_one({'_id': 0, 'foo': {'test': 'this'}})
|
||||
#mongo.db.test.insert_one({'_id': 1, 'suu': 'sar'})
|
||||
|
||||
|
||||
#@app.route("/")
|
||||
#def home_page():
|
||||
# test_results = mongo.db.test.find()
|
||||
# results = []
|
||||
# try:
|
||||
# while True:
|
||||
# result = test_results.next()
|
||||
# results.append(result)
|
||||
# except StopIteration:
|
||||
# pass
|
||||
|
||||
#return str(results)
|
||||
|
||||
@app.route("/")
|
||||
def index():
|
||||
return str("Welcome to Tasks app! I am running inside pod!")
|
||||
|
||||
#if __name__ == '__main__':
|
||||
# app.run()
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0')
|
||||
@ -1,3 +1,4 @@
|
||||
pika
|
||||
flask
|
||||
Flask-PyMongo
|
||||
jsonify
|
||||
17
deploy-local.sh
Normal file
17
deploy-local.sh
Normal file
@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "Pointing shell to minikube’s docker-daemon..."
|
||||
eval $(minikube -p minikube docker-env)
|
||||
|
||||
echo "Building images..."
|
||||
docker build -t entity-ident components/entitiy_ident/entity_ident_service
|
||||
|
||||
echo "Creating deployments and services..."
|
||||
kubectl create -f kubernetes/entity-ident-deployment.yaml
|
||||
kubectl create -f kubernetes/entity-ident-service.yaml
|
||||
|
||||
echo "Enabling Ingress addon..."
|
||||
minikube addons enable ingress
|
||||
|
||||
echo "Creating the Ingress object..."
|
||||
kubectl apply -f kubernetes/minikube-ingress.yaml
|
||||
22
kubernetes/entity-ident-deployment.yaml
Normal file
22
kubernetes/entity-ident-deployment.yaml
Normal file
@ -0,0 +1,22 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: entity-ident
|
||||
labels:
|
||||
app: entity-ident
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: entity-ident
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: entity-ident
|
||||
spec:
|
||||
containers:
|
||||
- name: entity-ident
|
||||
image: entity-ident
|
||||
ports:
|
||||
- containerPort: 5000
|
||||
imagePullPolicy: Never
|
||||
12
kubernetes/entity-ident-service.yaml
Normal file
12
kubernetes/entity-ident-service.yaml
Normal file
@ -0,0 +1,12 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: entity-ident
|
||||
labels:
|
||||
service: entity-ident
|
||||
spec:
|
||||
selector:
|
||||
app: entity-ident
|
||||
ports:
|
||||
- port: 5000
|
||||
targetPort: 5000
|
||||
15
kubernetes/minikube-ingress.yaml
Normal file
15
kubernetes/minikube-ingress.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: minimal-ingress
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/rewrite-target: /
|
||||
spec:
|
||||
rules:
|
||||
- http:
|
||||
paths:
|
||||
- path: /testpath
|
||||
pathType: Prefix
|
||||
backend:
|
||||
serviceName: entity-ident
|
||||
servicePort: 5000
|
||||
6
remove-local.sh
Normal file
6
remove-local.sh
Normal file
@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "Removing deployments and services..."
|
||||
kubectl delete -f kubernetes/entity-ident-deployment.yaml
|
||||
kubectl delete -f kubernetes/entity-ident-service.yaml
|
||||
kubectl delete -f kubernetes/minikube-ingress.yaml
|
||||
Loading…
x
Reference in New Issue
Block a user