iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
Software Development

Microservices in Action: with example in Node.js系列 第 14

透過 Ingress 處理外部路由

你現有很多微服務了,這也代理我們需要處理的路由工作更複雜了,在傳統架構中我們會架設一台 Nginx 或 Apache 來處理這些事,在 Kubernetes 的架構下,你可以使用 Ingress 元件。

說明

  • Ingress 裡綁定了一個靜態 IP
  • Ingress 裡設定了 HTTPS
  • 這裡有四個微服務,分別是 batch-job-service, socket-service, auth-service 和 api-service。
  • 由路徑決定進哪一個微服務,serviceName 和 servicePort 要對應到 Service 物件裡的設定。
  • servicePort 為 80 的原因是,從外到內的 port 轉導過程是 443 -> 80 -> 3xxxx -> 3000,只有一開始是 https,但從 80 port 之後的流程,都算是內網了,所以可以直接走 http。

完整 ingress.yaml 檔案

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ooxx-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: ooxx-static-address
    networking.gke.io/managed-certificates: ooxx-certificate
    ingress.kubernetes.io/tls-minimum-version: "1.2"
spec:
  rules:
    - host: api.your-domain.com
      http:
        paths:
          - path: /batch/*
            backend:
              serviceName: batch-job-service
              servicePort: 80
          - path: /socket.io/*
            backend:
              serviceName: socket-service
              servicePort: 80
          - path: /auth/*
            backend:
              serviceName: auth-service
              servicePort: 80
          - path: /*
            backend:
              serviceName: api-service
              servicePort: 80

建立 Ingress 物件

kubectl apply -f ingress.yaml

上一篇
微服務自動擴展 - 整合 Deployment 和 Service 物件
下一篇
Staging 環境 CI/CD
系列文
Microservices in Action: with example in Node.js24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言