コンテンツへスキップ

環境設定

Image

このページでは、環境の設定方法と、UIフロントエンドとBook Review Serviceのノードサーバーの起動方法について説明します。

このセクションの最終成果物とは?

  • ローカルマシン上にKnativeがインストールされたKubernetes(k8s)クラスタが稼働しています。
  • フロントエンドアプリケーションがポートフォワーディングを使用してlocalhost:3000にKubernetesデプロイメントとしてデプロイされています。
  • Node.jsアプリケーションがポートフォワーディングを使用してlocalhost:8080にKubernetesデプロイメントとしてデプロイされています。

上記の順序で各要件を満たしていきます。

リポジトリのクローン作成

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

コマンドを実行する前に、常にルートディレクトリである/startに戻ってください。

チュートリアル内のすべてのコマンドは、/startディレクトリにいることを前提として記述されています

ショートカット

Image

docs/code-samples/eventing/bookstore-sample-app/start/setup.shを実行すると、このセクションのすべてのタスクが自動的に完了します。

警告

ただし、プロセスに慣れていない場合は、以下の手順を確認することをお勧めします。

手順

タスク1:KnativeがインストールされたKubernetesクラスタのセットアップ

Image

ヒント

Knativeのインストールには、kn quickstartプラグインを使用することをお勧めします。

Knativeがインストールされたクラスタを起動するには、こちらの手順に従ってください。

検証

続行する前に、knative-eventingおよびknative-serving名前空間でポッドが実行されていることを確認してください。

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

これにより、デプロイメントが作成され、外部トラフィックを受信するためのLoadBalancerタイプのサービスで公開されます。

deployment.apps/bookstore-frontend created
service/bookstore-frontend-svc created
検証

次のコマンドを実行して、ポッドが実行されているかどうかを確認します。

kubectl get pods

フロントエンドポッドが実行されていることがわかります。

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

このコマンドは、イメージをプルして、デプロイメントとしてクラスタにデプロイします。また、外部トラフィックを受信するためのLoadBalancerとして公開します。

deployment.apps/node-server created
service/node-server-svc created
検証

次のコマンドを実行して、ポッドが実行されているかどうかを確認します。

kubectl get pods

Node.jsサーバー(node-server)ポッドが実行されていることがわかります。

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サービスが稼働しているはずです。

フロントエンドページでは、ステータスが緑色になり、「Nodeサーバーに接続済み」と表示されるはずです。

Image

トラブルシューティング

セットアップ中に問題が発生した場合は、ドキュメントのトラブルシューティングセクションを参照するか、詳細についてはKubernetesポッドのログを確認してください。

トラブルシューティング

ログを確認するには、次のコマンドを使用します。

kubectl logs <pod-name>

<pod-name>を、確認するポッドの名前に置き換えます。

次のステップ

Image

Knativeがインストールされ、フロントエンドアプリとノードサーバーが実行されているクラスタを正常に設定しました。学習を開始する準備ができました。ここからあなたの旅が始まります。

レッスン1 - レビューコメントをブローカーに送信するへ移動します。

サイトトラフィックを理解するために、アナリティクスとCookieを使用しています。その目的のために、お客様のサイト利用に関する情報はGoogleと共有されます。詳細はこちら。