デプロイメントは、NGINXサービスなどのデータや状態を保存しません。 ステートレスアプリケーションは、イメージ、オーケストレーションテンプレート、またはkubectlコマンドを使用して作成できます。 プライベートイメージからアプリケーションを作成する場合、Container Service for Kubernetes (ACK) コンソールでプライベートイメージのシークレットを設定し、イメージのセキュリティを確保できます。 このトピックでは、ACKコンソールでイメージを使用してステートレスアプリケーションを作成する方法について説明します。
前提条件
ACKサーバーレスクラスターが作成されます。 詳細については、「ACKサーバーレスクラスターの作成」をご参照ください。
ステップ1: 基本設定の設定
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[デプロイメント] ページの右上隅にある [イメージから作成] をクリックします。
[基本情報] ウィザードページで、基本設定を行います。
デプロイを設定する前に、ページの上部で名前空間を選択します。 この例では、default名前空間が選択され、アプリケーションのタイプはデプロイメントに設定されています。
パラメーター
説明
名前
アプリケーションの名前を入力します。
レプリカ
アプリケーションにプロビジョニングされるポッドの数を指定します。
タイプ
作成するリソースオブジェクトのタイプ。 有効な値: Deployment、StatefulSet、Job、および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はイメージレジストリからイメージをプルします。
常に: ACKは、アプリケーションが展開または展開されるたびに、Container Registryからイメージを取得します。
Never: ACKは、オンプレミスマシン上の画像のみを使用します。
説明[イメージプルポリシー] を選択した場合、デフォルトでイメージプルポリシーは適用されません。
Set Image Pull Secret
[イメージプルシークレットの設定] をクリックすると、プライベートレジストリからイメージをプルするためのシークレットを設定できます。
Secretsを使用して、Container Registry Personal Editionインスタンスからイメージをプルできます。 シークレットの設定方法の詳細については、「シークレットの管理」をご参照ください。
Container Registry Enterprise EditionインスタンスからSecretsを使用せずにイメージをプルできます。
必要なリソース
アプリケーション用に予約されているCPUおよびメモリリソースの量。 リソースは、アプリケーションのコンテナ専用です。 これにより、他のサービスやプロセスがコンピューティングリソースを求めて競合するときに、アプリケーションが利用できなくなります。
コンテナー開始パラメーター
stdin: ACKコンソールの入力をコンテナーに渡します。
tty: 仮想端末で定義されている開始パラメーターをACKコンソールに渡します。
Initコンテナ
[Initコンテナー] を選択すると、initコンテナーが作成されます。 initコンテナは、ポッド管理用のツールを提供します。 詳細については、「Initコンテナー」をご参照ください。
では、ポートセクション、をクリック追加コンテナーポートを追加します。
名前: コンテナポートの名前を入力します。
コンテナーポート: 開くポート番号を入力します。 有効な値: -1 から 65535
プロトコル: TCPとUDPがサポートされています。
では、環境セクション、をクリック追加環境変数を設定します。
説明環境変数を設定するには、対応するConfigMapsまたはSecretsが作成されていることを確認します。 詳細については、「ConfigMapsの管理」および「シークレットの管理」をご参照ください。
ポッドのキーと値のペアで環境変数を設定できます。 環境変数は、コンテナーにポッド構成を適用するために使用されます。 詳細については、「ポッド変数」をご参照ください。
タイプ: 環境変数のタイプを指定します。 有効な値: Custom、ConfigMaps、Secrets、Value/ValueFrom、ResourceFieldRef。 ConfigMapsまたはSecretsを選択した場合、選択したConfigMapまたはSecretのすべてのデータをコンテナー環境変数に渡すことができます。 この例では、Secretsが選択されています。
タイプドロップダウンリストからSecretsを選択し、Value/ValueFromドロップダウンリストからシークレットを選択します。 デフォルトでは、選択したシークレットのすべてのデータが環境変数に渡されます。
この場合、アプリケーションのデプロイに使用されるYAMLファイルには、指定されたシークレットのすべてのデータを参照する設定が含まれています。
変数キー: 環境変数の名前を指定します。
Value/ValueFrom: 環境変数がデータを参照するシークレットを選択します。
では、ヘルスチェックセクション, enable生きていると準備必要に応じてプローブ。
説明ヘルスチェックを設定するには、[全般] セクションで [Initコンテナーとして設定] を選択しないでください。
ヘルスチェックの詳細については、「Liveness、Readiness、Startup Probesの設定」をご参照ください。
パラメーター
リクエストタイプ
説明
Liveness: Livenessプローブを使用して、コンテナをいつ再起動するかを判断します。
Readiness: Readinessプローブを使用して、コンテナがトラフィックを受信する準備ができているかどうかを判断します。
スタートアップ: スタートアッププローブは、コンテナをいつ開始するかを決定するために使用されます。
説明スタートアッププローブは、Kubernetes 1.18以降でのみサポートされます。
HTTP
HTTP GETリクエストをコンテナに送信します。 以下のパラメーターを設定できます。
プロトコル: 要求が送信されるプロトコル。 有効な値: HTTPおよびHTTPS。
パス: サーバー上で要求されたHTTPパス。
ポート: 公開するコンテナーポートの番号または名前。 ポート番号の有効値: 1 ~ 65535
HTTPヘッダー: HTTPリクエストのカスタムヘッダー。 ヘッダーの重複は許可されています。 HTTPヘッダーは、キーと値のペアで指定できます。
初期遅延: YAMLファイルのinitialDelaySecondsフィールド。 このフィールドは、コンテナが開始されてから最初のプローブが実行されるまでの待機時間を指定します。 デフォルト値: 3。 単位は秒です。
Period (s): YAMLファイルのperiodSecondsフィールド。 このフィールドは、プローブが実行される間隔を指定します。 デフォルト値は 10 です。 最小値:1 単位は秒です。
Timeout (s): YAMLファイルのtimeoutSecondsフィールド。 このフィールドは、プローブがタイムアウトするまでの期間を指定します。 デフォルト値は 1 です。 最小値:1 単位は秒です。
Healthy Threshold: 失敗したプローブの後にコンテナーが正常と見なされる前に発生する必要がある連続成功の最小数。 デフォルト値は 1 です。 最小値:1 有効性チェックの場合、このパラメーターは1に設定する必要があります。
異常しきい値: コンテナが成功した後に異常と見なされる前に発生しなければならない連続した失敗の最小数。 デフォルト値:3 最小値:1
TCP
コンテナにTCPソケットを送信します。 kubeletは指定されたポートでソケットを開こうとします。 接続が確立された場合、コンテナーは正常とみなされます。 さもなければ、容器は不健康とみなされる。 以下のパラメーターを設定できます。
ポート: 開くコンテナポートの番号または名前。 ポート番号の有効値: 1 ~ 65535
初期遅延: YAMLファイルのinitialDelaySecondsフィールド。 このフィールドは、コンテナが開始されてから最初のプローブが実行されるまでの待機時間を指定します。 デフォルト値: 15。 単位は秒です。
Period (s): YAMLファイルのperiodSecondsフィールド。 このフィールドは、プローブが実行される間隔を指定します。 デフォルト値は 10 です。 最小値:1 単位は秒です。
Timeout (s): YAMLファイルのtimeoutSecondsフィールド。 このフィールドは、プローブがタイムアウトするまでの時間を指定します。 デフォルト値は 1 です。 最小値:1 単位は秒です。
Healthy Threshold: 失敗したプローブの後にコンテナーが正常と見なされる前に発生する必要がある連続成功の最小数。 デフォルト値は 1 です。 最小値:1 有効性チェックの場合、このパラメーターは1に設定する必要があります。
異常しきい値: コンテナが成功した後に異常と見なされる前に発生しなければならない連続した失敗の最小数。 デフォルト値:3 最小値:1
コマンド
コンテナーでプローブコマンドを実行し、コンテナーのヘルスステータスを確認します。 以下のパラメーターを設定できます。
Command: コンテナーのヘルスステータスを確認するために実行されるプローブコマンドです。
初期遅延: YAMLファイルのinitialDelaySecondsフィールド。 このフィールドは、コンテナが開始されてから最初のプローブが実行されるまでの待機時間を指定します。 既定値:5 単位は秒です。
Period (s): YAMLファイルのperiodSecondsフィールド。 このフィールドは、プローブが実行される間隔を指定します。 デフォルト値は 10 です。 最小値:1 単位は秒です。
Timeout (s): YAMLファイルのtimeoutSecondsフィールド。 このフィールドは、プローブがタイムアウトするまでの時間を指定します。 デフォルト値は 1 です。 最小値:1 単位は秒です。
Healthy Threshold: 失敗したプローブの後にコンテナーが正常と見なされる前に発生する必要がある連続成功の最小数。 デフォルト値は 1 です。 最小値:1 有効性チェックの場合、このパラメーターは1に設定する必要があります。
異常しきい値: コンテナが成功した後に異常と見なされる前に発生しなければならない連続した失敗の最小数。 デフォルト値:3 最小値:1
[ライフサイクル] セクションで、コンテナーのライフサイクルを設定します。
コンテナーのライフサイクルを設定するには、開始、開始後、停止前のパラメーターを指定できます。 詳細については、「コンテナーのライフサイクルの設定」をご参照ください。
開始: コンテナーの開始前に有効になるコマンドとパラメーターを指定します。
ポストスタート: コンテナーの起動後に有効になるコマンドを指定します。
停止前: コンテナーが停止する前に有効になるコマンドを指定します。
では、ボリュームセクションで、オンプレミスストレージボリューム、永続ボリュームクレーム (PVC) 、またはApsara File storage NAS (NAS) ボリュームを追加します。
次のタイプのストレージボリュームがサポートされています。
オンプレミスのストレージボリューム
PVC
NAS
ディスク
詳細については、「静的にプロビジョニングされたディスクボリュームの使用」、「動的にプロビジョニングされたディスクボリュームの使用」、および「静的にプロビジョニングされたNASボリュームのマウント」をご参照ください。
[ログ] セクションで、ログ関連のパラメーターを設定します。 詳細については、「方法1: イメージからアプリケーションを作成し、アプリケーションログを収集するようにSimple Log Serviceを設定する」をご参照ください。
クリック次へ詳細設定を設定します。
ステップ3: 詳細設定の設定
[詳細] ステップで、アクセス制御、スケーリング設定、ラベル、およびアノテーションを設定します。
では、アクセス制御セクションで、バックエンドポッドを公開する方法を設定します。
説明ビジネス要件に基づいて、次のアクセス制御設定を構成できます。
内部アプリケーション: クラスター内で実行されるアプリケーションの場合、ClusterIPまたはNodePortタイプのサービスを作成して内部通信を有効にできます。
外部アプリケーション: インターネットに公開されているアプリケーションの場合、次のいずれかの方法を使用してアクセス制御を構成できます。
LoadBalancerサービスを作成します。 サービスを作成するときは、タイプをServer Load Balancerに設定します。 サービスのServer Load Balancer (SLB) インスタンスを選択または作成し、サービスを使用してアプリケーションをインターネットに公開できます。
Ingressを作成し、それを使用してアプリケーションをインターネットに公開します。 詳しくは、『ingress-nginx』をご参照ください。
バックエンドポッドをインターネットに公開する方法を指定できます。 この例では、NGINXアプリケーションをインターネットに公開するためにClusterIPサービスとIngressが作成されます。
[サービス] の右側にある [作成] をクリックします。 [サービスの作成] ダイアログボックスで、次のパラメーターを設定します。
パラメーター
説明
名前
サービスの名前を入力します。 この例では、nginx-svcが使用されます。
タイプ
サービスのタイプ。 このパラメーターは、サービスへのアクセス方法を決定します。 この例では、[Server Load Balancer] を選択します。
Cluster IP: ClusterIPタイプのサービス。 このタイプのサービスは、クラスターの内部IPアドレスを使用してサービスを公開します。 このタイプを選択すると、クラスター内でのみサービスにアクセスできます。 これはデフォルトのタイプです。
説明[ヘッドレスサービス] チェックボックスは、[タイプ] を [クラスターIP] に設定した場合にのみ表示されます。
Server Load Balancer: LoadBalancerタイプのサービス。 このタイプのサービスは、Server Load Balancer (SLB) インスタンスを使用してサービスを公開します。 このタイプを選択すると、サービスへの内部または外部アクセスを有効にできます。 SLBインスタンスを使用して、リクエストをNodePortおよびClusterIPサービスにルーティングできます。
SLBインスタンスの作成: [変更] をクリックして、SLBインスタンスの仕様を変更できます。
既存の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.x x foo.bar.com# IngressのIPアドレス。
IngressのIPアドレスを取得するには、アプリケーションの詳細ページに移動し、[アクセス方法] タブをクリックします。 [外部エンドポイント] 列に表示されるIPアドレスは、IngressのIPアドレスです。
パラメーター
説明
名前
Ingressの名前を入力します。 この例では、nginx-ingressが使用されています。
ルール
Ingressルールは、クラスター内の特定のサービスへのアクセスを有効にするために使用されます。 詳細については、「Ingressの作成」をご参照ください。
ドメイン: Ingressのドメイン名を入力します。 この例では、テストドメイン名
foo.bar.com
が使用されます。パス: サービスURLを入力します。 デフォルトのパスはルートパス /です。 この例では、デフォルトのパスが使用されます。 各パスはバックエンドサービスに関連付けられています。 SLBは、インバウンドリクエストがドメイン名とパスと一致する場合にのみ、トラフィックをバックエンドサービスに転送します。
サービス: サービスとサービスポートを選択します。 この例では、nginx-svcが使用されます。
EnableTLS: 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ファイルを構成する必要があります。 詳細については、このトピックの重要なセクションを参照してください。