Add k3d version in progress
parent
d52d0df00c
commit
d5bae5f9da
|
|
@ -0,0 +1 @@
|
||||||
|
shoppinglist-frontend.tar
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
FROM python:3.11-slim
|
||||||
|
WORKDIR /app
|
||||||
|
COPY app.py .
|
||||||
|
RUN pip install flask redis
|
||||||
|
CMD ["python", "app.py"]
|
||||||
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
|
||||||
|
all: cluster image load apply restart watch
|
||||||
|
|
||||||
|
# TODO: maybe background this?
|
||||||
|
cluster:
|
||||||
|
k3d cluster create mycluster
|
||||||
|
k3d cluster list
|
||||||
|
|
||||||
|
image: Dockerfile
|
||||||
|
docker build -t shoppinglist-frontend:latest .
|
||||||
|
|
||||||
|
load:
|
||||||
|
k3d image import shoppinglist-frontend:latest -c mycluster
|
||||||
|
|
||||||
|
apply:
|
||||||
|
kubectl apply -f k8s/
|
||||||
|
|
||||||
|
restart:
|
||||||
|
kubectl delete pod -l app=shoppinglist-frontend
|
||||||
|
|
||||||
|
watch:
|
||||||
|
kubectl get pods -l app=shoppinglist-frontend -w
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
# app.py
|
||||||
|
from flask import Flask, request, jsonify
|
||||||
|
import redis
|
||||||
|
|
||||||
|
import random
|
||||||
|
|
||||||
|
my_random_id = random.randrange(100)
|
||||||
|
|
||||||
|
r = redis.Redis(host='redis', port=6379)
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route("/id", methods=["GET"])
|
||||||
|
def id():
|
||||||
|
return f"{my_random_id}\n"
|
||||||
|
|
||||||
|
@app.route("/items", methods=["GET", "POST"])
|
||||||
|
def items():
|
||||||
|
if request.method == "POST":
|
||||||
|
item = request.json.get("item")
|
||||||
|
if item:
|
||||||
|
r.rpush("shopping_list", item)
|
||||||
|
return '', 204
|
||||||
|
else:
|
||||||
|
items = r.lrange("shopping_list", 0, -1)
|
||||||
|
return jsonify([i.decode() for i in items])
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app.run(host="0.0.0.0", port=5000)
|
||||||
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: shoppinglist-frontend
|
||||||
|
spec:
|
||||||
|
replicas: 3
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: shoppinglist-frontend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: shoppinglist-frontend
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: frontend
|
||||||
|
image: shoppinglist-frontend:latest
|
||||||
|
imagePullPolicy: Never
|
||||||
|
ports:
|
||||||
|
- containerPort: 5000
|
||||||
|
env:
|
||||||
|
- name: REDIS_HOST
|
||||||
|
value: redis
|
||||||
|
- name: REDIS_PORT
|
||||||
|
value: "6379"
|
||||||
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: shoppinglist-ingress
|
||||||
|
annotations:
|
||||||
|
nginx.ingress.kubernetes.io/rewrite-target: /
|
||||||
|
spec:
|
||||||
|
ingressClassName: nginx
|
||||||
|
rules:
|
||||||
|
- host: localhost
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: shoppinglist-frontend
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: shoppinglist-frontend
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: shoppinglist-frontend
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 5000
|
||||||
|
type: NodePort
|
||||||
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: redis
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: redis
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: redis
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: redis
|
||||||
|
image: redis:7-alpine
|
||||||
|
ports:
|
||||||
|
- containerPort: 6379
|
||||||
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: redis
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: redis
|
||||||
|
ports:
|
||||||
|
- port: 6379
|
||||||
|
targetPort: 6379
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
Loading…
Reference in New Issue