kind: Namespace apiVersion: v1 metadata: name: echo-app-ns --- apiVersion: v1 kind: Service metadata: name: echo-api-svc namespace: echo-app-ns spec: ports: - port: 8080 targetPort: 80 name: api selector: app: echo-app tier: back type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: echo-webapp-svc namespace: echo-app-ns spec: ports: - port: 9000 targetPort: 80 name: web selector: app: echo-app tier: front type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: echo-api-dep namespace: echo-app-ns spec: replicas: 3 selector: matchLabels: app: echo-app tier: back template: metadata: labels: app: echo-app tier: back spec: containers: - name: echo-api image: tasb/echo-api:k8s ports: - containerPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: echo-webapp-dep namespace: echo-app-ns spec: replicas: 3 selector: matchLabels: app: echo-app tier: front template: metadata: labels: app: echo-app tier: front spec: containers: - name: echo-webapp image: tasb/echo-webapp:k8s ports: - containerPort: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: echo-app-ingress namespace: echo-app-ns annotations: nginx.ingress.kubernetes.io/rewrite-target: /$1 spec: ingressClassName: nginx rules: - host: echo-app.ingress.test http: paths: - path: /(.*) pathType: Prefix backend: service: name: echo-webapp-svc port: number: 9000 - path: /api/(.*) pathType: Prefix backend: service: name: echo-api-svc port: number: 8080