diff --git a/deployments/backend-deployment.yaml b/deployments/backend-deployment.yaml deleted file mode 100644 index ce4094a..0000000 --- a/deployments/backend-deployment.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: backend -spec: - replicas: 1 - selector: - matchLabels: - app: backend - template: - metadata: - labels: - app: backend - spec: - containers: - - name: http-echo - image: hashicorp/http-echo:0.2.3 - args: - - "-listen=:8080" - - "-text=Hello from the Backend!" - ports: - - containerPort: 8080 \ No newline at end of file diff --git a/deployments/backend-service.yaml b/deployments/backend-service.yaml deleted file mode 100644 index e72b838..0000000 --- a/deployments/backend-service.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: backend-service -spec: - type: ClusterIP # Default - selector: - app: backend - ports: - - port: 80 # Service port (used by internal clients) - targetPort: 8080 # Container port in the backend Pod \ No newline at end of file diff --git a/deployments/frontend-deployment.yaml b/deployments/frontend-deployment.yaml deleted file mode 100644 index 4d3be52..0000000 --- a/deployments/frontend-deployment.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: frontend -spec: - replicas: 1 - selector: - matchLabels: - app: frontend - template: - metadata: - labels: - app: frontend - spec: - containers: - - name: curl-loop - image: curlimages/curl:7.86.0 - command: ["/bin/sh"] - args: - - "-c" - - | - while true; do - echo "=== Calling backend-service:80 ===" - curl -s backend-service:80 - echo - sleep 5 - done \ No newline at end of file diff --git a/services-in-kubernetes/01/creating-kubernetes-services-slides.pdf b/services-in-kubernetes/01/creating-kubernetes-services-slides.pdf new file mode 100644 index 0000000..6fbc357 Binary files /dev/null and b/services-in-kubernetes/01/creating-kubernetes-services-slides.pdf differ diff --git a/services-in-kubernetes/01/demos.md b/services-in-kubernetes/01/demos.md new file mode 100644 index 0000000..002f9d8 --- /dev/null +++ b/services-in-kubernetes/01/demos.md @@ -0,0 +1,80 @@ +# 1. Create a Deployment of nginx +kubectl create deployment my-nginx --image=nginx:latest --port=80 + +# 2. Expose the Deployment as a NodePort service +kubectl expose deployment my-nginx \ + --type=NodePort \ + --port=80 \ + --target-port=80 \ + --name=my-nginx-service + +=============== +# backend-deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backend +spec: + replicas: 1 + selector: + matchLabels: + app: backend + template: + metadata: + labels: + app: backend + spec: + containers: + - name: http-echo + image: hashicorp/http-echo:0.2.3 + args: + - "-listen=:8080" + - "-text=Hello from the Backend!" + ports: + - containerPort: 8080 +------------- + +# backend-service.yaml +apiVersion: v1 +kind: Service +metadata: + name: backend-service +spec: + type: ClusterIP # Default + selector: + app: backend + ports: + - port: 80 # Service port (used by internal clients) + targetPort: 8080 # Container port in the backend Pod +------------ +# frontend-deployment.yaml +------- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend +spec: + replicas: 1 + selector: + matchLabels: + app: frontend + template: + metadata: + labels: + app: frontend + spec: + containers: + - name: curl-loop + image: curlimages/curl:7.86.0 + command: ["/bin/sh"] + args: + - "-c" + - | + while true; do + echo "=== Calling backend-service:80 ===" + curl -s backend-service:80 + echo + sleep 5 + done +----------- + diff --git a/services-in-kubernetes/02/demos.md b/services-in-kubernetes/02/demos.md new file mode 100644 index 0000000..ab42eff --- /dev/null +++ b/services-in-kubernetes/02/demos.md @@ -0,0 +1,119 @@ + +### **Prerequisites** +1. **AWS CLI Installed & Configured** (`aws configure`) +2. **kubectl Installed** +3. **A Running EKS Cluster** (Amazon Elastic Kubernetes Service) +4. **IAM Permissions** to create and manage EKS resources + +--- + +### **Steps to Deploy Kubernetes Deployment to a LoadBalancer in AWS** + +#### **Step 1: Create an EKS Cluster (If Not Already Running)** +```sh +aws eks create-cluster \ + --name my-cluster \ + --role-arn arn:aws:iam::123456789012:role/EKSClusterRole \ + --resources-vpc-config subnetIds=subnet-xxxxxxxx,securityGroupIds=sg-xxxxxxxx +``` +This step may take some time. You can verify the cluster status: +```sh +aws eks describe-cluster \ + --name my-cluster \ + --query "cluster.status" +``` + +#### **Step 2: Update `kubectl` to Use the New Cluster** +```sh +aws eks update-kubeconfig --name my-cluster +``` +Ensure `kubectl` is using the correct context: +```sh +kubectl config current-context +``` + +#### **Step 3: Deploy an Application** +Create a simple deployment file (`deployment.yaml`): + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: my-app +spec: + replicas: 2 + selector: + matchLabels: + app: my-app + template: + metadata: + labels: + app: my-app + spec: + containers: + - name: my-app + image: nginx + ports: + - containerPort: 80 +``` +Apply the deployment: +```sh +kubectl apply -f deployment.yaml +``` + +#### **Step 4: Create a LoadBalancer Service** +Create a service file (`service.yaml`): + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: my-app-service +spec: + type: LoadBalancer + selector: + app: my-app + ports: + - protocol: TCP + port: 80 + targetPort: 80 +``` +Apply the service: +```sh +kubectl apply -f service.yaml +``` + +#### **Step 5: Get the LoadBalancer URL** +Once deployed, you can get the external IP using: +```sh +kubectl get svc my-app-service +``` +The output will show something like: +``` +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +my-app-service LoadBalancer 10.100.200.1 a1b2c3d4.amazonaws.com 80/TCP 5m +``` + +--- + +### **Verifying the Deployment** +Check if the pods are running: +```sh +kubectl get pods +``` +Check logs: +```sh +kubectl logs -f +``` +Access the application in your browser using the `EXTERNAL-IP`. + +--- + +### **Cleanup** +To delete resources: +```sh +kubectl delete -f deployment.yaml +kubectl delete -f service.yaml +aws eks delete-cluster --name my-cluster +``` + diff --git a/services-in-kubernetes/02/managing-kubernetes-services-slides.pdf b/services-in-kubernetes/02/managing-kubernetes-services-slides.pdf new file mode 100644 index 0000000..3e2a350 Binary files /dev/null and b/services-in-kubernetes/02/managing-kubernetes-services-slides.pdf differ