クラウド・シェルを使用したKubernetes: Python Flaskアプリケーションのデプロイ

このチュートリアルでは、Oracle Cloud Infrastructureアカウントを使用してKubernetesクラスタを設定します。次に、Flaskフレームワークを使用してPythonアプリケーションを作成します。最後に、クラウド・シェルを使用して、アプリケーションをクラスタにデプロイします。

主なタスクは:

  • コンパートメントを作成します。
  • OCIでKubernetesクラスタを設定します。
  • FlaskフレームワークでPythonアプリケーションを構築します。
  • Dockerイメージを作成します。
  • イメージをOCIコンテナ・レジストリにプッシュします。
  • クラウド・シェルを使用して、Dockerアプリケーションをクラスタにデプロイします。
  • インターネットからアプリケーションに接続します。
クラウド・シェルを使用してOracle Cloud Infrastructure Kubernetes EngineでFlaskフレームワークのPythonアプリケーションを実行するために必要なコンポーネントのダイアグラム。

その他の情報については、次のWebサイトを参照してください。

開始する前に

このチュートリアルを正常に実行するには、次が必要です:

要件
  • 有料Oracle Cloud Infrastructureアカウント。Oracle Cloud Infrastructureへのサインアップを参照してください。
  • クラウド・シェルにより、次のアプリケーションが提供されます:
    • JDK 8以上
    • Python 3.6.8以上
    • Kubectl 1.18.10以上
    • Apache Maven 3.5以上
    • Docker 19.0.11以上
ノート

クラウド・シェルを使用する利点は、アプリケーションの管理に必要なすべてのツールがすでにインストールされており、使用する準備ができていることです。

1. 準備

アプリケーションを作成およびデプロイするための環境を準備します。

サービス制限の確認
  1. Oracle Cloud Infrastructure Consoleにログインします。
  2. ナビゲーション・メニューを開き、「ガバナンスと管理」をクリックします。「Governance」で、「Limits、 Quotas and Usage」をクリックします。
  3. リージョンのサービス制限を検索します:
    • 次のオプションでフィルタします:
      • サービス:リージョン
      • スコープ:テナント
      • リソース:サブスクライブ済リージョン数
      • コンパートメント: <tenancy-name> (ルート)
    • サービス制限を検索します:
      • 制限名: subscribed-region-count
      • サービス制限: 最小2
  4. Find your available Compute core count for the VM.Standard.E3.Flex shape:
    • 次のオプションでフィルタします:
      • サービス:コンピュート
      • スコープ: <first-availability-domain>。例: EMlr:US-ASHBURN-AD-1
      • リソース: Standard.E3のコア。FlexおよびBM.Standard.E3.128インスタンス
      • コンパートメント: <tenancy-name> (ルート)
    • 使用可能なコア数を確認します:
      • 制限名: standard-e3-core-ad-count
      • 使用可能: 最小1
    • スコープを繰り返します: <second-availability-domain>および<third-availability-domain>。各リージョンには、このシェイプで使用可能なコアが少なくとも1つ必要です。
  5. 使用可能な50 GBブロック・ボリュームがあるかどうかを確認します:
    • 次のオプションでフィルタします:
      • サービス:ブロック・ボリューム
      • スコープ: <first-availability-domain>。例: EMlr:US-ASHBURN-AD-1
      • リソースボリューム・サイズ(GB)
      • コンパートメント: <tenancy-name> (ルート)
    • 使用可能なコア数を確認します:
      • 制限名: total-storage-gb
      • 使用可能: 最小50
    • スコープを繰り返します: <second-availability-domain>および<third-availability-domain>。各リージョンでは、少なくとも50GBのブロック・ボリュームが使用可能である必要があります。
  6. 使用可能なフレキシブル・ロード・バランサの数を確認します:
    • 次のオプションでフィルタします:
      • サービス: LbaaS
      • スコープ: <your-region>。例: us-ashburn-1
      • リソース: <blank>
      • コンパートメント: <tenancy-name> (ルート)
    • 次のシェイプの数を確認します
      • 制限名: lb-flexible-bandwidth-count
      • 使用可能: 最小1
ノート

このチュートリアルでは、クラスタ・ノードのVM.Standard.E2.1シェイプを使用して3つのコンピュート・インスタンスを作成します。別のシェイプを使用するには、そのコア数でフィルタします。たとえば、VM.Standard2.4の場合、Standard2ベースのVMおよびBMインスタンス用コアでフィルタし、数を取得します

すべてのシェイプのリストは、VM標準シェイプを参照してください。

ノート

このチュートリアルでは、3つのコンピュート・インスタンスをVM.Standard.E3で作成します。クラスタ・ノードのフレックス・シェイプ。別のシェイプを使用するには、そのコア数でフィルタします。たとえば、VM.Standard2.4の場合、Standard2ベースのVMおよびBMインスタンス用コアでフィルタし、数を取得します

すべてのシェイプのリストは、VM標準シェイプを参照してください。

ノート

このチュートリアルでは、「クイック作成」ワークフローを使用して、柔軟なロード・バランサをホストするパブリック・リージョン・サブネットを持つクラスタを作成します。別のロード・バランサを使用するには、カスタム・ワークフローを使用して、使用する既存のネットワーク・リソースを明示的に指定できます(ロード・バランサを作成する既存のサブネットを含む)。

ロード・バランサに別の帯域幅を使用するには、その(100Mbps帯域幅400Mbps帯域幅など)でフィルタします。

認可トークンの作成
  1. ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、表示されるオプションに応じて、「ユーザー設定」または「自分のプロファイル」を選択します
  2. 「認証トークン」をクリックします。
  3. 「トークンの生成」をクリックします。
  4. 説明を入力します。
  5. 「トークンの生成」をクリックします。
  6. トークンをコピーして保存します。
  7. 閉じる」をクリックします。
ノート

トークンは、作成した直後に保存してください。後でアクセスすることはできません。
必要な情報の収集
  1. Oracle Cloud Infrastructure Consoleから次の資格証明情報を収集します。
    • テナント名: <tenancy-name>
      • ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、「テナンシ: <your_tenancy_name>を選択します。
    • テナント・ネームスペース: <tenancy-namespace>
      • ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、「テナンシ: <your_tenancy_name>を選択します。
      • 「オブジェクト・ストレージ・ネームスペース」の値をコピーします。
      ノート

      一部のアカウントでは、テナンシ名とネームスペースが異なります。このチュートリアルでは必ずネームスペースを使用してください。
    • テナントOCID: <tenancy-ocid>
      • ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、表示されるオプションに応じて「ユーザー設定」または「自分のプロファイル」を選択します
      • OCIDのコピー。
    • ユーザー名: <user-name>
      • ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、表示されるオプションに応じて「ユーザー設定」または「自分のプロファイル」を選択します
    • ユーザーOCID: <user-ocid>
      • ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、表示されるオプションに応じて「ユーザー設定」または「自分のプロファイル」を選択します
      • OCIDのコピー。
  2. リージョン情報を検索します。
    • リージョン: <region-identifier>
      • コンソールの上部のナビゲーション・バーで、リージョンを検索します。例: 米国東部(アッシュバーン)
      • リージョンおよび可用性ドメインの表からリージョン識別子を見つけます。
      • 例: us-ashburn-1
    • リージョン・キー: <region-key>
  3. 「認証トークンの作成」セクションから認証トークンをコピーします。
    • 認証トークン: <auth-token>

2. クラスタの設定

Kubernetesクラスタの管理オプションをインストールおよび構成します。後で、アプリケーションをこのクラスタにデプロイします。

コンパートメント・ポリシーの追加

ユーザー名が管理者グループ内にある場合は、この項をスキップしてください。それ以外の場合は、管理者に依頼してテナンシに次のポリシーを追加します:

allow group <the-group-your-username-belongs> to manage compartments in tenancy

この権限を持つユーザーは、チュートリアルのすべてのリソースのコンパートメントを作成できます。

ポリシーを追加するステップ
  1. ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、表示されるオプションに応じて「ユーザー設定」または「自分のプロファイル」を選択します
  2. 左ペインで、「グループ」をクリックします。
  3. メモ帳で、ユーザー名が属するグループ名をコピーします。
  4. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。
  5. ポリシーの作成をクリックします。
  6. 次の情報を入力します:
    • 名前: manage-compartments
    • 説明: Allow the group <the-group-your-username-belongs> to list, create, update, delete and recover compartments in the tenancy.
    • コンパートメント: <your-tenancy>(root)
  7. 「Policy Builder」で、「Show manual editor」をクリックします。
  8. 次のポリシーを貼り付けます:
    allow group <the-group-your-username-belongs> to manage compartments in tenancy
  9. 作成」をクリックします。

参照先

IAMの動詞とリソース・タイプの組合せcompartmentsリソース・タイプ

コンパートメントの作成

このチュートリアルで作成するリソースのコンパートメントを作成します。

  1. Oracle Cloud Infrastructure Consoleにログインします。
  2. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。
  3. 「コンパートメントの作成」をクリックします。
  4. 次の情報を入力します:
    • 名前: <your-compartment-name>
    • 説明: Compartment for <your-description>.
    • 親コンパートメント: <your-tenancy>(root)
  5. 「コンパートメントの作成」をクリックします。

参照: コンパートメントの作成

リソース・ポリシーの追加

ユーザー名が管理者グループ内にある場合は、この項をスキップしてください。それ以外の場合は、管理者に依頼してテナンシに次のポリシーを追加します:

allow group <the-group-your-username-belongs> to manage all-resources in compartment <your-compartment-name>

この権限を使用すると、コンパートメント内のすべてのリソースを管理でき、基本的にそのコンパートメントでの管理権限が付与されます。

ポリシーを追加するステップ
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。
  2. 「コンパートメント」リストからコンパートメントを選択します。
  3. ポリシーの作成をクリックします。
  4. 次の情報を入力します:
    • 名前: manage-<your-compartment-name>-resources
    • 説明: Allow users to list, create, update, and delete resources in <your-compartment-name>.
    • コンパートメント: <your-tenancy>(root)
  5. 「ポリシー・ビルダー」で、次の選択肢を選択します:
    • ポリシーのユースケース: Compartment Management
    • 共通ポリシー・テンプレート: Let compartment admins manage the compartment
    • グループ: <the-group-your-username-belongs>
    • 場所: <your-tenancy>(root)
  6. 作成」をクリックします。

参照先

共通ポリシー

クイック作成を使用したクラスタの作成

「クイック作成」ワークフローを使用して、デフォルト設定および新しいネットワーク・リソースでクラスタを作成します。

  1. Oracle Cloud Infrastructure Consoleにサインインします。
  2. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナとアーティファクト」で、「Kubernetesクラスタ(OKE)」をクリックします。
  3. 「クラスタの作成」をクリックします。
  4. 「クイック作成」を選択します。
  5. 「ワークフローの起動」をクリックします。

    「クイック作成クラスタ」ダイアログが表示されます。

  6. 次の情報を入力します。
    • 名前: <your-cluster-name>
    • コンパートメント: <your-compartment-name>
    • Kubernetesバージョン: <take-default>
    • Kubernetes APIエンドポイント:パブリック・エンドポイント

      Kubernetesクラスタは、パブリックIPアドレスが自動的に割り当てられたパブリック・サブネットでホストされます。

    • Kubernetesワーカー・ノード:プライベート・ワーカー

      Kubernetesワーカー・ノードは、プライベート・サブネットでホストされます。

    • シェイプ: VM.Standard.E3.Flex
    • OCPU数の選択: 1
    • メモリー量(GB): 16
    • ノード数: 3
    • ネットワーク帯域幅: 1.0 (この値はOCPU数によって計算されます)。
    • 最大合計VNIC数: 2 (この値はOCPU数で計算されます。)
  7. 「拡張オプションの表示」をクリックします。

    デフォルトのままにします。

    • カスタム・ブート・ボリューム・サイズを指定します:チェック・ボックスのクリア。
    • イメージ検証:チェックボックスをクリアします。
    • SSHキーの追加: SSHキーなし
  8. 次へ」をクリックします。

    すべての選択内容が表示されます。これらを調べて、すべてが正しく構成されていることを確認します。

  9. 「クラスタの作成」をクリックします。

    クラスタに設定されているサービスが表示されます。

  10. 閉じる」をクリックします。
  11. 少々お待ちください。クラスタの作成には数分かかります。
Kubernetesクラスタが正常に作成されました。
クラスタにアクセスするためのクラウド・シェルの構成

Kubernetesクラスタを作成したら、クラスタにアクセスするようにクラウド・シェルを設定します。

  1. Oracle Cloud Infrastructure Consoleにサインインします。
  2. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナとアーティファクト」で、「Kubernetesクラスタ(OKE)」をクリックします。
  3. <your-cluster>へのリンクをクリックします。

    クラスタに関する情報が表示されます。

  4. 「クラスタへのアクセス」をクリックします。
  5. 「クラウド・シェルのアクセス」をクリックします。ダイアログのステップに従います。参照用に次のステップを示します。
  6. 「クラウド・シェルの起動」をクリックします。または、メイン・メニューから、「クラウド・シェル」アイコン(cloud-shell-icon)をクリックし、セッションを開始します。
  7. oci CLIバージョンを確認し、クラウド・シェルが動作していることを確認します。
    oci -v
  8. 設定用のkubeconfigファイルを作成します。「自分のクラスタへのアクセス」ダイアログの情報を使用します。
    oci ce cluster create-kubeconfig <use data from dialog>
    次のメッセージが表示されます:
    New config written to the Kubeconfig file <your-home-directory>/.kube/config
    ノート

    configファイルがデフォルトの場所(~/.kube/config)に格納されていない場合は、その場所を指すようにKUBECONFIG環境変数をエクスポートする必要があります。
    export KUBECONFIG=$HOME/<new-location>/config
    ノート

    複数のクラスタを操作する場合は、コマンドラインで特定の構成ファイルを指定します。例:
    kubectl --kubeconfig=</path/to/config/file> <some-command>
  9. 次のコマンドを使用してクラスタ構成をテストします。

    クラスタをリストします:

    kubectl get service

クラスタ・アクセスが設定されると、アプリケーションをデプロイする準備が整います。

3. Dockerアプリケーションの構築

次に、クラウド・シェルでFlaskフレームワークを設定します。次に、Pythonアプリケーションを作成して実行します。

ローカル・アプリケーションの作成

Flaskアプリケーションを作成します。

  1. Flaskをインストールします。
    pip3 install --user Flask
  2. アプリケーションのディレクトリを作成します。
    mkdir python-hello-app
  3. python-hello-appディレクトリに移動します。
    cd python-hello-app
  4. 「Hello, World!」アプリケーションを作成します。

    ファイルを作成します:

    vi hello.py

    ファイルに次のテキストを入力します:

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return '<h1>Hello World from Flask!</h1>'
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=int("5000"), debug=True)
  5. ファイルを保存します。
ローカル・アプリケーションの実行

Flaskアプリケーションを実行します。

  1. Pythonプログラムを実行します。
    export FLASK_APP=hello.py
    export FLASK_ENV=development
    python3 hello.py

    生成される出力は次のとおりです:

    * Serving Flask app 'hello' (lazy loading)
    * Environment: development
    * Debug mode: on
    * Running on all addresses.
    WARNING: This is a development server. Do not use it in a production deployment.
    * Running on http://x.x.x.x:5000/ (Press CTRL+C to quit)
    * Restarting with stat
    * Debugger is active!
    * Debugger PIN: xxx-xxx-xxx                    
  2. アプリケーションをバックグラウンドに移動します。
    • [Ctrl]+[z]を押します。
    • 次のコマンドを入力します: bg
  3. curlを使用してアプリケーションをテストします。
    クラウド・シェル・ターミナルで、次のコードを入力します:
    curl -X GET http://localhost:5000

    出力:

    <h1>Hello World from Flask!</h1>
  4. 実行中のアプリケーションを停止します。
    • テストが完了したら、アプリケーションのプロセスIDを取得します。
      ps -ef
    • プロセスを停止します。
      kill <your-pid>

Flaskフレームワークを使用してローカルPythonアプリケーションが正常に作成されました。

参照:

Flaskの詳細は、Flaskのドキュメントを参照してください。

Dockerイメージの構築

次に、FlaskアプリケーションのDockerイメージを作成します。

  1. 最初に、python-hello-appディレクトリにいることを確認します。
  2. Dockerfileというファイルを作成します:

    ファイルを作成します:

    vi Dockerfile

    ファイルに次のテキストを入力し、ファイルを保存します:

    FROM python:3.9-slim-buster
    ADD hello.py /
    COPY . /app
    WORKDIR /app
    RUN pip3 install Flask
    EXPOSE 5000
    CMD [ "python3", "./hello.py" ]
  3. Dockerイメージを構築します:
    docker build -t python-hello-app .

    成功メッセージが表示されます。

    [INFO] BUILD SUCCESS
    Successfully tagged python-hello-app:latest
  4. Dockerイメージを実行します:
    docker run --rm -p 5000:5000 python-hello-app:latest &
  5. curlコマンドを使用してアプリケーションをテストします:
    curl -X GET http://localhost:5000
    <h1>Hello World from Flask!</h1>が表示されている場合は、Dockerイメージが実行されています。これで、イメージをコンテナ・レジストリにプッシュできます。
  6. 実行中のアプリケーションを停止します。
    • テストが完了したら、アプリケーションのプロセスIDを取得します。
      ps -ef
    • プロセスを停止します。
      kill <your-pid>
完了しました。Python Flask Dockerイメージが正常に作成されました。

4. Dockerイメージのデプロイ

Pythonイメージを作成したら、これをデプロイできます。

Dockerリポジトリの作成
  1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「Containers & Artifacts」で、「Container Registry」をクリックします。
  2. 左側のナビゲーションで、<your-compartment-name>を選択します。
  3. 「リポジトリの作成」をクリックします。
  4. 任意のリポジトリ名でプライベート・リポジトリを作成します:
    <repo-name> = <image-path-name>/<image-name>

    例: flask-apps/python-hello-app

    これで、ローカル・イメージをコンテナ・レジストリにプッシュする準備ができました。
    ノート

    Dockerイメージをレジストリ・リポジトリにプッシュする前に、リポジトリがコンパートメントに存在する必要があります。リポジトリが存在しない場合、Dockerのpushコマンドは正しく機能しません。
    ノート

    リポジトリ名のスラッシュは、階層ディレクトリ構造を表していません。オプションの<image-path-name>は、リポジトリの編成に役立ちます。
ローカル・イメージのプッシュ

ローカルDockerイメージを作成したら、イメージをコンテナ・レジストリにプッシュします。

次のステップに従います。

  1. ターミナル・ウィンドウを開きます。
  2. コンテナ・レジストリにログインします。
    docker login <region-key>.ocir.io

    ログイン名とパスワードの入力を求められます。

    • ユーザー名: <tenancy-namespace>/<user-name>
    • パスワード: <auth-token>
  3. ローカルDockerイメージをリストします:
    docker images

    システム上のDockerイメージが表示されます。最後の項で作成したイメージpython-hello-appを特定します

  4. ローカル・イメージにレジストリのURLリポジトリ名タグ付けして、そのリポジトリにプッシュできるようにします。
    docker tag <your-local-image> <repo-url>/<repo-name>
    • <repo-url>を次のように置き換えます:
      <region-key>.ocir.io/<tenancy-namespace>/
    • <repo-name>を次のように置き換えます:

      Dockerリポジトリの作成の項の<image-folder-name>/<image-name>

    • 両方を組み合せた後の例を次に示します:
      docker tag python-hello-app iad.ocir.io/my-namespace/flask-apps/python-hello-app

      この例では、コンポーネントは:

      • リポジトリURL: iad.ocir.io/my-namespace/
      • リポジトリ名: flask-apps/python-hello-app
    ノート

    OCIコンテナ・レジストリでは、ルート・コンパートメント(テナンシ)のみでなく、任意のコンパートメントでのレジストリ・リポジトリの作成がサポートされるようになりました。作成したリポジトリにイメージをプッシュするには、レジストリURLを正確なリポジトリ名と組み合せます。OCIコンテナ・レジストリは、一意のリポジトリ名を照合し、イメージをプッシュします。
  5. Dockerイメージをチェックして、イメージがコピーされているかどうかを確認します。
    docker images
    • タグ付けされた画像またはコピーされた画像は、あなたのローカル画像と同じ画像IDを持っています。
    • コピーされたイメージ名は:
      <region-key>.ocir.io/<tenancy-namespace>/<image-folder-name>/<image-name>
  6. イメージをコンテナ・レジストリにプッシュします。
    docker push <copied-image-name>:latest
    例:
    docker push iad.ocir.io/my-namespace/flask-apps/python-hello-app:latest
  7. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「Containers & Artifacts」で、「Container Registry」をクリックします。

pushコマンドが完了したら、コンテナ・レジストリでイメージを探します。

イメージのデプロイ
コンテナ・レジストリのイメージを使用して、イメージおよびアプリケーションをデプロイできるようになりました。
  1. アプリケーションのレジストリ・シークレットを作成します。このシークレットは、クラスタにデプロイするときにイメージを認証します。

    シークレットを作成するには、このテンプレートの情報を入力します。

    kubectl create secret docker-registry ocirsecret --docker-server=<region-key>.ocir.io  --docker-username='<tenancy-namespace>/<user-name>' --docker-password='<auth-token>'  --docker-email='<email-address>'

    コマンドを実行すると、secret/ocirsecret createdのようなメッセージが表示されます。

  2. シークレットが作成されたことを確認します。次のコマンドを発行します:
    kubectl get secret ocirsecret --output=yaml

    出力には、シークレットに関する情報がyamlフォーマットで含まれています。

  3. 次のテンプレートを使用して、レジストリ・イメージへのホストURLを決定します:
    <region-code>.ocir.io/<tenancy-namespace>/<repo-name>/<image-name>:<tag>
    例:
    iad.ocir.io/my-namespace/flask-apps/python-hello-app:latest
  4. システムで、次のテキストを使用してapp.yamlというファイルを作成します:
    次のプレースホルダを置き換えます:
    • <your-image-url>
    • <your-secret-name>
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: app
    spec:
      selector:
        matchLabels:
          app: app
      replicas: 3
      template:
        metadata:
          labels:
            app: app
        spec:
          containers:
          - name: app
            image: <your-image-url>
            imagePullPolicy: Always
            ports:
            - name: app
              containerPort: 5000
              protocol: TCP
          imagePullSecrets:
            - name: <your-secret-name>
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: app-lb
      labels:
        app: app
      annotations:
        service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "100"
    spec:
      type: LoadBalancer
      ports:
      - port: 5000
      selector:
        app: app
  5. 次のコマンドを使用してアプリケーションをデプロイします。
    kubectl create -f app.yaml
    出力:
    deployment.apps/app created
    ノート

    app.yamlファイルでは、ダッシュの後のコードによって柔軟なロード・バランサが追加されます。
アプリケーションのテスト
アプリケーションをデプロイした後、ロード・バランサのロードに数秒かかる場合があります。
  1. ロード・バランサが稼働中かどうかを確認します:
    kubectl get service

    ロード・バランサにIPアドレスが割り当てられるまで、このコマンドを繰り返します。

    ノート

    ロード・バランサのデプロイを待機中に、次のコマンドを使用してクラスタのステータスを確認できます:
    • 各ポッド・ステータスの取得: kubectl get pods
    • アプリケーション・ステータスの取得: kubectl get deployment
  2. ロード・バランサのIPアドレスを使用して、ブラウザでアプリケーションに接続します:
    http://<load-balancer-IP-address>:5000

    ブラウザに<h1>Hello World from Flask!</h1>が表示されます

  3. クラスタからアプリケーションをアンデプロイします。(オプション)アプリケーションを削除するには、次のコマンドを実行します:
    kubectl delete -f app.yaml
    出力:
    deployment.apps/python-hello-app deleted
    service "python-hello-app-lb" deleted

    これで、アプリケーションがクラスタから削除されます。

次の手順

Hello World Pythonアプリケーションが正常に作成され、Kubernetesクラスタにデプロイされ、Flaskフレームワークを使用してインターネット上でアクセスできるようになりました。

次のサイトをチェックして、Oracle製品を使用した開発に関する詳細情報を確認してください: