Azure kubernetes內安裝Nginx作為Ingress Control

更新於 發佈於 閱讀時間約 7 分鐘
raw-image

在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好管理再加上資訊安全也不好做。因此,如何做好管理,可以透過Nginx當作Ingress Controller。當然還有其他套可以使用,只是剛好因為在企業內部也用這套,用起來會比較順手

安裝Nginx

要安裝Nginx前,我們必須要先登入AKS,在登入這地方,在叢集系統管理員 ClusterRoleBinding的設定方式不同,做法也不同。如果今天,除了AKS外,又有很多服務在Azure上面運行,我會建議最少要使用Azure AD驗證的模式。這樣與其他服務溝通都可以透過識別身分方式溝通,可以確保資訊安全

raw-image

那樣,有沒有啟用AAD認證差別會在哪邊呢?主要差異就是必須要安裝kubelogin作為驗證外掛之用。要完整安裝kubelogin,可以參考下面三篇文章,就可以完成

如果不是使用AAD認證的人,就不需要安裝這個外掛套件,安裝完畢後,使用Azure Cli進行下面幾個操作,就可以登入AKS

  • Az login
  • 指定好訂閱
az account set - subscription XXXXXX
raw-image
  • 下載AKS叢集認證 :
az aks get-credentials --resource-group groupname --name resourcename
  • 啟動 kubelogin 程式進行驗證
kubelogin convert-kubeconfig -l azurecli

上面幾個步驟就登入,然後,我們可以來查所有命名空間中的部署,來確定是否真的有進去

kubectl get deployments --all-namespaces=true

然後,就開始準備安裝Nginx。要安裝Nginx,除了可以手動一步一步做,目前我會先將別人寫的YAML檔案,下載回來自己修正。這樣可以節省一些時間。取得YAML的URL:

https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.3.0/deploy/static/provider/cloud/deploy.yaml

內容中我會將裡面對應的Loadbalance去指定我要指定的Public IP,如果對裡面命名不符合自己公司規範,也可以自己修改

raw-image

修改好之後,就直接用kubectl apply -f 佈署Yaml檔案,完成後就可以看到Nginx在運行

raw-image

設定Nginx Proxy

當我們建立好Nginx時候,再來是要設定Nginx的Proxy檔案,讓Nginx導向內部的Container的應用系統。下面,是Nginx Proxy範例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: btiaaks-ingress
namespace: api-service
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /cccapi(/|$)(.*)
pathType: Prefix
backend:
service:
name: azure-ai-service
port:
number: 7000
- path: /bbbapi(/|$)(.*)
pathType: Prefix
backend:
service:
name: bbb-service
port:
number: 7001
- path: /aaapi(/|$)(.*)
pathType: Prefix
backend:
service:
name: azure-service
port:
number: 7002
  • Namespace: 當你的服務與Nginx不同Namespace,就要特別掛上去指定是針對服務的Namespace
  • Path:是透過Nginx呼叫後端服務要帶入的路徑
  • Name:是指Container服務名稱

設定好,也是用kubectl apply -f 方式佈署這個設定檔的Yaml

如果,應用程式都用Container方式佈署在AKS內,AKS內的系統要互相呼叫,不需要使用Nginx的路由從外面再進來,直接在內部用URL呼叫就可以,避免路由從內到外,再從外進入裡面的Container。因此,設定URL規則如下:

ContaineName.Namespace.svc.cluster.local:Port

記住不要再加入Nginx Prefix,自己就忘記,導致花很多時間

如何測試AKS內部的Container

一旦Container是用AKS內部IP,那樣我們就不可能從外部去測試它,雖然我們可以從Azure Portal看這個服務是否有沒有啟動。但不能代表我們可以知道系統是否真的沒問題

raw-image

最好方式,直接到AKS內部測試Container是否有無問題。要這樣測試,需要多幾個步驟。首先要安裝terminal在ASK內,Namespace要跟服務是同一個Namespace

kubectl run -it --rm aks-ingress-test --image=mcr.microsoft.com/dotnet/runtime-deps:6.0 --namespace ingress-basic

並安裝curl ,後續用curl 進行測試

apt-get update && apt-get install -y curl
raw-image

然後在AKS的服務與輸入的地方,找出要測試的Container的IP

raw-image

透過下面語法測試

curl -L http://10.0.80.77

如果是Web的container會回傳下面這樣訊息

raw-image

如果是API,語法可以這樣,就會回傳API要回傳的結果

curl --location --request POST 'http://10.0.34.206:7000/weatherforecast/getdata2'

用以上方式,就可以建立unmanaged ingress controller,並用熟悉的Nginx方式運行和設定

avatar-img
6會員
11內容數
沒有最完美架構、只有最適合情境的架構、好的架構是需要不斷迭代
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
EK.Technology 日常 的其他內容
隨著雲端概念越來越普及,Azure 作為一個雲端平台,已逐漸演變成為一個高度複雜的架構。早期的 Azure 概念是讓使用者在雲端上開啟所需的資源並建立相關的服務,同時也不需要自行建構機房等基礎設施,因此具有相當的優勢。但是隨著時間的推移,雲端的應用也越來越廣泛,因此 Azure 也提供了許多指導方式
隨著雲端概念越來越普及,Azure 作為一個雲端平台,已逐漸演變成為一個高度複雜的架構。早期的 Azure 概念是讓使用者在雲端上開啟所需的資源並建立相關的服務,同時也不需要自行建構機房等基礎設施,因此具有相當的優勢。但是隨著時間的推移,雲端的應用也越來越廣泛,因此 Azure 也提供了許多指導方式
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章將提供一個完整的Kubernetes安裝指南,包括控制平面節點和工作節點的安裝過程。文章中還會提及一些參考資料和解決常見錯誤的方法。
Thumbnail
安裝環境需求 64位元Linux,核心版本為3.1以上,且能滿足Ducker安裝環境。 機器之間要能夠互通。 外部存取權限。 硬體資源:兩核心CPU、8G記憶體、硬碟30GB以上。 安裝Kubeadm與Ducker Kubeadm是Kubernetes的一鍵部署工具。 增加Kube
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
在Kubernetes cluster上建立Jenkins,並且使用動態方式建立Jenkins Agent。透過K8S解決傳統的Jenkins一對多架構的問題,最終建立基本Pipeline在Jenkins Web UI上,簡單驗證Jenkins engine正常運行。
Thumbnail
本篇將分享關於nginx ingress controller的基本操作,包括預先準備、流程、實際操作、將domain name 映射到Ingress LB IP、部署Demo App 驗證以及結論。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
本文將演示在安裝完 Kubernetes Cluster 後的基本元件安裝,包括 Calico/Calicoctl、Metric Server 和 Dashboard UI 的安裝方法以及相關問題與解決方式。
Thumbnail
這篇文章教你如何搭建Kubernetes Cluster,包括節點安裝前設定、軟體套件安裝、Control-Plane部署和加入運算節點等步驟。在建置之後,作者會分享一些基礎服務的安裝。希望這篇文章對你有所幫助。
Thumbnail
本文章將說明如果您想要從頭建置一組具有Loadbalancer HA架構的Kubernetes Cluster時,你可能會需要做的事前準備工作。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章將提供一個完整的Kubernetes安裝指南,包括控制平面節點和工作節點的安裝過程。文章中還會提及一些參考資料和解決常見錯誤的方法。
Thumbnail
安裝環境需求 64位元Linux,核心版本為3.1以上,且能滿足Ducker安裝環境。 機器之間要能夠互通。 外部存取權限。 硬體資源:兩核心CPU、8G記憶體、硬碟30GB以上。 安裝Kubeadm與Ducker Kubeadm是Kubernetes的一鍵部署工具。 增加Kube
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
在Kubernetes cluster上建立Jenkins,並且使用動態方式建立Jenkins Agent。透過K8S解決傳統的Jenkins一對多架構的問題,最終建立基本Pipeline在Jenkins Web UI上,簡單驗證Jenkins engine正常運行。
Thumbnail
本篇將分享關於nginx ingress controller的基本操作,包括預先準備、流程、實際操作、將domain name 映射到Ingress LB IP、部署Demo App 驗證以及結論。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
本文將演示在安裝完 Kubernetes Cluster 後的基本元件安裝,包括 Calico/Calicoctl、Metric Server 和 Dashboard UI 的安裝方法以及相關問題與解決方式。
Thumbnail
這篇文章教你如何搭建Kubernetes Cluster,包括節點安裝前設定、軟體套件安裝、Control-Plane部署和加入運算節點等步驟。在建置之後,作者會分享一些基礎服務的安裝。希望這篇文章對你有所幫助。
Thumbnail
本文章將說明如果您想要從頭建置一組具有Loadbalancer HA架構的Kubernetes Cluster時,你可能會需要做的事前準備工作。