Hello Config World Helidon

この例は、起動されると、"HelloConfig World"レスポンスを返すHelidonベースのサービスです。アプリケーション構成では、デフォルトのマイクロプロファイル・プロパティ・ファイルではなく、Kubernetes ConfigMapを使用します。

始める前に

インストールの手順に従って、Verrazzanoをインストールします。

ノート: Hello World Helidon構成サンプル・アプリケーションのデプロイメント・ファイルは、<VERRAZZANO_HOME>/examples/helidon-configにあるVerrazzanoプロジェクトに含まれています(<VERRAZZANO_HOME>はVerrazzanoプロジェクトのルートです)。

Hello Config World Helidonアプリケーションのデプロイ

  1. アプリケーションのネームスペースを作成し、ネームスペースがVerrazzanoによって管理されることを示すラベルを追加します。

    $ kubectl create namespace helidon-config
    $ kubectl label namespace helidon-config verrazzano-managed=true istio-injection=enabled
    
  2. アプリケーションをデプロイするには、helidon-config OAMリソースを適用します。

    $ kubectl apply -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/helidon-config/helidon-config-comp.yaml
    $ kubectl apply -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/helidon-config/helidon-config-app.yaml
    
  3. アプリケーションの準備ができるまで待ちます。

    $ kubectl wait \
       --for=condition=Ready pods \
       --all -n helidon-config \
       --timeout=300s
    

アプリケーションの探索

Hello World Helidon構成の例は、REST APIエンドポイント/configを実装し、起動されると、メッセージ{"message":"HelloConfig World!"}を返します。

ノート: 次の手順では、OKEなどのKubernetes環境を使用していることを前提としています。その他の環境やデプロイメントでは、アドレス、ポートなどを取得するための代替メカニズムが必要になる場合があります。

次のステップに従い、エンドポイントをテストします:

  1. アプリケーション用に生成されたホスト名を取得します。

    $ HOST=$(kubectl get gateway helidon-config-helidon-config-appconf-gw \
         -n helidon-config \
         -o jsonpath={.spec.servers[0].hosts[0]})
    $ echo $HOST
    helidon-config-appconf.helidon-config.11.22.33.44.nip.io
    
  2. 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
    
  3. アプリケーションにアクセスします:

    • コマンドラインの使用

      $ curl -sk \
         -X GET \
         https://${HOST}/config \
         --resolve ${HOST}:443:${ADDRESS}
      {"message":"HelloConfig World!"}
      

      nip.ioを使用している場合は、--resolveを含める必要はありません。

    • ブラウザによるローカル・テスト

      一時的に、/etc/hostsファイル(MacまたはLinuxの場合)またはc:\Windows\System32\Drivers\etc\hostsファイル(Windows 10の場合)を変更して、ホスト名をイングレス・ゲートウェイのEXTERNAL-IPアドレスにマップするエントリを追加します。例:

      11.22.33.44 helidon-config.example.com
      

      その後、ブラウザでhttps://<host>/configからアプリケーションにアクセスできます。

    • 独自のDNS名の使用

      • 独自のDNS名をイングレス・ゲートウェイのEXTERNAL-IPアドレスにポイントします。
      • この場合、helidon-configアプリケーションをデプロイする前に、helidon-config-app.yamlファイルを編集してhostsセクション(yourhost.your.domainなど)に適切な値を使用する必要があります。
      • その後、ブラウザを使用してhttps://<yourhost.your.domain>/configでアプリケーションにアクセスできます。
  4. デプロイされたアプリケーションに関連付けられた様々なエンドポイントを使用して、ログやメトリックなどをさらに探索できます。

    これらにアクセスする場合、次が必要になることがあります:

    • 次のコマンドを実行して、テレメトリ・コンポーネント用に生成されたパスワードを取得します:

      $ kubectl get secret \
         --namespace verrazzano-system verrazzano \
         -o jsonpath={.data.password} | base64 \
         --decode; echo
      

      関連付けられているユーザー名はverrazzanoです。

    • エンドポイントに関連付けられた証明書を受け入れる必要があります。

      次のコマンドを使用して、使用可能なイングレスのリストを取得できます:

      $ kubectl get ing -n verrazzano-system
      NAME                         CLASS    HOSTS                                                    ADDRESS          PORTS     AGE
      verrazzano-console-ingress   <none>   verrazzano.default.140.238.94.217.nip.io                 140.238.94.217   80, 443   7d2h
      vmi-system-api               <none>   api.vmi.system.default.140.238.94.217.nip.io             140.238.94.217   80, 443   7d2h
      vmi-system-es-ingest         <none>   elasticsearch.vmi.system.default.140.238.94.217.nip.io   140.238.94.217   80, 443   7d2h
      vmi-system-grafana           <none>   grafana.vmi.system.default.140.238.94.217.nip.io         140.238.94.217   80, 443   7d2h
      vmi-system-kibana            <none>   kibana.vmi.system.default.140.238.94.217.nip.io          140.238.94.217   80, 443   7d2h
      vmi-system-prometheus        <none>   prometheus.vmi.system.default.140.238.94.217.nip.io      140.238.94.217   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

トラブルシューティング

  1. アプリケーション構成、ドメインおよびイングレス・トレイトがすべて存在することを確認します。

    $ kubectl get ApplicationConfiguration -n helidon-config
    $ kubectl get IngressTrait -n helidon-config
    
  2. helidon-configサービス・ポッドが正常に作成され、READY状態に移行されていることを確認します。これには数分かかる場合があり、一部のサービスが終了して再起動する場合があります。

     $ kubectl get pods -n helidon-config
    
     NAME                                      READY   STATUS    RESTARTS   AGE
     helidon-config-deployment-676d97c7d4-wkrj2   3/3     Running   0          5m39s