前言
本文為〈Kubernetes 官方文件〉的學習筆記。
環境
- macOS
- minikube
概述
Ingress 是一種 Kubernetes 服務,可以提供負載平衡,並將多個應用程式服務公開給外部使用。
以下是一個將所有流量都發送到同一服務的簡單 Ingress 示意圖:
1 | 客戶端 -> Ingress-managed 負載平衡器 -> Ingress -> 路由规则 -> Service |
設置
一個最簡單的 Ingress 設定檔如下:
1 | apiVersion: networking.k8s.io/v1 |
實作
Ingress 不支援以 docker
做為 VM 驅動的網路環境,因此使用 hyperkit
做為 minikube 的 VM 驅動。
1 | minikube start --vm=true --driver=hyperkit |
啟用 Ingress 外掛。
1 | minikube addons enable ingress |
確認 Ingress 控制器處於運行狀態。
1 | kubectl get pods -n kube-system |
部署一個名為 web
的 Deployment。
1 | kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0 |
將 Deployment 公開。
1 | kubectl expose deployment web --type=NodePort --port=8080 |
建立一個 example-ingress.yaml
檔,是 Ingress 的設定檔,負責通過 hellow-world.info
網域,將服務請求轉發到 web
服務。
1 | apiVersion: networking.k8s.io/v1 |
創建 Ingress 資源。
1 | kubectl apply -f example-ingress.yaml |
查看 Ingress 物件的詳細資訊。
1 | kubectl get ingress |
查看 minikube 的 IP 位址。
1 | minikube ip |
修改 /etc/hosts
檔,新增一個對應 minikube 的 IP 位址的網域名稱:
1 | 192.168.64.9 hello-world.info |
嘗試將請求發送給 web
服務。
1 | curl hello-world.info |
輸出:
1 | Hello, world! |