環境設定¶

このページでは、環境の設定方法と、UIフロントエンドとBook Review Serviceのノードサーバーの起動方法について説明します。
このセクションの最終成果物とは?¶
- ローカルマシン上にKnativeがインストールされたKubernetes(k8s)クラスタが稼働しています。
- フロントエンドアプリケーションがポートフォワーディングを使用してlocalhost:3000にKubernetesデプロイメントとしてデプロイされています。
- Node.jsアプリケーションがポートフォワーディングを使用してlocalhost:8080にKubernetesデプロイメントとしてデプロイされています。
上記の順序で各要件を満たしていきます。
リポジトリのクローン作成¶

git clone https://github.com/knative/docs.git
トラブルシューティング
リポジトリのクローン作成で問題が発生した場合、ヘルプについてはこちらを参照してください。
警告
重要:次のページに進む前に、免責事項をよくお読みください。
ファイル構造¶

サンプルアプリのコードは、docs/code-samples/eventing/bookstore-sample-appにあります。
bookstore-sample-appフォルダには、2つのフォルダがあります。
-
/solution:このフォルダには、必要なすべてのyamlファイルとコードが含まれています。行き詰まった場合は、ここを確認してください。
-
/start:このフォルダには、開始に必要なファイルが含まれています。チュートリアルに従って、すべての設定ファイルをここに保存してください!

ヒント
Kuackは、/startから始めて、チュートリアルを進めながらすべての設定ファイルを作成し、行き詰まった場合はソリューションを確認することをお勧めします。

コマンドを実行する前に、常にルートディレクトリである/startに戻ってください。
チュートリアル内のすべてのコマンドは、/startディレクトリにいることを前提として記述されています。
ショートカット¶

docs/code-samples/eventing/bookstore-sample-app/start/setup.shを実行すると、このセクションのすべてのタスクが自動的に完了します。
警告
ただし、プロセスに慣れていない場合は、以下の手順を確認することをお勧めします。
手順¶
タスク1:KnativeがインストールされたKubernetesクラスタのセットアップ¶

ヒント
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ユーザー向け追加手順:¶

注意!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
これにより、デプロイメントが作成され、外部トラフィックを受信するための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
ポートフォワーディング(条件付きオプション)¶

ローカルマシンからアプリにアクセスするには、ポートフォワーディングを設定する必要がある場合があります。
次のコマンドを実行して、ポートフォワーディングが必要かどうかを確認します。
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
このコマンドは、イメージをプルして、デプロイメントとしてクラスタにデプロイします。また、外部トラフィックを受信するための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
ポートフォワーディング(条件付きオプション)¶

ローカルマシンからアプリにアクセスするには、ポートフォワーディングを設定する必要がある場合があります。
次のコマンドを実行して、ポートフォワーディングが必要かどうかを確認します。
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
ポートフォワーディングが確立されている間は、ターミナルを閉じないでください。次のコマンドを実行するには、新しいターミナルを開始します。
検証
ブラウザでhttps://:8080にアクセスします。Node.jsサービスが稼働しているはずです。
フロントエンドページでは、ステータスが緑色になり、「Nodeサーバーに接続済み」と表示されるはずです。

トラブルシューティング¶
セットアップ中に問題が発生した場合は、ドキュメントのトラブルシューティングセクションを参照するか、詳細についてはKubernetesポッドのログを確認してください。
トラブルシューティング
ログを確認するには、次のコマンドを使用します。
kubectl logs <pod-name>
<pod-name>を、確認するポッドの名前に置き換えます。
次のステップ¶

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