From a6f87ecff154f11ccfca948ffcfa27d3e93c224f Mon Sep 17 00:00:00 2001 From: Ettore Ciarcia Date: Mon, 9 Oct 2023 22:14:39 +0200 Subject: [PATCH] feat: added basic configuration to run Kubeinvaders on Minikube --- minikube-setup/Makefile | 36 +++++++++++++++++ minikube-setup/README.md | 62 ++++++++++++++++++++++++++++++ minikube-setup/manifests/nginx.yml | 62 ++++++++++++++++++++++++++++++ minikube-setup/manifests/ns.yml | 4 ++ 4 files changed, 164 insertions(+) create mode 100644 minikube-setup/Makefile create mode 100644 minikube-setup/README.md create mode 100644 minikube-setup/manifests/nginx.yml create mode 100644 minikube-setup/manifests/ns.yml diff --git a/minikube-setup/Makefile b/minikube-setup/Makefile new file mode 100644 index 0000000..9439145 --- /dev/null +++ b/minikube-setup/Makefile @@ -0,0 +1,36 @@ +kubernetes-version?=v1.26.3 +driver?=parallels +memory?=2048 +cpu?=4 +nodes?=1 + + +.PHONY: init-cluster +init-cluster: + minikube start \ + --kubernetes-version $(kubernetes-version) \ + --driver $(driver) \ + --memory $(memory) \ + --cpus $(cpu) \ + --nodes $(nodes) \ + --embed-certs \ + --static-ip 10.211.55.70 + + +.PHONY: setup-cluster +setup-cluster: + kubectl apply -f manifests && helm install kubeinvaders --set-string config.target_namespace="ns-1" \ + -n kubeinvaders kubeinvaders/kubeinvaders --set ingress.enabled=true --set ingress.hostName=kubeinvaders.local --set deployment.image.tag=v1.9.6 && minikube addons enable ingress + + +.PHONY: setup +setup: init-cluster setup-cluster + +.PHONY: delete-cluster +delete-cluster: + minikube delete + + + + + diff --git a/minikube-setup/README.md b/minikube-setup/README.md new file mode 100644 index 0000000..dc3cfc5 --- /dev/null +++ b/minikube-setup/README.md @@ -0,0 +1,62 @@ +# How to use Kubeinvaders on Minikube + +## Prerequisites + +- [Minikube](https://github.com/kubernetes/minikube) +- [kubectl](https://kubernetes.io/docs/tasks/tools/) +- [Helm](https://helm.sh/) +- [Virtualization Software compatible with Minikube](https://minikube.sigs.k8s.io/docs/drivers/) (Parallels, VirtualBox, Hyperkit ecc). + +## What we are going to install in our cluster + +- Kubeinvasers 1.9.6 +- Ingress addons for Minikube +- x1 Deployment, x1 ReplicaSet, x10 nginx pods in namesapce **ns-1** + +## Walkthrough + +### Setup your Minikube cluster + +```make init-cluster``` + +If no hypervisor is specified within the Makefile, the default will be parallels. Check this [link](https://minikube.sigs.k8s.io/docs/drivers/) for a complete list of Minikube-compatible drivers +Within the makefile, you can specify other configurations as well: + +- Number of nodes +- RAM +- CPU +- Kubernetes version + + +### Setup Kubeinvaders, Ingress addons and Nginx deployment + +```make setup-cluster``` + +### How to reach the applications within the cluster + +The two applications can be accessed at the following paths: + +- kubeinvaders.local +- nginx.local + +However, to reach them, you need to add these two entries to the /etc/hosts file, associating these DNS names with the output obtained from the "minikube ip" command. + +Run + +```minikube ip``` + +and add the following entries to the /etc/hosts file: + +``` + kubeinvaders.local + nginx.local +``` + +More about minikube ip command [here](https://minikube.sigs.k8s.io/docs/commands/ip/) + +Now you can visit the kubeinvaders.local page and have fun! + + + + + diff --git a/minikube-setup/manifests/nginx.yml b/minikube-setup/manifests/nginx.yml new file mode 100644 index 0000000..9f3937d --- /dev/null +++ b/minikube-setup/manifests/nginx.yml @@ -0,0 +1,62 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: ns-1 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: ns-1 + labels: + app: nginx-deployment + name: nginx-deployment +spec: + replicas: 10 + selector: + matchLabels: + app: nginx-deployment + strategy: {} + template: + metadata: + creationTimestamp: null + labels: + app: nginx-deployment + spec: + containers: + - image: nginx:alpine-slim + name: nginx + resources: {} +status: {} +--- +apiVersion: v1 +kind: Service +metadata: + namespace: ns-1 + name: nginx-service +spec: + selector: + app: nginx-deployment + ports: + - protocol: TCP + port: 80 + targetPort: 80 + type: ClusterIP +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + namespace: ns-1 + name: nginx-ingress +spec: + rules: + - host: nginx.local + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: nginx-service + port: + number: 80 + diff --git a/minikube-setup/manifests/ns.yml b/minikube-setup/manifests/ns.yml new file mode 100644 index 0000000..6339a78 --- /dev/null +++ b/minikube-setup/manifests/ns.yml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: kubeinvaders