Azure kubernetes內安裝Nginx作為Ingress Control

更新 發佈閱讀 7 分鐘
vocus|新世代的創作平台

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

安裝Nginx

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

vocus|新世代的創作平台

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

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

  • Az login
  • 指定好訂閱
az account set - subscription XXXXXX
vocus|新世代的創作平台
  • 下載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,如果對裡面命名不符合自己公司規範,也可以自己修改

vocus|新世代的創作平台

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

vocus|新世代的創作平台

設定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看這個服務是否有沒有啟動。但不能代表我們可以知道系統是否真的沒問題

vocus|新世代的創作平台

最好方式,直接到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
vocus|新世代的創作平台

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

vocus|新世代的創作平台

透過下面語法測試

curl -L http://10.0.80.77

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

vocus|新世代的創作平台

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

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

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

留言
avatar-img
EK.Technology 日常
6會員
15內容數
沒有最完美架構、只有最適合情境的架構、好的架構是需要不斷迭代
你可能也想看
Thumbnail
在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好
Thumbnail
在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
因為想要使用FQDN的方式連接到Kubernetes cluster內部的應用服務,加上早已使用Linux Bind為測試環境的主要DNS
Thumbnail
因為想要使用FQDN的方式連接到Kubernetes cluster內部的應用服務,加上早已使用Linux Bind為測試環境的主要DNS
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
Kubernetes 是目前最流行的容器編排平台,提供了一個環境來保證容器化應用的高可用性和伸縮性。這篇文章將展示如何將你的 Gin 應用部署到 Kubernetes上。
Thumbnail
Kubernetes 是目前最流行的容器編排平台,提供了一個環境來保證容器化應用的高可用性和伸縮性。這篇文章將展示如何將你的 Gin 應用部署到 Kubernetes上。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
Thumbnail
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
這篇文章教你如何搭建Kubernetes Cluster,包括節點安裝前設定、軟體套件安裝、Control-Plane部署和加入運算節點等步驟。在建置之後,作者會分享一些基礎服務的安裝。希望這篇文章對你有所幫助。
Thumbnail
這篇文章教你如何搭建Kubernetes Cluster,包括節點安裝前設定、軟體套件安裝、Control-Plane部署和加入運算節點等步驟。在建置之後,作者會分享一些基礎服務的安裝。希望這篇文章對你有所幫助。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
宣告式管理是一種管理方法,其中您描述系統或資源的期望狀態,而不必關心實際如何達到該狀態。kubectl apply 命令在 Kubernetes 中實現了這種宣告式管理方式,以下是執行指令時的運作流程...
Thumbnail
宣告式管理是一種管理方法,其中您描述系統或資源的期望狀態,而不必關心實際如何達到該狀態。kubectl apply 命令在 Kubernetes 中實現了這種宣告式管理方式,以下是執行指令時的運作流程...
Thumbnail
本文將說明在安裝完Kubernetes Cluster之後,接下來必須要進行的CNI Plugin安裝建置方式,同時也透過這篇文章進行基本的CNI說明與比較。 1. Container Network Interface (CNI)
Thumbnail
本文將說明在安裝完Kubernetes Cluster之後,接下來必須要進行的CNI Plugin安裝建置方式,同時也透過這篇文章進行基本的CNI說明與比較。 1. Container Network Interface (CNI)
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News