iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
DevOps

在open source環境,建置container環境及k8s(Minikube)的API佈署環境系列 第 17

[Day17]在 Minikube 中使用 Ingress:實現應用程式的網路訪問

  • 分享至 

  • xImage
  •  

前言

Minikube 是一個在本地環境中運行 Kubernetes 叢集的工具。通過 Minikube,您可以在本地快速設定一個 Kubernetes 環境,並進行應用程式開發和測試。在本教學中,我們將重點介紹如何在 Minikube 中使用 Ingress,以實現應用程式的網路訪問。

步驟 1:創建應用程式服務和部署

首先,我們需要創建一個簡單的應用程式服務和部署。以下是一個示例的 deployment.yaml 和 service.yaml 配置檔案:

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - containerPort: 80
# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

運行以下命令以創建部署和服務:

$ kubectl apply -f deployment.yaml
$ kubectl apply -f service.yaml

步驟 2:啟用 Ingress 控制器

預設情況下,Minikube 中未啟用 Ingress 控制器。您需要啟用它,以便在 Minikube 中使用 Ingress。運行以下命令

minikube addons enable ingress

步驟 3:創建 Ingress 規則

現在,我們將創建一個 Ingress 規則,將流量導向到剛剛創建的應用程式服務。以下是一個 ingress.yaml 的示例配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
spec:
  rules:
    - host: nginx.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-service
                port:
                  number: 80

在這個範例中,我們將流量導向到 nginx-service 服務,並設定了域名為 nginx.example.com。

運行以下命令以創建 Ingress 規則:

$ kubectl apply -f ingress.yaml

步驟 3:修改 Hosts 文件(僅限於本地測試)

在本地測試中,為了模擬域名解析,您需要修改本地 Hosts 文件,將 nginx.example.com 對應到 Minikube IP 地址。在命令行中運行以下命令:

$ echo "$(minikube ip) nginx.example.com" | sudo tee -a /etc/hosts

步驟 4:訪問應用程式

您可以在瀏覽器中訪問 http://nginx.example.com ,這會將流量導向到剛剛創建的 Nginx 應用程式。

總結

透過這個教學,您學會了如何在 Minikube 中使用 Ingress 來實現應用程式的網路訪問。Ingress 提供了一種有效的方式,讓您可以集中管理應用程式的網路流量,同時為每個應用程式創建統一的入口點。

請注意,此教學僅限於本地測試。在實際情況中,您需要設定 DNS 記錄,以便實現域名解析和訪問。

參考資料
https://alankrantas.medium.com/%E7%AD%86%E8%A8%98-%E5%9C%A8%E6%9C%AC%E6%A9%9F-kubernetes-%E7%92%B0%E5%A2%83%E4%BD%88%E7%BD%B2%E5%AE%B9%E5%99%A8%E4%B8%A6%E4%B8%B2%E6%8E%A5%E6%9C%8D%E5%8B%99-ingress-%E4%BC%BA%E6%9C%8D%E5%99%A8-%E4%BD%BF%E7%94%A8-minikube-%E8%88%87%E5%96%AE%E4%B8%80-yaml-%E6%AA%94%E5%AF%A6%E4%BD%9C-1d25228e6416


上一篇
[Day16]Kubernetes 上的軟體部署更新策略:確保穩定性與新功能交付
下一篇
[Day18]ConfigMap 和 Secret
系列文
在open source環境,建置container環境及k8s(Minikube)的API佈署環境30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言