Spring Boot
始める前に
インストールの手順に従って、Verrazzanoをインストールします。
ノート: Spring Bootサンプル・アプリケーションのデプロイメント・ファイルは、<VERRAZZANO_HOME>/examples/springboot-app
にあるVerrazzanoプロジェクトに含まれています(VERRAZZANO_HOME
は、Verrazzanoプロジェクトのルートです)。
Spring Bootアプリケーションのデプロイ
この例では、Spring Bootを使用して開発された単純なWebアプリケーションを示します。このアプリケーションの詳細およびソース・コードについては、Verrazzanoの例を参照してください。
-
Spring Bootアプリケーションのネームスペースを作成し、ネームスペースがVerrazzanoによって管理されることを示すラベルを追加します。
$ kubectl create namespace springboot $ kubectl label namespace springboot verrazzano-managed=true istio-injection=enabled
-
アプリケーションをデプロイするには、Spring Boot OAMリソースを適用します。
$ kubectl apply -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/springboot-app/springboot-comp.yaml $ kubectl apply -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/springboot-app/springboot-app.yaml
-
Spring Bootアプリケーションの準備が完了するのを待ちます。
$ kubectl wait \ --for=condition=Ready pods \ --all \ -n springboot \ --timeout=300s
アプリケーションの探索
-
アプリケーション用に生成されたホスト名を取得します。
$ HOST=$(kubectl get gateway \ -n springboot \ -o jsonpath={.items[0].spec.servers[0].hosts[0]}) $ echo $HOST springboot-appconf.springboot.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 11.22.33.44
-
アプリケーションにアクセスします:
-
コマンドラインの使用
$ curl -sk \ https://${HOST} \ --resolve ${HOST}:443:${ADDRESS} $ curl -sk \ https://${HOST}/facts \ --resolve ${HOST}:443:${ADDRESS}
nip.io
を使用している場合は、--resolve
を含める必要はありません。 -
ブラウザによるローカル・テスト
一時的に、
/etc/hosts
ファイル(MacまたはLinuxの場合)またはc:\Windows\System32\Drivers\etc\hosts
ファイル(Windows 10の場合)を変更して、ホスト名をイングレス・ゲートウェイのEXTERNAL-IP
アドレスにマップするエントリを追加します。例:11.22.33.44 springboot.example.com
その後、ブラウザで
https://springboot.example.com/
およびhttps://springboot.example.com/facts
からアプリケーションにアクセスできます。nip.io
を使用している場合は、HOST
変数(https://${HOST}/facts
など)を使用してブラウザでアプリケーションにアクセスできます。プロキシを使用する場合は、*.nip.io
をNO_PROXY
リストに追加する必要がある場合があります。 -
独自のDNS名の使用
-
独自のDNS名をイングレス・ゲートウェイの
EXTERNAL-IP
アドレスにポイントします。 -
この場合、Spring Bootアプリケーションをデプロイする前に、
springboot-app.yaml
ファイルを編集してhosts
セクション(yourhost.your.domain
など)で適切な値を使用する必要があります。 -
その後、ブラウザを使用して、
https://<yourhost.your.domain>/
およびhttps://<yourhost.your.domain>/facts
でアプリケーションにアクセスできます。アクチュエータ・エンドポイントはパス
/actuator
でアクセスでき、Prometheusサーバーによってスクレイプ可能な形式でメトリック・データを公開するPrometheusエンドポイントはパス/actuator/prometheus
でアクセスできます。
-
-
-
デプロイされたアプリケーションに関連付けられた様々なエンドポイントを使用して、ログやメトリックなどをさらに探索できます。
これらにアクセスする場合、次が必要になることがあります:
-
次のコマンドを実行して、テレメトリ・コンポーネント用に生成されたパスワードを取得します:
$ kubectl get secret \ --namespace verrazzano-system verrazzano \ -o jsonpath={.data.password} | base64 \ --decode; echo
関連付けられているユーザー名は
verrazzano
です。 -
エンドポイントに関連付けられた証明書を受け入れる必要があります。
次のコマンドを使用して、使用可能なイングレスのリストを取得できます:
$ kubectl get ingress -n verrazzano-system NAME CLASS HOSTS ADDRESS PORTS AGE verrazzano-ingress <none> verrazzano.default.140.141.142.143.nip.io 140.141.142.143 80, 443 7d2h vmi-system-es-ingest <none> elasticsearch.vmi.system.default.140.141.142.143.nip.io 140.141.142.143 80, 443 7d2h vmi-system-grafana <none> grafana.vmi.system.default.140.141.142.143.nip.io 140.141.142.143 80, 443 7d2h vmi-system-kibana <none> kibana.vmi.system.default.140.141.142.143.nip.io 140.141.142.143 80, 443 7d2h vmi-system-prometheus <none> prometheus.vmi.system.default.140.141.142.143.nip.io 140.141.142.143 80, 443 7d2h
イングレス・ホスト情報を使用すると、使用可能なエンドポイントの一部は次のようになります:
説明 アドレス 資格証明 Kibana https://[vmi-system-kibana ingress host]
verrazzano
/telemetry-password
Grafana https://[vmi-system-grafana ingress host]
verrazzano
/telemetry-password
Prometheus https://[vmi-system-prometheus ingress host]
verrazzano
/telemetry-password
-
アプリケーションのアンデプロイ
-
アプリケーションをアンデプロイするには、Spring Boot OAMリソースを削除します。
$ kubectl delete -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/springboot-app/springboot-app.yaml $ kubectl delete -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/springboot-app/springboot-comp.yaml
-
アプリケーション・ポッドの終了後にネームスペース
springboot
を削除します。$ kubectl delete namespace springboot