Demo: How to deploy a 4-tier application in Kubernetes

Demo: How to deploy a 4-tier application in Kubernetes

 

Use the below yaml code to create a deployment.yaml file and then execute

$kubectl apply -f deployment.yaml

 

To access the frontend UI, go to AWS console and select the public ipv4 DNS of the node in EKS and then type in browser

http:// ec2-18-212-27-8.compute-1.amazonaws.com:30001

 

To create a Load Balancer instead of NodePort then edit the type highlighted in yellow to LoadBalancer , Once the loadbalancer

Is created in AWS use the loadbalancer DNS name to access the Frontend UI

 

--------------------------------------------------------

apiVersion: v1

kind: Service

metadata:

  name: redis-server

  labels:

    app: redis-server

    tier: cache

  namespace: yelb

spec:

  type: ClusterIP

  ports:

  - port: 6379

  selector:

    app: redis-server

    tier: cache

---

apiVersion: v1

kind: Service

metadata:

  name: yelb-db

  labels:

    app: yelb-db

    tier: backenddb

  namespace: yelb

spec:

  type: ClusterIP

  ports:

  - port: 5432

  selector:

    app: yelb-db

    tier: backenddb

---

apiVersion: v1

kind: Service

metadata:

  name: yelb-appserver

  labels:

    app: yelb-appserver

    tier: middletier

  namespace: yelb

spec:

  type: ClusterIP

  ports:

  - port: 4567

  selector:

    app: yelb-appserver

    tier: middletier

---

apiVersion: v1

kind: Service

metadata:

  name: yelb-ui

  labels:

    app: yelb-ui

    tier: frontend

  namespace: yelb

spec:

  type: NodePort

  ports:

  - port: 80

    protocol: TCP

    targetPort: 80

    nodePort: 30001

  selector:

    app: yelb-ui

    tier: frontend

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: yelb-ui

  namespace: yelb

spec:

  selector:

    matchLabels:

      app: yelb-ui

  replicas: 1

  template:

    metadata:

      labels:

        app: yelb-ui

        tier: frontend

    spec:

      containers:

      - name: yelb-ui

        image: abushad/voting:frontui

        ports:

        - containerPort: 80

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: redis-server

  namespace: yelb

spec:

  selector:

    matchLabels:

      app: redis-server

  replicas: 1

  template:

    metadata:

      labels:

        app: redis-server

        tier: cache

    spec:

      containers:

      - name: redis-server

        image: abushad/voting:redis

        ports:

        - containerPort: 6379

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: yelb-db

  namespace: yelb

spec:

  selector:

    matchLabels:

      app: yelb-db

  replicas: 1

  template:

    metadata:

      labels:

        app: yelb-db

        tier: backenddb

    spec:

      containers:

      - name: yelb-db

        image: abushad/voting:db

        ports:

        - containerPort: 5432

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: yelb-appserver

  namespace: yelb

spec:

  selector:

    matchLabels:

      app: yelb-appserver

  replicas: 1

  template:

    metadata:

      labels:

        app: yelb-appserver

        tier: middletier

    spec:

      containers:

      - name: yelb-appserver

        image: abushad/voting:appserver

        ports:

        - containerPort: 4567

 

-------------------------------------------------------------------


Comments

Popular posts from this blog

Install and configure AWS CLI and kubectl in a EC2 Client machine for AWS EKS

Deploying the custom docker image as POD/container in kubernetes and creating LB to access the services

Building a custom docker container image and pushing it to Docker Hub – Docker Compose