クラウド・シェルを使用したKubernetes: Python Flaskアプリケーションのデプロイ
このチュートリアルでは、Oracle Cloud Infrastructureアカウントを使用してKubernetesクラスタを設定します。次に、Flaskフレームワークを使用してPythonアプリケーションを作成します。最後に、クラウド・シェルを使用して、アプリケーションをクラスタにデプロイします。
主なタスクは:
- コンパートメントを作成します。
- OCIでKubernetesクラスタを設定します。
- FlaskフレームワークでPythonアプリケーションを構築します。
- Dockerイメージを作成します。
- イメージをOCIコンテナ・レジストリにプッシュします。
- クラウド・シェルを使用して、Dockerアプリケーションをクラスタにデプロイします。
- インターネットからアプリケーションに接続します。

その他の情報については、次の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. 準備
アプリケーションを作成およびデプロイするための環境を準備します。
- Oracle Cloud Infrastructure Consoleにログインします。
- ナビゲーション・メニューを開き、「ガバナンスと管理」をクリックします。「Governance」で、「Limits、 Quotas and Usage」をクリックします。
- リージョンのサービス制限を検索します:
- 次のオプションでフィルタします:
- サービス:リージョン
- スコープ:テナント
- リソース:サブスクライブ済リージョン数
- コンパートメント:
<tenancy-name>
(ルート)
- サービス制限を検索します:
- 制限名:
subscribed-region-count
- サービス制限: 最小2
- 制限名:
- 次のオプションでフィルタします:
- 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つ必要です。
- 次のオプションでフィルタします:
- 使用可能な50 GBのブロック・ボリュームがあるかどうかを確認します:
- 次のオプションでフィルタします:
- サービス:ブロック・ボリューム
- スコープ:
<first-availability-domain>
。例:EMlr:US-ASHBURN-AD-1
- リソースボリューム・サイズ(GB)
- コンパートメント:
<tenancy-name>
(ルート)
- 使用可能なコア数を確認します:
- 制限名:
total-storage-gb
- 使用可能: 最小50
- 制限名:
- スコープを繰り返します:
<second-availability-domain>
および<third-availability-domain>
。各リージョンでは、少なくとも50GBのブロック・ボリュームが使用可能である必要があります。
- 次のオプションでフィルタします:
- 使用可能なフレキシブル・ロード・バランサの数を確認します:
- 次のオプションでフィルタします:
- サービス: 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帯域幅など)でフィルタします。
-
ナビゲーション・メニューで、「プロファイル」メニュー
を選択し、表示されるオプションに応じて、「ユーザー設定」または「自分のプロファイル」を選択します。
- 「認証トークン」をクリックします。
- 「トークンの生成」をクリックします。
- 説明を入力します。
- 「トークンの生成」をクリックします。
- トークンをコピーして保存します。
- 「閉じる」をクリックします。
トークンは、作成した直後に保存してください。後でアクセスすることはできません。
2. クラスタの設定
Kubernetesクラスタの管理オプションをインストールおよび構成します。後で、アプリケーションをこのクラスタにデプロイします。
ユーザー名が管理者グループ内にある場合は、この項をスキップしてください。それ以外の場合は、管理者に依頼してテナンシに次のポリシーを追加します:
allow group <the-group-your-username-belongs> to manage compartments in tenancy
この権限を持つユーザーは、チュートリアルのすべてのリソースのコンパートメントを作成できます。
- ナビゲーション・メニューで、「プロファイル」メニュー
を選択し、表示されるオプションに応じて「ユーザー設定」または「自分のプロファイル」を選択します。
- 左ペインで、「グループ」をクリックします。
- メモ帳で、ユーザー名が属するグループ名をコピーします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。
- ポリシーの作成をクリックします。
- 次の情報を入力します:
- 名前:
manage-compartments
- 説明:
Allow the group <the-group-your-username-belongs> to list, create, update, delete and recover compartments in the tenancy.
- コンパートメント:
<your-tenancy>(root)
- 名前:
- 「Policy Builder」で、「Show manual editor」をクリックします。
- 次のポリシーを貼り付けます:
allow group <the-group-your-username-belongs> to manage compartments in tenancy
- 「作成」をクリックします。
参照先
IAMの動詞とリソース・タイプの組合せのcompartments
リソース・タイプ
このチュートリアルで作成するリソースのコンパートメントを作成します。
- Oracle Cloud Infrastructure Consoleにログインします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。
- 「コンパートメントの作成」をクリックします。
- 次の情報を入力します:
- 名前:
<your-compartment-name>
- 説明:
Compartment for <your-description>.
- 親コンパートメント:
<your-tenancy>(root)
- 名前:
- 「コンパートメントの作成」をクリックします。
参照: コンパートメントの作成
ユーザー名が管理者グループ内にある場合は、この項をスキップしてください。それ以外の場合は、管理者に依頼してテナンシに次のポリシーを追加します:
allow group <the-group-your-username-belongs> to manage all-resources in compartment <your-compartment-name>
この権限を使用すると、コンパートメント内のすべてのリソースを管理でき、基本的にそのコンパートメントでの管理権限が付与されます。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。
- 「コンパートメント」リストからコンパートメントを選択します。
- ポリシーの作成をクリックします。
- 次の情報を入力します:
- 名前:
manage-<your-compartment-name>-resources
- 説明:
Allow users to list, create, update, and delete resources in <your-compartment-name>.
- コンパートメント:
<your-tenancy>(root)
- 名前:
- 「ポリシー・ビルダー」で、次の選択肢を選択します:
- ポリシーのユースケース:
Compartment Management
- 共通ポリシー・テンプレート:
Let compartment admins manage the compartment
- グループ:
<the-group-your-username-belongs>
- 場所:
<your-tenancy>(root)
- ポリシーのユースケース:
- 「作成」をクリックします。
参照先
「クイック作成」ワークフローを使用して、デフォルト設定および新しいネットワーク・リソースでクラスタを作成します。
Kubernetesクラスタを作成したら、クラスタにアクセスするようにクラウド・シェルを設定します。
クラスタ・アクセスが設定されると、アプリケーションをデプロイする準備が整います。
3. Dockerアプリケーションの構築
次に、クラウド・シェルでFlaskフレームワークを設定します。次に、Pythonアプリケーションを作成して実行します。
Flaskアプリケーションを作成します。
Flaskアプリケーションを実行します。
Flaskフレームワークを使用してローカルPythonアプリケーションが正常に作成されました。
参照:
Flaskの詳細は、Flaskのドキュメントを参照してください。
次に、FlaskアプリケーションのDockerイメージを作成します。
4. Dockerイメージのデプロイ
Pythonイメージを作成したら、これをデプロイできます。
ローカルDockerイメージを作成したら、イメージをコンテナ・レジストリにプッシュします。
次のステップに従います。
pushコマンドが完了したら、コンテナ・レジストリでイメージを探します。
次の手順
Hello World Pythonアプリケーションが正常に作成され、Kubernetesクラスタにデプロイされ、Flaskフレームワークを使用してインターネット上でアクセスできるようになりました。
次のサイトをチェックして、Oracle製品を使用した開発に関する詳細情報を確認してください: