Azure kubernetes內安裝Nginx作為Ingress Control

更新於 2024/09/04閱讀時間約 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
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
最近要來考證照,把準備過程跟大家分享 此處提供 Microsoft Azure AI 900 證照考古題,資料來源:https://reurl.cc/4rVvE3 哪兩個場景是自然語言處理工作負載的範例?每個正確答案都代表一個完整的解決方案。 A: 監控機器的溫度,當溫度達到特
Thumbnail
最近要來考證照,把準備過程跟大家分享 此處提供 Microsoft Azure AI 900 證照考古題,資料來源:https://reurl.cc/4rVvE3 您需要建立一個可以大聲朗讀食譜說明的應用程序,以支援視力不佳的用戶。您應該使用哪個版本的服務? A: 文字分析
Thumbnail
最近要來考證照,把準備過程跟大家分享 選出正確完成句子的答案。 您有一個資料庫,其中包含員工及其照片的清單。您正在標記員工的新照片。對於以下每個陳述,如果該陳述為真,則選擇“是”。否則,選擇「否」 您需要開發一個行動應用程序,供員工在旅行時掃描和儲存他們的費用。您應該使用哪種類型的
Thumbnail
今年兩場關於Cloud的演講,我主要針對使用PaaS服務作為一個議題,會有PaaS應用的議題,主要來自自己觀察企業運用雲端資源模式,也來自於實務經驗,發現採用PaaS服務,可以比使用IaaS服務的費用下降了30~40 %。雲概念越來越普及,但是企業要怎樣用雲的資源幫助企業轉型,或許還在一個模糊的階段
Thumbnail
在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好
Thumbnail
如果想看官方文件的話~ 請看 使用 Azure 監視器監視虛擬機器,我是有看沒有懂啦~ 以下,我直接以我能了解的方式,進行實作。 一般而言,從「概觀」功能下的「監視」~可以看到一些主機的運行狀況。
Thumbnail
承上篇,繼續往下走吧! 來說明一下 PHP 兩個會用到的套件安裝,一個是 ionCube,另一個為 memcached ●PHP 套件 ionCube 安裝 先以下列指令,在帳戶內建立一個 tmp 資料夾備用,執行時留意是在帳號剛登入主機的位置喔!
Thumbnail
先說,我並非專業人士~ 只是分享建立的過程與經驗,不要問我問題~ 我可能、應該無法解答,哈哈哈。 另,這只是一份 草稿? 操作簡述~ 容我不很詳細的抓畫面了! 我之後 "應該" 會拍影片說明整個過程,真的有拍的話,再補上影片網址。
Thumbnail
本文介紹了微軟Azure的基礎證照AZ-900證照對職業生涯的好處,以及如何高效率地準備AZ-900考試。通過本文,您可以了解AZ-900考試的內容和準備重點,並學習如何制定高效的AZ-900學習計劃。如果您想提高在求職市場上的競爭力,增加薪資,提高工作效率,提高信譽度,那麼通過AZ-900考試是一
Thumbnail
使用Azure Backup Service將資料備份到雲端Microsoft Azure平臺,本文摘要說明 Azure 備份架構、元件。
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
最近要來考證照,把準備過程跟大家分享 此處提供 Microsoft Azure AI 900 證照考古題,資料來源:https://reurl.cc/4rVvE3 哪兩個場景是自然語言處理工作負載的範例?每個正確答案都代表一個完整的解決方案。 A: 監控機器的溫度,當溫度達到特
Thumbnail
最近要來考證照,把準備過程跟大家分享 此處提供 Microsoft Azure AI 900 證照考古題,資料來源:https://reurl.cc/4rVvE3 您需要建立一個可以大聲朗讀食譜說明的應用程序,以支援視力不佳的用戶。您應該使用哪個版本的服務? A: 文字分析
Thumbnail
最近要來考證照,把準備過程跟大家分享 選出正確完成句子的答案。 您有一個資料庫,其中包含員工及其照片的清單。您正在標記員工的新照片。對於以下每個陳述,如果該陳述為真,則選擇“是”。否則,選擇「否」 您需要開發一個行動應用程序,供員工在旅行時掃描和儲存他們的費用。您應該使用哪種類型的
Thumbnail
今年兩場關於Cloud的演講,我主要針對使用PaaS服務作為一個議題,會有PaaS應用的議題,主要來自自己觀察企業運用雲端資源模式,也來自於實務經驗,發現採用PaaS服務,可以比使用IaaS服務的費用下降了30~40 %。雲概念越來越普及,但是企業要怎樣用雲的資源幫助企業轉型,或許還在一個模糊的階段
Thumbnail
在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好
Thumbnail
如果想看官方文件的話~ 請看 使用 Azure 監視器監視虛擬機器,我是有看沒有懂啦~ 以下,我直接以我能了解的方式,進行實作。 一般而言,從「概觀」功能下的「監視」~可以看到一些主機的運行狀況。
Thumbnail
承上篇,繼續往下走吧! 來說明一下 PHP 兩個會用到的套件安裝,一個是 ionCube,另一個為 memcached ●PHP 套件 ionCube 安裝 先以下列指令,在帳戶內建立一個 tmp 資料夾備用,執行時留意是在帳號剛登入主機的位置喔!
Thumbnail
先說,我並非專業人士~ 只是分享建立的過程與經驗,不要問我問題~ 我可能、應該無法解答,哈哈哈。 另,這只是一份 草稿? 操作簡述~ 容我不很詳細的抓畫面了! 我之後 "應該" 會拍影片說明整個過程,真的有拍的話,再補上影片網址。
Thumbnail
本文介紹了微軟Azure的基礎證照AZ-900證照對職業生涯的好處,以及如何高效率地準備AZ-900考試。通過本文,您可以了解AZ-900考試的內容和準備重點,並學習如何制定高效的AZ-900學習計劃。如果您想提高在求職市場上的競爭力,增加薪資,提高工作效率,提高信譽度,那麼通過AZ-900考試是一
Thumbnail
使用Azure Backup Service將資料備份到雲端Microsoft Azure平臺,本文摘要說明 Azure 備份架構、元件。