練習 - 連線雲端原生元件
Kubernetes 會為 Pod 提供自己的 IP 位址,併為一組 Pod 提供單一 DNS 名稱。 服務指令清單檔案包含使用定義如何與其連線的原則,以可靠的方式公開Pod的指示。 如果重新部署容器映像,您就不需要重新設定連線,因為服務指令清單中的指示。
輸入控制器會定義您的應用程式如何連線到外界。 在範例案例中,智慧冰箱需要將訊息傳送至 Node.js 容器,而輸入控制器會決定該連線的設定。
在本單元中,您將會:
- 設定輸入資訊清單,讓外部應用程式可以存取容器映像。
- 部屬輸入控制器。
- 使用 Docker 映像建立 Web 應用程式。
設定輸入資訊清單
使用 命令來識別主機允許存取叢集
az aks show
的完整功能變數名稱 (FQDN),並查詢addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName
值。az aks show --resource-group $RESOURCEGROUP --name $CLUSTERNAME -o tsv --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName
複製輸出,並使用 在 Cloud Shell 中開啟整合式編輯器
code .
開啟 檔案,
ingress.yaml
並將 值networking.k8s.io/v1
host
取代apiVersion
為您在上一個步驟中複製的 FQDN。檔案看起來應該像下列範例:
# ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cna-express annotations: kubernetes.io/ingress.class: addon-http-application-routing spec: rules: - host: cna-express.<exampleURL.eastus.aksapp.io> http: paths: - path: / # Which path is this rule referring to pathType: Prefix backend: # How the ingress will handle the requests service: name: cna-express # Which service the request will be forwarded to port: name: http # Which port in that service
使用 CTRL S 儲存指令清單檔案,並使用 CTRL + + Q 關閉編輯器。
部署輸入
使用
kubectl apply
命令將輸入指令清單提交至叢集。kubectl apply -f ./ingress.yaml
此命令應輸出與下列範例相似的結果:
ingress.networking.k8s.io/cna-express created
使用
cd ..
將 Cloud Shell 傳回源資料夾。cd ..
建立輸入和建立區域記錄之間可能會有一點延遲。 發生這種情況時,我們可以建立 Web 應用程式。
使用 Docker 映像來建立 Web 應用程式
流覽至 Azure 入口網站,然後選取您的容器登錄。
在 [設定] 下,選取 [存取金鑰]。
選取 [管理員 使用者] 選項,以啟用登錄的系統管理員用戶帳戶。
檢閱輸入
流覽至 Azure Cloud Shell,並檢查部署是否使用
kubectl get ingress
命令成功。kubectl get ingress cna-express
此命令應輸出與下列範例相似的結果:
NAME HOSTS ADDRESS PORTS AGE cna-express cna.5cd29ec927f24764b052.eastus.aksapp.io 52.226.96.30 80 4m44s
請務必在輸出的資料行
ADDRESS
中填入 IP 位址。列出 DNS 區域,以了解我們的 DNS 是否已使用
az network dns zone list
命令建立。az network dns zone list --output table
此命令應輸出與下列範例相似的結果:
Name ResourceGroup RecordSets MaxRecordSets ------------------------------------- -------------------------------------------- ------------ --------------- 5cd29ec927f24764b052.eastus.aksapp.io mc_rg-contoso-video_aks-contoso-video_eastus 4 10000
複製和
ResourceGroup
的值Name
,以在下一個步驟中使用。使用
az network dns record-set list
命令列出區域的 DNS 記錄。 將和<resource-group>
取代<name>
為您在上一個步驟中複製的值。az network dns record-set list -g <resource-group> -z <name> --output table
此命令應輸出與下列範例相似的結果:
Fqdn Name ProvisioningState ResourceGroup Ttl ---------------------------------------------- ------- ------------------- -------------------------------------------- ------ 5cd29ec927f24764b052.eastus.aksapp.io. @ Succeeded mc_learn-cna-rg_cna-demo-aks_eastus 172800 5cd29ec927f24764b052.eastus.aksapp.io. @ Succeeded mc_learn-cna-rg_cna-demo-aks_eastus 3600 cna.5cd29ec927f24764b052.eastus.aksapp.io. cna Succeeded mc_learn-cna-rg_cna-demo-aks_eastus 300 cna.5cd29ec927f24764b052.eastus.aksapp.io. cna Succeeded mc_learn-cna-rg_cna-demo-aks_eastus 300
請確定清單底部有兩筆新記錄,其中包含在
host
機碼中建立的主機。ProvisioningState
值為Succeeded
。 傳播區域記錄最多可能需要花費數分鐘。開啟瀏覽器並瀏覽至輸出中所述的完整 aksapp.io FQDN URL。 您應該會看到「Hello world」訊息。 請記得 URL 結尾不要加上
.
。
建立 Web 應用程式
返回 Azure 入口網站,然後選取 [建立資源]。
選取 [Web]>[Web 應用程式]。
在 [基本資料] 索引標籤上,為每個設定輸入下列值:
設定 值 專案詳細資料 訂用帳戶 選取您可以在其中建立和管理資源的預設 Azure 訂用帳戶。 資源群組 從下拉式清單中選取現有的資源群組。 執行個體詳細資料 名稱 [輸入唯一的名稱,並記下此名稱以供稍後使用]。 發佈 Docker 容器 作業系統 Linux 區域 保留為預設值,或選取靠近您的位置。 定價方案 Linux 方案 保留為預設值。 定價方案 選取 [免費 F1 0.00 美元/月]。 選取 畫面頂端的 [Docker] 索引標籤。
在 [Docker] 索引標籤 上,針對每個設定輸入下列值:
設定 值 選項。 單一容器 映像來源 Azure Container Registry 登錄 選取您的登錄。 映像 webimage
標籤 latest
啟動命令 將這個設定維持空白。 選取 [檢閱及建立]> [建立]。
設定 Web 應用程式
完成部署後,選取 [前往資源]。
在 [設定] 底下,選取 [設定]。
在 [應用程式設定] 下,選取 [新增應用程式設定]。
複製下列值,並貼至 [名稱] 欄位。
SOCKET_SERVER_URL
針對 [值],請使用與輸入控制器搭配使用的相同 aksapp.io FQDN URL,並存取「Hello world」網頁。
選取 [確定>儲存>繼續]。
返回 Cloud Shell,並使用下列命令建立 Web 應用程式名稱的環境變數。 請確定您以 Web 應用程式名稱取代
<webapp-name>
。WEBAPPNAME=<webapp-name>
測試解決方案
執行下列命令,然後選取 Web 應用程式的 URL。
echo select the link below echo http://$WEBAPPNAME.azurewebsites.net
介紹完畢 您現在已建立可擴充的雲端原生解決方案。 您可以隨意使用您所建立的資源和程式碼。 當您完成後,執行 Azure Cloud Shell 中的下一個步驟,以刪除資源群組,並且避免您的帳戶產生任何不必要的費用。
az group delete --name $RESOURCEGROUP