跳到內容

環境設定

Image

在本頁中,我們將討論如何設定您的環境,並確保啟動 UI 前端和 Book Review Service 的 Node 伺服器。

本節的最終交付成果是什麼?

  • 您在本地電腦上擁有一個正在執行的 Kubernetes (k8s) 叢集,並已安裝 Knative。
  • 您的前端應用程式已部署為 Kubernetes 部署,並透過連接埠轉發到 localhost:3000
  • 您的 Node.js 應用程式已部署為 Kubernetes 部署,並透過連接埠轉發到 localhost:8080

我們將按照以上順序滿足每個需求。

複製儲存庫

Next Step Image

git clone https://github.com/knative/docs.git
疑難排解

複製儲存庫時遇到問題?請查看這裡尋求協助。

警告

重要:請花一些時間閱讀免責聲明,然後再繼續下一頁。

檔案結構

Image

範例應用程式的程式碼位於 docs/code-samples/eventing/bookstore-sample-app

bookstore-sample-app 資料夾下,有 2 個資料夾

  • /solution:此資料夾包含所有 yaml 檔案和您需要的程式碼。當您遇到困難時,請查看此資料夾。

  • /start:此資料夾包含您入門所需的所有檔案。請按照教學課程的說明,將所有設定檔儲存在這裡!

Image

提示

Kuack 建議您從 /start 開始,在瀏覽教學課程時寫下所有設定檔,並在遇到困難時檢查解決方案。

Image

在執行任何命令之前,請務必 cd 返回根目錄,即 /start

教學課程中的所有命令都假設您位於 /start 目錄中

捷徑

Image

執行 docs/code-samples/eventing/bookstore-sample-app/start/setup.sh 將自動完成本節中的所有任務。

警告

但是,如果您不熟悉此流程,我們建議您查看以下步驟。

指示

任務 1:設定已安裝 Knative 的正在執行的 Kubernetes 叢集

Image

提示

我們建議您使用 kn quickstart 外掛程式來安裝 Knative。

請按照這裡的指示,啟動已安裝 Knative 的叢集!

驗證

您應該先看到 knative-eventingknative-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 使用者的額外步驟:

Image

注意!如果您沒有使用 Knative 快速入門,請手動設定通道以連接類型為 LoadBalancer 的服務

執行以下命令並保持終端開啟

minikube tunnel
驗證

如果沒有任何錯誤訊息,則表示您已成功設定通道。

任務 2:執行 Bookstore Web 應用程式

Image

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

連接埠轉發 (在條件下為選用)

Image

您可能需要設定連接埠轉發,才能從本機電腦存取應用程式。

執行以下命令來檢查是否需要連接埠轉發

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-IP127.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

建立連接埠轉發後,請勿關閉終端。 啟動新的終端來執行下一個命令。

驗證

在您的瀏覽器中造訪http://localhost:3000。UI 頁面應該會出現!

Image

任務 3:執行 Book Review Service

Image

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

連接埠轉發 (在特定條件下為選用)

Image

您可能需要設定連接埠轉發,才能從本機電腦存取應用程式。

執行以下命令來檢查是否需要連接埠轉發

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-IP127.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」。

Image

疑難排解

如果您在設定過程中遇到任何問題,請參閱文件中的疑難排解章節,或查看您的 Kubernetes pod 的日誌以獲取更多詳細資訊。

疑難排解

要查看日誌,請使用以下指令

kubectl logs <pod-name>

<pod-name> 替換為您要檢查的 pod 的名稱。

下一步

Image

您已成功設定安裝了 Knative 的叢集,並執行了您的前端應用程式和 Node 伺服器。您已準備好開始學習。您的旅程從這裡開始。

前往第 1 課 - 將評論發送到 Broker

我們使用分析和 Cookie 來了解網站流量。您使用我們網站的資訊會為了該目的而與 Google 分享。了解更多。