環境設定¶
在本頁中,我們將討論如何設定您的環境,並確保啟動 UI 前端和 Book Review Service 的 Node 伺服器。
本節的最終交付成果是什麼?¶
- 您在本地電腦上擁有一個正在執行的 Kubernetes (k8s) 叢集,並已安裝 Knative。
- 您的前端應用程式已部署為 Kubernetes 部署,並透過連接埠轉發到 localhost:3000
- 您的 Node.js 應用程式已部署為 Kubernetes 部署,並透過連接埠轉發到 localhost:8080
我們將按照以上順序滿足每個需求。
複製儲存庫¶
git clone https://github.com/knative/docs.git
疑難排解
複製儲存庫時遇到問題?請查看這裡尋求協助。
警告
重要:請花一些時間閱讀免責聲明,然後再繼續下一頁。
檔案結構¶
範例應用程式的程式碼位於 docs/code-samples/eventing/bookstore-sample-app
中
在 bookstore-sample-app
資料夾下,有 2 個資料夾
-
/solution:此資料夾包含所有 yaml 檔案和您需要的程式碼。當您遇到困難時,請查看此資料夾。
-
/start:此資料夾包含您入門所需的所有檔案。請按照教學課程的說明,將所有設定檔儲存在這裡!
提示
Kuack 建議您從 /start 開始,在瀏覽教學課程時寫下所有設定檔,並在遇到困難時檢查解決方案。
在執行任何命令之前,請務必 cd
返回根目錄,即 /start
。
教學課程中的所有命令都假設您位於 /start
目錄中。
捷徑¶
執行 docs/code-samples/eventing/bookstore-sample-app/start/setup.sh
將自動完成本節中的所有任務。
警告
但是,如果您不熟悉此流程,我們建議您查看以下步驟。
指示¶
任務 1:設定已安裝 Knative 的正在執行的 Kubernetes 叢集¶
提示
我們建議您使用 kn quickstart
外掛程式來安裝 Knative。
請按照這裡的指示,啟動已安裝 Knative 的叢集!
驗證
您應該先看到 knative-eventing
和 knative-serving
命名空間中的 Pod 正在執行,然後再繼續。
NAMESPACE NAME READY STATUS RESTARTS AGE
knative-eventing eventing-controller-7576f555d5-7c2p2 1/1 Running 0 4m50s
knative-eventing eventing-webhook-5874bb8445-cqcn9 1/1 Running 0 4m50s
knative-eventing imc-controller-8c5d5ddb5-m249l 1/1 Running 0 4m49s
knative-eventing imc-dispatcher-76d9f7464b-dphd6 1/1 Running 0 4m49s
knative-eventing mt-broker-controller-8d8f8d48f-rvlcv 1/1 Running 0 4m48s
knative-eventing mt-broker-filter-85c457f879-dvhnj 1/1 Running 0 4m48s
knative-eventing mt-broker-ingress-5688f4cd68-nm8cc 1/1 Running 0 4m48s
knative-serving activator-55d856fccd-g5qpw 1/1 Running 0 4m53s
knative-serving autoscaler-5fb49c64c7-hrjng 1/1 Running 0 4m53s
knative-serving controller-ddbb9d4f-khttq 1/1 Running 0 4m53s
knative-serving net-kourier-controller-68d89f78d5-hw8r6 1/1 Running 0 4m52s
knative-serving webhook-85b9744fc5-6w9sg 1/1 Running 0 4m53s
kourier-system 3scale-kourier-gateway-dbc5b88f5-7g29n 1/1 Running 0 4m52s
kube-system coredns-5dd5756b68-49xsj 1/1 Running 0 12m
kube-system etcd-minikube 1/1 Running 0 12m
kube-system kube-apiserver-minikube 1/1 Running 0 12m
kube-system kube-controller-manager-minikube 1/1 Running 0 12m
kube-system kube-proxy-tqcvx 1/1 Running 0 12m
kube-system kube-scheduler-minikube 1/1 Running 0 12m
kube-system storage-provisioner 1/1 Running 0 12m
Minikube 使用者的額外步驟:¶
注意!如果您沒有使用 Knative 快速入門,請手動設定通道以連接類型為 LoadBalancer
的服務
執行以下命令並保持終端開啟
minikube tunnel
驗證
如果沒有任何錯誤訊息,則表示您已成功設定通道。
任務 2:執行 Bookstore Web 應用程式¶
Next.js 前端應用程式位於 docs/code-samples/eventing/bookstore-sample-app/start/frontend
資料夾中。
請確保您的本機電腦上的連接埠 3000 沒有被其他應用程式使用。
部署前端應用程式¶
您可以在本機建置映像,或使用我們預先建置的映像。如果您使用預先建置的映像,則可以繼續下一步。
準備就緒後,執行以下命令來部署前端應用程式
kubectl apply -f frontend/config/100-front-end-deployment.yaml
這將建立 Deployment,並使用 LoadBalancer 類型的 Service 公開它以接收外部流量
deployment.apps/bookstore-frontend created
service/bookstore-frontend-svc created
驗證
執行以下命令來檢查 Pod 是否正在執行
kubectl get pods
您會看到您的前端 Pod 正在執行。
NAME READY STATUS RESTARTS AGE
bookstore-frontend-7b879ffb78-9bln6 1/1 Running 0 4m37s
連接埠轉發 (在條件下為選用)¶
您可能需要設定連接埠轉發,才能從本機電腦存取應用程式。
執行以下命令來檢查是否需要連接埠轉發
kubectl get services
您會看到以下主控台輸出
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
bookstore-frontend-svc LoadBalancer 10.99.187.173 <pending> 3000:31600/TCP 27m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 39m
注意
如果您的前端服務的 EXTERNAL-IP
為 127.0.0.1
,則不需要連接埠轉發。
如果需要連接埠轉發,請執行以下命令
kubectl port-forward svc/bookstore-frontend-svc 3000:3000
您應該會看到以下輸出
Forwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000
建立連接埠轉發後,請勿關閉終端。 啟動新的終端來執行下一個命令。
任務 3:執行 Book Review Service¶
Node.js 伺服器位於 node-server
資料夾中。
警告
請確保您的本機電腦上的連接埠 8080 沒有被其他應用程式使用。
部署 Book Review Service:Node.js 伺服器¶
您可以在本機建置映像,或使用我們預先建置的映像。如果您使用預先建置的映像,則可以繼續下一步。
準備就緒後,執行以下命令來部署 Node.js 伺服器
kubectl apply -f node-server/config/100-deployment.yaml
這個指令會拉取映像檔,並將其以 Deployment 的形式部署到您的叢集。同時也會將其以 LoadBalancer 的形式暴露,以便接收外部流量。
deployment.apps/node-server created
service/node-server-svc created
驗證
執行以下命令來檢查 Pod 是否正在執行
kubectl get pods
您會看到您的 Node.js 伺服器 (node-server) pod 正在執行。
NAME READY STATUS RESTARTS AGE
bookstore-frontend-7b879ffb78-9bln6 1/1 Running 0 39m
node-server-68bf98cdf4-skjmh 1/1 Running 0 38m
連接埠轉發 (在特定條件下為選用)¶
您可能需要設定連接埠轉發,才能從本機電腦存取應用程式。
執行以下命令來檢查是否需要連接埠轉發
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
bookstore-frontend-svc LoadBalancer 10.99.187.173 <pending> 3000:31600/TCP 73m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 85m
node-server-svc LoadBalancer 10.101.90.35 <pending> 80:31792/TCP 73m
注意
如果您的 Node.js 服務的 EXTERNAL-IP
為 127.0.0.1
,則不需要連接埠轉發。如果您無法訪問 localhost:8080
頁面,您可以嘗試設定連接埠轉發。
如果需要連接埠轉發,請開啟一個新的終端機並執行
kubectl port-forward svc/node-server-svc 8080:80
Forwarding from 127.0.0.1:8080 > 8000
Forwarding from [::1]:8080 > 8000
建立連接埠轉發後,請勿關閉終端。 啟動新的終端來執行下一個命令。
驗證
在您的瀏覽器中訪問 http://localhost:8080。Node.js 服務應該會啟動並執行。
在您的前端頁面中,您應該會看到狀態變成綠色並顯示「Connected to node server」。
疑難排解¶
如果您在設定過程中遇到任何問題,請參閱文件中的疑難排解章節,或查看您的 Kubernetes pod 的日誌以獲取更多詳細資訊。
疑難排解
要查看日誌,請使用以下指令
kubectl logs <pod-name>
將 <pod-name>
替換為您要檢查的 pod 的名稱。
下一步¶
您已成功設定安裝了 Knative 的叢集,並執行了您的前端應用程式和 Node 伺服器。您已準備好開始學習。您的旅程從這裡開始。