diff --git a/README.md b/README.md index 2a50a09..605aacf 100644 --- a/README.md +++ b/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 +``` \ No newline at end of file diff --git a/components/entitiy_ident/entity_ident.py b/components/entitiy_ident/entity_ident.py deleted file mode 100644 index c8270aa..0000000 --- a/components/entitiy_ident/entity_ident.py +++ /dev/null @@ -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() diff --git a/components/entitiy_ident/entity_ident_service/Dockerfile b/components/entitiy_ident/entity_ident_service/Dockerfile new file mode 100644 index 0000000..e197ea8 --- /dev/null +++ b/components/entitiy_ident/entity_ident_service/Dockerfile @@ -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" ] \ No newline at end of file diff --git a/components/entitiy_ident/entity_ident_service/entity_ident.py b/components/entitiy_ident/entity_ident_service/entity_ident.py new file mode 100644 index 0000000..d013366 --- /dev/null +++ b/components/entitiy_ident/entity_ident_service/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("Test!") + +#if __name__ == '__main__': +# app.run() + +if __name__ == '__main__': + app.run(host='0.0.0.0') diff --git a/components/entitiy_ident/requirements.txt b/components/entitiy_ident/entity_ident_service/requirements.txt similarity index 78% rename from components/entitiy_ident/requirements.txt rename to components/entitiy_ident/entity_ident_service/requirements.txt index 0205823..e821607 100644 --- a/components/entitiy_ident/requirements.txt +++ b/components/entitiy_ident/entity_ident_service/requirements.txt @@ -1,3 +1,4 @@ pika flask Flask-PyMongo +jsonify \ No newline at end of file diff --git a/components/entitiy_ident/mongo/Dockerfile b/components/entitiy_ident/mongo/Dockerfile new file mode 100644 index 0000000..20803ee --- /dev/null +++ b/components/entitiy_ident/mongo/Dockerfile @@ -0,0 +1,8 @@ +FROM mongo:4.4 + +COPY ./import.sh . +COPY ./cars.json . +COPY ./traffic_lights.json . + +ADD import.sh /docker-entrypoint-initdb.d + diff --git a/components/entitiy_ident/mongo/cars.json b/components/entitiy_ident/mongo/cars.json new file mode 100644 index 0000000..a7fbc0e --- /dev/null +++ b/components/entitiy_ident/mongo/cars.json @@ -0,0 +1,17 @@ +[ + { + "oem": "BENTLEY", + "modelType": "Continental", + "vin": "SCBFR7ZA5CC072256" + }, + { + "oem": "SATURN", + "modelType": "Vue", + "vin": "5GZCZ43D13S812715" + }, + { + "oem": "SATURN", + "modelType": "Vue2", + "vin": "5GZCZ43D13S812715" + } +] \ No newline at end of file diff --git a/components/entitiy_ident/mongo/import.sh b/components/entitiy_ident/mongo/import.sh new file mode 100644 index 0000000..ec22493 --- /dev/null +++ b/components/entitiy_ident/mongo/import.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +mongoimport --db entities --collection cars --type json --file cars.json --jsonArray +mongoimport --db entities --collection trafficLights --type json --file traffic_lights.json --jsonArray diff --git a/components/entitiy_ident/mongo/traffic_lights.json b/components/entitiy_ident/mongo/traffic_lights.json new file mode 100644 index 0000000..e464166 --- /dev/null +++ b/components/entitiy_ident/mongo/traffic_lights.json @@ -0,0 +1,16 @@ +[ + { + "id": "1", + "location": { + "type": "Point", + "coordinates": [-73.856077, 40.848447] + } + }, + { + "id": "2", + "location": { + "type": "Point", + "coordinates": [-73.856077, 40.848447] + } + } +] \ No newline at end of file diff --git a/deploy-local.sh b/deploy-local.sh new file mode 100644 index 0000000..a4b297f --- /dev/null +++ b/deploy-local.sh @@ -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 \ No newline at end of file diff --git a/kubernetes/entity-ident-deployment.yaml b/kubernetes/entity-ident-deployment.yaml new file mode 100644 index 0000000..7980520 --- /dev/null +++ b/kubernetes/entity-ident-deployment.yaml @@ -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 diff --git a/kubernetes/entity-ident-service.yaml b/kubernetes/entity-ident-service.yaml new file mode 100644 index 0000000..bb8fed6 --- /dev/null +++ b/kubernetes/entity-ident-service.yaml @@ -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 \ No newline at end of file diff --git a/kubernetes/minikube-ingress.yaml b/kubernetes/minikube-ingress.yaml new file mode 100644 index 0000000..d0ed724 --- /dev/null +++ b/kubernetes/minikube-ingress.yaml @@ -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 \ No newline at end of file diff --git a/remove-local.sh b/remove-local.sh new file mode 100644 index 0000000..0b9a478 --- /dev/null +++ b/remove-local.sh @@ -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 \ No newline at end of file