diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ce7cd04..3ce3727 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -95,10 +95,10 @@ jobs: run: | helm repo add traefik https://traefik.github.io/charts helm repo update - helm upgrade --install traefik traefik/traefik -n $CLUSTER_NAME -f traefik/values.yaml - - kubectl apply -n $CLUSTER_NAME -f traefik/cors.yaml - kubectl apply -n $CLUSTER_NAME -f traefik/strip-prefix.yaml + + helm upgrade --install traefik traefik/traefik -n $CLUSTER_NAME -f traefik/resources.yaml + kubectl apply -n $CLUSTER_NAME -f traefik/ingress.yaml + kubectl apply -n $CLUSTER_NAME -f traefik/hpa-config.yaml - name: Create Kubernetes secrets run: | diff --git a/code/kubernetes/grpc-gateway/deployment.yaml b/code/kubernetes/grpc-gateway/deployment.yaml index 529ff7f..156d8f7 100644 --- a/code/kubernetes/grpc-gateway/deployment.yaml +++ b/code/kubernetes/grpc-gateway/deployment.yaml @@ -96,7 +96,7 @@ spec: kind: Deployment name: grpc-gateway minReplicas: 1 - maxReplicas: 3 + maxReplicas: 4 metrics: - type: Resource resource: diff --git a/code/kubernetes/grpc-gateway/ingress.yaml b/code/kubernetes/grpc-gateway/ingress.yaml deleted file mode 100644 index 0846a55..0000000 --- a/code/kubernetes/grpc-gateway/ingress.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: traefik.io/v1alpha1 -kind: IngressRoute -metadata: - name: grpc-gateway -spec: - entryPoints: - - web - - websecure - routes: - - match: PathPrefix(`/api`) - kind: Rule - services: - - name: grpc-gateway - port: 80 - middlewares: - - name: cors - - name: strip-prefix diff --git a/code/kubernetes/scripts/deploy.sh b/code/kubernetes/scripts/deploy.sh index 854279f..7c3167d 100644 --- a/code/kubernetes/scripts/deploy.sh +++ b/code/kubernetes/scripts/deploy.sh @@ -50,10 +50,10 @@ cd "$SCRIPT_DIR/.." || exit 1 # Deploy traefik helm repo add traefik https://traefik.github.io/charts helm repo update -helm upgrade --install traefik traefik/traefik -n $CLUSTER_NAME -f traefik/values.yaml -kubectl apply -n $CLUSTER_NAME -f traefik/cors.yaml -kubectl apply -n $CLUSTER_NAME -f traefik/strip-prefix.yaml +helm upgrade --install traefik traefik/traefik -n $CLUSTER_NAME -f traefik/resources.yaml +kubectl apply -n $CLUSTER_NAME -f traefik/ingress.yaml +kubectl apply -n $CLUSTER_NAME -f traefik/hpa-config.yaml # Deploy threadit application kubectl create secret generic "bucket-secret" \ diff --git a/code/kubernetes/traefik/hpa-config.yaml b/code/kubernetes/traefik/hpa-config.yaml new file mode 100644 index 0000000..48f9d4f --- /dev/null +++ b/code/kubernetes/traefik/hpa-config.yaml @@ -0,0 +1,18 @@ +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: traefik-hpa +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: traefik + minReplicas: 1 + maxReplicas: 3 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 80 \ No newline at end of file diff --git a/code/kubernetes/traefik/cors.yaml b/code/kubernetes/traefik/ingress.yaml similarity index 50% rename from code/kubernetes/traefik/cors.yaml rename to code/kubernetes/traefik/ingress.yaml index 734a84a..e89e4ce 100644 --- a/code/kubernetes/traefik/cors.yaml +++ b/code/kubernetes/traefik/ingress.yaml @@ -1,4 +1,31 @@ apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: grpc-gateway +spec: + entryPoints: + - web + - websecure + routes: + - match: PathPrefix(`/api`) + kind: Rule + services: + - name: grpc-gateway + port: 80 + middlewares: + - name: cors + - name: strip-prefix +--- +apiVersion: traefik.io/v1alpha1 +kind: Middleware +metadata: + name: strip-prefix +spec: + stripPrefix: + prefixes: + - /api +--- +apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: cors diff --git a/code/kubernetes/traefik/resources.yaml b/code/kubernetes/traefik/resources.yaml new file mode 100644 index 0000000..b69fb30 --- /dev/null +++ b/code/kubernetes/traefik/resources.yaml @@ -0,0 +1,11 @@ +# Resource configuration for traefik + +replicaCount: 1 + +resources: + requests: + cpu: 40m + memory: 80Mi + limits: + cpu: 120m + memory: 240Mi \ No newline at end of file diff --git a/code/kubernetes/traefik/strip-prefix.yaml b/code/kubernetes/traefik/strip-prefix.yaml deleted file mode 100644 index 29b4403..0000000 --- a/code/kubernetes/traefik/strip-prefix.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: strip-prefix -spec: - stripPrefix: - prefixes: - - /api diff --git a/code/kubernetes/traefik/values.yaml b/code/kubernetes/traefik/values.yaml deleted file mode 100644 index 56f8925..0000000 --- a/code/kubernetes/traefik/values.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# traefik/values.yaml - -replicaCount: 1 - -resources: - requests: - cpu: 40m - memory: 80Mi - limits: - cpu: 120m - memory: 240Mi - -# TODO: If needed, uncomment and configure HPA settings -#autoscaling: -# enabled: true -# maxReplicas: 2 -# metrics: -# - type: Resource -# resource: -# name: cpu -# target: -# type: Utilization -# averageUtilization: 60 \ No newline at end of file