環境設定¶
このページでは、環境の設定方法と、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
ポートフォワーディングが確立されている間は、ターミナルを閉じないでください。次のコマンドを実行するには、新しいターミナルを開始します。
検証
ブラウザでhttp://localhost:8080にアクセスします。Node.jsサービスが稼働しているはずです。
フロントエンドページでは、ステータスが緑色になり、「Nodeサーバーに接続済み」と表示されるはずです。
トラブルシューティング¶
セットアップ中に問題が発生した場合は、ドキュメントのトラブルシューティングセクションを参照するか、詳細についてはKubernetesポッドのログを確認してください。
トラブルシューティング
ログを確認するには、次のコマンドを使用します。
kubectl logs <pod-name>
<pod-name>
を、確認するポッドの名前に置き換えます。
次のステップ¶
Knativeがインストールされ、フロントエンドアプリとノードサーバーが実行されているクラスタを正常に設定しました。学習を開始する準備ができました。ここからあなたの旅が始まります。