デプロイメントは、NGINX サービスなどのデータや状態を保存しません。ステートレス アプリケーションは、イメージ、オーケストレーションテンプレート、または kubectl コマンドを使用して作成できます。プライベートイメージからアプリケーションを作成する場合、Container Service for Kubernetes (ACK) コンソールでプライベートイメージのシークレットを設定して、イメージのセキュリティを確保できます。このトピックでは、ACK コンソールでイメージを使用してステートレス アプリケーションを作成する方法について説明します。
前提条件
ACK Serverless Kubernetes クラスター が作成されていること。詳細については、「ACK Serverless Kubernetes クラスターを作成する」をご参照ください。
手順 1:基本設定を構成する
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のペインで、 を選択します。
[デプロイメント] ページの右上隅にある [イメージから作成] をクリックします。
[基本情報] ウィザードページで、基本設定を構成します。
デプロイメントを構成する前に、ページの上部で名前空間を選択します。この例では、[default] 名前空間が選択され、アプリケーションのタイプは [デプロイメント] に設定されています。
パラメーター
説明
名前
アプリケーションの名前を入力します。
レプリカ
アプリケーションにプロビジョニングされるポッドの数を指定します。
タイプ
作成するリソースオブジェクトのタイプ。有効な値:[デプロイメント]、[StatefulSet]、[ジョブ]、[CronJob]。
ラベル
アプリケーションを識別するためにラベルを追加します。
アノテーション
アプリケーションにアノテーションを追加します。
[次へ] をクリックします。[コンテナー] ステップに進みます。
手順 2:コンテナーを構成する
[コンテナー] ステップで、アプリケーションのコンテナーの構成を完了します。構成には、コンテナーイメージ、計算リソース、コンテナーポート、環境変数、ヘルスチェック、ライフサイクル、ボリュームが含まれます。
[コンテナー] ステップの上部にある [コンテナーの追加] をクリックして、アプリケーションにさらにコンテナーを追加します。
[全般] セクションで、コンテナーの基本構成を完了します。
パラメーター
説明
イメージ名
[イメージを選択]
[イメージを選択] をクリックしてイメージを選択できます。次のタイプのイメージがサポートされています。
Container Registry Enterprise Edition:Container Registry Enterprise Edition インスタンスに保存されているイメージを選択します。イメージが属するリージョンと Container Registry インスタンスを選択する必要があります。Container Registry の詳細については、「Container Registry とは」をご参照ください。
Container Registry Personal Edition:Container Registry Personal Edition インスタンスに保存されているイメージを選択します。イメージが属するリージョンと Container Registry インスタンスを選択する必要があります。
アーティファクトセンター:アーティファクトセンターには、アプリケーションのコンテナー化のための基本オペレーティングシステムイメージ、基本言語イメージ、AI およびビッグデータ関連イメージが含まれています。この例では、NGINX イメージが選択されています。詳細については、「アーティファクトセンターの概要」をご参照ください。
説明Container Registry のアーティファクトセンターは、Alibaba Cloud または OpenAnolis によって更新およびパッチが適用されたベースイメージを提供します。その他の要件や質問がある場合は、DingTalk グループ (ID 33605007047) に参加してテクニカルサポートをリクエストしてください。
プライベートレジストリに保存されているイメージのアドレスを入力することもできます。イメージアドレスは、
domainname/namespace/imagename:tag
の形式で指定する必要があります。イメージプルポリシー
イメージをプルするためのポリシー。有効な値:
[IfNotPresent]:プルするイメージがオンプレミスマシンで見つかった場合、オンプレミスマシンのイメージが使用されます。それ以外の場合、ACK はイメージレジストリからイメージをプルします。
[Always]:ACK は、アプリケーションがデプロイまたは拡張されるたびに、Container Registry からイメージをプルします。
[Never]:ACK は、オンプレミスマシンのイメージのみを使用します。
説明[イメージプルポリシー] を選択した場合、デフォルトではイメージプルポリシーは適用されません。
[イメージプルシークレットの設定]
[イメージプルシークレットの設定] をクリックして、プライベートレジストリからイメージをプルするためのシークレットを設定できます。
シークレットを使用して、Container Registry Personal Edition インスタンスからイメージをプルできます。シークレットの設定方法の詳細については、「シークレットの管理」をご参照ください。
Container Registry Enterprise Edition インスタンスからは、シークレットを使用せずにイメージをプルできます。
必要なリソース
アプリケーション用に予約されている [CPU] と [メモリ] リソースの量。これらのリソースは、アプリケーションのコンテナー専用です。これにより、他のサービスやプロセスが計算リソースを奪い合うときに、アプリケーションが使用できなくなるのを防ぎます。
コンテナー起動パラメーター
stdin:ACK コンソールの入力をコンテナーに渡します。
tty:仮想端末で定義された起動パラメーターを ACK コンソールに渡します。
Init コンテナー
[Init コンテナー] を選択すると、init コンテナーが作成されます。init コンテナーは、ポッド管理のためのツールを提供します。詳細については、「Init Containers」をご参照ください。
[ポート] セクションで、[追加] をクリックしてコンテナーポートを追加します。
名前:コンテナーポートの名前を入力します。
コンテナーポート:開くポート番号を入力します。有効な値:1 ~ 65535。
プロトコル:TCP と UDP がサポートされています。
[環境] セクションで、[追加] をクリックして環境変数を構成します。
説明環境変数を構成するには、対応する ConfigMap またはシークレットが作成されていることを確認してください。詳細については、「ConfigMap の管理」および「シークレットの管理」をご参照ください。
ポッド用にキーと値のペアで環境変数を構成できます。環境変数は、ポッドの構成をコンテナーに適用するために使用されます。詳細については、「ポッド変数」をご参照ください。
タイプ:環境変数のタイプを指定します。有効な値:[カスタム]、[ConfigMap]、[シークレット]、[値/ValueFrom]、[ResourceFieldRef]。[ConfigMap] または [シークレット] を選択すると、選択した ConfigMap またはシークレットのすべてのデータをコンテナー環境変数に渡すことができます。この例では、[シークレット] が選択されています。
[タイプ] ドロップダウンリストから [シークレット] を選択し、[値/ValueFrom] ドロップダウンリストからシークレットを選択します。デフォルトでは、選択したシークレットのすべてのデータが環境変数に渡されます。
この場合、アプリケーションのデプロイに使用される YAML ファイルには、指定されたシークレットのすべてのデータを参照する設定が含まれています。
変数キー:環境変数の名前を指定します。
値/ValueFrom:環境変数がデータを参照するシークレットを選択します。
[ヘルスチェック] セクションで、必要に応じて [liveness] プローブと [readiness] プローブを有効にします。
パラメーター
説明
Liveness:コンテナーが想定どおりに実行されているかどうかを確認します。複数回連続して失敗した後、kubelet はコンテナーを再起動します。Liveness プローブは、コンテナーが実行中のまま応答しなくなる問題 (デッドロックなど) を特定するのに役立ちます。
Readiness:Readiness プローブは、コンテナーがトラフィックを受信する準備ができているかどうかを判断するために使用されます。ポッドは、Readiness チェックに合格した後でのみ、サービスのバックエンドに接続されます。
[起動]: 起動プローブは、コンテナーの初期化中に実行され、起動の成功を確認します。後続のliveness プローブとreadiness プローブは、起動プローブが成功した後に開始されます。
説明起動プローブは、Kubernetes 1.18 以降でのみサポートされています。
[ライフサイクル] セクションで、コンテナーのライフサイクルを構成します。
コンテナーのライフサイクルを設定するには、次のパラメーターを指定できます。Start、Post Start、および Pre Stop。詳細については、「コンテナーのライフサイクルを設定する」をご参照ください。
[Start]: コンテナーの起動前に有効になるコマンドとパラメーターを指定します。
[Post Start]: コンテナーの起動後に有効になるコマンドを指定します。
[Pre Stop]: コンテナーの停止前に有効になるコマンドを指定します。
[ボリューム] セクションで、オンプレミス ストレージ ボリューム、永続ボリューム要求(PVC)、または File Storage NAS(NAS)ボリュームを追加します。
以下の種類のストレージ ボリュームがサポートされています。
オンプレミス ストレージ ボリューム
PVC
NAS
ディスク
詳細については、「静的にプロビジョニングされたディスク ボリュームを使用する」、「動的にプロビジョニングされたディスク ボリュームを使用する」、および「静的にプロビジョニングされた NAS ボリュームをマウントする」をご参照ください。
ログ セクションで、ログ関連のパラメーターを構成します。詳細については、「方法 1: イメージからアプリケーションを作成し、Simple Log Service を使用してアプリケーション ログを収集する」をご参照ください。
[次へ] をクリックして詳細設定を構成します。
ステップ 3: 詳細設定の構成
[詳細設定] ステップで、アクセスの制御、スケーリング設定、ラベル、およびアノテーションを構成します。
[アクセスの制御] セクションで、バックエンド ポッドを公開する方法を構成します。
説明ビジネス要件に基づいて、次のアクセスの制御設定を構成できます。
内部アプリケーション: クラスタ内で実行されるアプリケーションの場合、ClusterIP タイプまたは NodePort タイプのサービスを作成して、内部通信を有効にできます。
外部アプリケーション: インターネットに公開されるアプリケーションの場合、次のいずれかの方法を使用してアクセスの制御を構成できます。
LoadBalancer サービスを作成します。サービスを作成するときに、[タイプ] を Server Load Balancer に設定します。サービスの Server Load Balancer (SLB) インスタンスを選択または作成し、サービスを使用してアプリケーションをインターネットに公開できます。
Ingress を作成し、それを使用してアプリケーションをインターネットに公開します。詳細については、「Ingress」をご参照ください。
バックエンド ポッドをインターネットに公開する方法を指定できます。この例では、ClusterIP サービスと Ingress を作成して、NGINX アプリケーションをインターネットに公開します。
[サービス] の右側にある [作成] をクリックします。[サービスの作成] ダイアログボックスで、次のパラメーターを構成します。
パラメーター
説明
名前
サービスの名前を入力します。この例では、nginx-svc が使用されています。
タイプ
サービスのタイプ。このパラメーターは、サービスへのアクセス方法を決定します。この例では、Server Load Balancer を選択します。
クラスタ IP: ClusterIP タイプのサービス。このタイプのサービスは、クラスタの内部 IP アドレスを使用してサービスを公開します。このタイプを選択すると、サービスはクラスタ内からのみアクセス可能になります。これはデフォルトのタイプです。
説明[Headless サービス] チェックボックスは、[タイプ] を クラスタ IP に設定した場合にのみ表示されます。
Server Load Balancer: LoadBalancer タイプのサービス。このタイプのサービスは、Server Load Balancer (SLB) インスタンスを使用してサービスを公開します。このタイプを選択すると、サービスへの内部または外部アクセスを有効にできます。 SLB インスタンスを使用して、リクエストを NodePort および ClusterIP サービスにルーティングできます。
[変更] をクリックして、SLB インスタンスの仕様を変更できます。
既存の SLB インスタンスを選択できます。
説明SLB インスタンスを作成することも、既存の SLB インスタンスを使用することもできます。また、SLB インスタンスを複数のサービスに関連付けることもできます。ただし、次の制限事項に注意する必要があります。
既存の SLB インスタンスを使用する場合、SLB インスタンスのリスナーはサービスのリスナーを上書きします。
サービスとともに SLB インスタンスが作成された場合、他のサービスを作成するときにこの SLB インスタンスを再利用することはできません。そうしないと、SLB インスタンスが削除される可能性があります。 SLB コンソールで、または API を呼び出すことによって手動で作成された SLB インスタンスのみを、複数のサービスを公開するために使用できます。
同じ SLB インスタンスを共有するサービスは、異なるフロントエンド ポートを使用する必要があります。そうしないと、ポートの競合が発生する可能性があります。
複数のサービスが同じ SLB インスタンスを共有する場合は、Kubernetes でリスナー名と vServer グループ名を一意の識別子として使用する必要があります。リスナーまたは vServer グループの名前を変更しないでください。
クラスタ間で SLB インスタンスを共有することはできません。
ポートマッピング
サービス ポートとコンテナー ポートを指定します。コンテナー ポートは、バックエンド ポッドで公開されているポートと同じである必要があります。例:
サービスポート: 80
コンテナポート: 80
外部トラフィック ポリシー
ローカル: トラフィックは、サービスがデプロイされているノードのみにルーティングされます。
クラスタ: トラフィックは、他のノード上のポッドにルーティングできます。
説明[外部トラフィック ポリシー] パラメーターは、[タイプ] を ノードポート または Server Load Balancer に設定した場合にのみ使用できます。
アノテーション
SLB インスタンスの構成を変更するには、サービスにアノテーションを追加します。たとえば、
service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:20
は、サービスの最大帯域幅が 20 Mbit/s であることを指定します。これは、サービスを通過するトラフィックの量を制限します。詳細については、「アノテーションを使用して CLB インスタンスを構成する」をご参照ください。ラベル
サービスを識別するために、サービスにラベルを追加します。
Ingress を作成するには、[Ingress] の右側にある [作成] をクリックします。[作成] ダイアログボックスで、パラメーターを設定します。
詳細については、「Ingress を作成する」をご参照ください。
重要イメージからアプリケーションを作成する場合、1 つのサービスに対してのみ Ingress を作成できます。この例では、仮想ホストの名前がテスト ドメイン名として使用されています。次の形式のマッピングを hosts ファイルに追加する必要があります: Ingress の外部エンドポイント + Ingress のドメイン名。実際のシナリオでは、インターネット コンテンツ プロバイダー (ICP) 番号を持つドメイン名を使用します。
101.37.xx.xx foo.bar.com # The IP address of the Ingress.
Ingress の IP アドレスを取得するには、アプリケーションの詳細ページに移動し、[アクセス方法] タブをクリックします。 [外部エンドポイント] 列に表示されている IP アドレスが、Ingress の IP アドレスです。
パラメーター
説明
名前
Ingress の名前を入力します。この例では、nginx-ingress が使用されています。
ルール
Ingress ルールは、クラスタ内の特定のサービスへのアクセスを有効にするために使用されます。詳細については、「Ingress を作成する」をご参照ください。
ドメイン: Ingress のドメイン名を入力します。この例では、テスト ドメイン名
foo.bar.com
が使用されています。パス: サービス URL を入力します。デフォルトのパスはルートパス / です。この例では、デフォルトのパスが使用されています。各パスはバックエンド サービスに関連付けられています。 SLB は、受信リクエストがドメイン名とパスに一致する場合にのみ、トラフィックをバックエンド サービスに転送します。
サービス: サービスとサービス ポートを選択します。この例では、nginx-svc が使用されています。
TLS を有効にする: TLS を有効にするには、このチェックボックスをオンにします。詳細については、「NGINX Ingress の詳細設定」をご参照ください。
重み
パス内の各サービスの重みを設定します。各重みはパーセント値として計算されます。デフォルト値: 100。
カナリアリリース
カナリアリリース機能を有効または無効にします。[オープンソース ソリューション] を選択することをお勧めします。
Ingress クラス
Ingress のクラスを指定します。
アノテーション
[追加] をクリックして、キーと値を入力します。 Ingress アノテーションの詳細については、「アノテーション」をご参照ください。
ラベル
Ingress の特性を記述するラベルを追加します。
作成されたサービスと Ingress は、[アクセスの制御] セクションにあります。 [更新] または [削除] をクリックして、構成を変更できます。
[スケーリング] セクションで、ビジネス要件に基づいて HPA と CronHPA を選択します。
ACK は、ポッドの自動スケーリングをサポートしています。これにより、CPU とメモリの使用量に基づいてポッドの数を自動的に調整できます。
説明HPA を有効にするには、コンテナーに必要なリソースを構成する必要があります。そうしないと、HPA は有効になりません。
パラメーター
説明
メトリック
[CPU 使用率] または [メモリ使用率] を選択します。選択したリソースタイプは、[必要なリソース] フィールドで指定したものと同じである必要があります。
条件
リソース使用量のしきい値を指定します。 HPA は、しきい値を超えるとスケールアウト イベントをトリガーします。
最大レプリカ数
アプリケーションをスケーリングできる複製ポッドの最大数を指定します。
最小レプリカ数
実行する必要がある複製ポッドの最小数を指定します。
[ラベル、アノテーション] セクションで、[追加] をクリックして、ポッドにラベルとアノテーションを追加します。
ポッド ラベル: ポッドにラベルを追加します。ラベルは、アプリケーションを識別するために使用されます。
ポッド アノテーション: ポッドにアノテーションを追加します。
[作成] をクリックします。
ステップ 4:アプリケーションを確認する
[完了] ステップで、作成されたアプリケーションを表示できます。
[完了] ステップで、[詳細の表示] をクリックします。[デプロイメント] ページで、serverless-app-svc という名前で新しく作成されたアプリケーションを見つけることができます。
クラスタの詳細ページの左側のナビゲーションウィンドウで、 を選択します。[サービス] ページで、serverless-app-svc という名前で新しく作成されたサービスを見つけることができます。
NGINX ウェルカムページにアクセスするには、ブラウザを使用して サービスの外部エンドポイントまたはドメイン名にアクセスします。
重要ブラウザを使用して サービスにアクセスする場合は、サービスの種類が [Server Load Balancer] であることを確認してください。
ドメイン名を使用して サービスにアクセスする場合は、hosts ファイルを設定する必要があります。詳細については、このトピックの 重要 セクションをご参照ください。