Hello World Helidon
この例は、起動されると、"Hello World"レスポンスを返すHelidonベースのサービスです。アプリケーション構成では、デフォルトのマイクロプロファイル・プロパティ・ファイルが使用されます。
始める前に
インストールの手順に従って、Verrazzanoをインストールします。
ノート: Hello World Helidonサンプル・アプリケーションのデプロイメント・ファイルは、<VERRAZZANO_HOME>/examples/hello-helidon
にあるVerrazzanoプロジェクトに含まれています(<VERRAZZANO_HOME>
はVerrazzanoプロジェクトのルートです)。
Hello World Helidonアプリケーションのデプロイ
ノート
このアプリケーションをデフォルトのネームスペースで実行するには:
$ kubectl label namespace default verrazzano-managed=true istio-injection=enabled
デフォルトのネームスペースを選択した場合は、ステップ1をスキップして、残りのコマンドの-n
オプションを無視できます。
-
デフォルトのネームスペース以外のネームスペースでアプリケーションを実行するには、アプリケーション用のネームスペースを作成し、Verrazzanoによって管理されるネームスペースを識別するラベルを追加します。
$ kubectl create namespace hello-helidon $ kubectl label namespace hello-helidon verrazzano-managed=true istio-injection=enabled
-
アプリケーションをデプロイするには、
hello-helidon
OAMリソースを適用します。$ kubectl apply -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/hello-helidon/hello-helidon-comp.yaml -n hello-helidon $ kubectl apply -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/hello-helidon/hello-helidon-app.yaml -n hello-helidon
-
アプリケーションの準備ができるまで待ちます。
$ kubectl wait \ --for=condition=Ready pods \ --all \ -n hello-helidon \ --timeout=300s
アプリケーションの探索
Hello World Helidonマイクロサービス・アプリケーションは、REST APIエンドポイント/greet
を実装し、起動されると、メッセージ{"message":"Hello World!"}
を返します。
ノート: 次の手順では、OKEなどのKubernetes環境を使用していることを前提としています。その他の環境やデプロイメントでは、アドレス、ポートなどを取得するための代替メカニズムが必要になる場合があります。
次のステップに従い、エンドポイントをテストします
-
アプリケーション用に生成されたホスト名を取得します。
$ HOST=$(kubectl get gateways.networking.istio.io hello-helidon-hello-helidon-gw \ -n hello-helidon \ -o jsonpath='{.spec.servers[0].hosts[0]}') $ echo $HOST # Sample output hello-helidon-appconf.hello-helidon.11.22.33.44.nip.io
-
istio-ingressgateway
サービスのEXTERNAL_IP
アドレスを取得します。$ ADDRESS=$(kubectl get service \ -n istio-system istio-ingressgateway \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}') $ echo $ADDRESS # Sample output 11.22.33.44
-
アプリケーションにアクセスします。
-
コマンドラインの使用
$ curl -sk \ -X GET \ https://${HOST}/greet \ --resolve ${HOST}:443:${ADDRESS} # Expected response output {"message":"Hello World!"}
nip.io
を使用している場合は、--resolve
を含める必要はありません。 -
ブラウザによるローカル・テスト
一時的に、
/etc/hosts
ファイル(MacまたはLinuxの場合)またはc:\Windows\System32\Drivers\etc\hosts
ファイル(Windows 10の場合)を変更して、ホスト名をイングレス・ゲートウェイのEXTERNAL-IP
アドレスにマップするエントリを追加します。たとえば:11.22.33.44 hello-helidon.example.com
その後、ブラウザで
https://<host>/greet
からアプリケーションにアクセスできます。nip.io
を使用している場合は、HOST
変数(https://${HOST}/greet
など)を使用してブラウザでアプリケーションにアクセスできます。- プロキシを使用する場合は、
*.nip.io
をNO_PROXY
リストに追加する必要がある場合があります。
-
独自のDNS名の使用
独自のDNS名をイングレス・ゲートウェイの
EXTERNAL-IP
アドレスにポイントします。- この場合、
hello-helidon
アプリケーションをデプロイする前に、hello-helidon-app.yaml
ファイルを編集してhosts
セクション(yourhost.your.domain
など)に適切な値を使用する必要があります。 - その後、ブラウザを使用して
https://<yourhost.your.doman>/greet
でアプリケーションにアクセスできます。
- この場合、
-
-
デプロイされたアプリケーションに関連付けられた様々なエンドポイントを使用して、ログやメトリックなどをさらに探索できます。ここの指示に従ってアクセスできます。
トラブルシューティング
-
アプリケーション構成、ドメインおよびイングレス・トレイトがすべて存在することを確認します。
$ kubectl get ApplicationConfiguration -n hello-helidon $ kubectl get IngressTrait -n hello-helidon
-
hello-helidon
サービス・ポッドが正常に作成され、READY
状態に移行されていることを確認します。これには数分かかる場合があり、一部のサービスが終了して再起動する場合があります。$ kubectl get pods -n hello-helidon # Sample output NAME READY STATUS RESTARTS AGE hello-helidon-workload-676d97c7d4-wkrj2 2/2 Running 0 5m39s
アプリケーションのアンデプロイ
-
アプリケーションをアンデプロイするには、Hello World Helidon OAMリソースを削除します。
$ kubectl delete -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/hello-helidon/hello-helidon-app.yaml -n hello-helidon $ kubectl delete -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.6.11/examples/hello-helidon/hello-helidon-comp.yaml -n hello-helidon
-
アプリケーション・ポッドの終了後にネームスペース
hello-helidon
を削除します。$ kubectl delete namespace hello-helidon