すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ステートレスワークロード (Deployment) の作成

最終更新日:Nov 09, 2025

Deployment (ステートレスワークロードとも呼ばれます) は、Kubernetes で最も一般的なワークロードタイプの 1 つです。Deployment は、指定された数の Pod が、定義した状態でクラスター内で実行されることを保証します。このトピックでは、コンソールと kubectl を使用して Container Service for Kubernetes (ACK) クラスターでステートレスアプリケーションを作成する方法について説明します。

開始する前に

ワークロードを作成する前に、「ワークロード」を読んで、ワークロードの基本と重要な考慮事項を理解してください。このトピックには、次のセクションが含まれています。

  • Deployment の作成: コンソールと kubectl を使用して Deployment を作成する方法に関するクイックスタートガイドを提供します。

  • 設定項目: コンソールの設定項目に関するドキュメントへのリンクと、kubectl で使用するサンプル YAML ファイルを提供します。

重要

このトピックの例では、パブリックイメージを使用します。パブリックイメージをプルするには、クラスターまたはノードがインターネットにアクセスできる必要があります。

  • クラスターのインターネットアクセスを有効にする (推奨): クラスターが存在する VPC 用にインターネット NAT ゲートウェイを作成します。これにより、クラスター内のすべてのリソースにインターネットアクセスが提供されます。

  • ノードに固定パブリック IP アドレスを割り当てる: パブリック IP アドレスを持つノードは、パブリックイメージをプルできます。ただし、ワークロードをデプロイするすべてのノードにパブリック IP アドレスを割り当てる必要があります。

Deployment の作成

コンソールを使用した Deployment の作成

重要

次の手順では、ワークロードを作成するための簡略化されたワークフローについて説明します。これらの手順に従って、ワークロードを迅速にデプロイおよび検証できます。基本操作に慣れたら、「設定項目」を参照してワークロードをカスタマイズしてください。

  1. アプリケーションの基本情報を設定する

    1. Container Service for Kubernetes コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。[クラスター] ページで、対象のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、ワークロード > Deployment を選択します。 [Deployment] ページで、[イメージから作成] をクリックします。

      image

    2. [基本情報] ページで、アプリケーションの基本情報を設定し、[次へ] をクリックして [コンテナー設定] ページに進みます。

      image

  2. コンテナーを設定する

    [コンテナー設定] セクションで、[イメージ名] と [ポート] を設定します。その他の設定はオプションです。デフォルト値のままにします。次に、[次へ] をクリックして [詳細設定] ページに進みます。イメージアドレスは以下の通りです。

    重要

    このイメージをプルする前に、クラスターのインターネットアクセスを有効にする必要があります。クラスターの作成時に [VPC の SNAT を設定] でデフォルトの選択を維持した場合、クラスターはすでにインターネットにアクセスできます。そうでない場合は、「クラスターのインターネットアクセスを有効にする」をご参照ください。

    anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    image

  3. 詳細設定を完了する

    [詳細設定] ページで、アクセス、スケーリング、スケジューリング、ラベル、およびアノテーションを設定します。[アクセス設定] セクションで、バックエンド Pod を公開する方法を指定します。[OK] をクリックし、ページの下部にある [作成] をクリックします。

    重要

    このステップでは、ワークロードを公開するために LoadBalancer サービスを作成します。このサービスで使用される SLB インスタンスには料金が発生します。課金の詳細については、「従量課金」をご参照ください。後でこの SLB インスタンスを使用する予定がない場合は、速やかにリリースしてください。

    image

  4. アプリケーションの表示

    [作成完了] ページにアプリケーションタスクが表示されます。[アプリケーション作成タスクが送信されました] パネルで、[アプリケーションの詳細を表示] をクリックします。 [アクセス方法] タブをクリックします。新しく作成されたサービス (nginx-test-svc) を見つけ、[外部エンドポイント] 列のリンクをクリックしてサービスにアクセスします。image

    image

    コンソールで作成したワークロードを [表示]、[編集]、[再デプロイ] できます。image

kubectl を使用した Deployment の作成

重要

ワークロードを作成する前に、kubectl を使用してクラスターに接続していることを確認してください。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。

  1. 次の YAML コンテンツをコピーし、deployment.yaml という名前のファイルに保存します。YAML ファイルは、Deployment とそれを公開するための LoadBalancer サービスを定義します。

    apiVersion: apps/v1
    kind: Deployment    # ワークロードタイプ
    metadata:
      name: nginx-test
      namespace: default  # 必要に応じて名前空間を変更します
      labels:
        app: nginx
    spec:
      replicas: 2  # Pod の数を指定します
      selector:
        matchLabels:
          app: nginx
      template: # Pod 設定
        metadata:
          labels: # Pod ラベル
            app: nginx 
        spec:
          containers:
          - name: nginx  # コンテナー名
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6  # 特定のバージョンの Nginx イメージを使用します
            ports:
            - containerPort: 80  # コンテナーによって公開されるポート
              protocol: TCP  # プロトコルを TCP または UDP として指定します。デフォルトは TCP です。
    ---
    # サービス
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-test-svc
      namespace: default  # 必要に応じて名前空間を変更します
      labels:
        app: nginx
    spec:
      selector:
        app: nginx  # ラベルを照合して、サービスが正しい Pod を指すようにします
      ports:
        - port: 80           # クラスター内でサービスによって提供されるポート
          targetPort: 80     # コンテナー内のアプリケーションがリッスンするポート (containerPort) を指します
          protocol: TCP      # プロトコル。デフォルトは TCP です。
      type: LoadBalancer      # サービスタイプ。デフォルトは内部アクセス用の ClusterIP です。
  2. 次のコマンドを実行して、Deployment とサービスを作成します。

    kubectl apply -f deployment.yaml

    期待される出力:

    deployment.apps/nginx-test created
    service/nginx-test-svc created
  3. 次のコマンドを実行して、サービスのパブリック IP アドレスを表示します。

    kubectl get svc

    期待される出力:

    NAME            TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
    kubernetes      ClusterIP      172.16.**.***    <none>          443/TCP        4h47m
    nginx-test-svc  LoadBalancer   172.16.**.***    106.14.**.***   80:31130/TCP   1h10m
  4. ブラウザで、Nginx のパブリック IP アドレス (106.14.**.***) を入力して、ワークロードの Nginx コンテナーにアクセスします。

    image

設定項目

コンソールの設定項目

基本情報

image

設定項目

説明

アプリケーション名

ワークロードの名前。ワークロードに属する Pod の名前は、この名前に基づいて生成されます。

名前空間

ワークロードが属する名前空間。

レプリカ数

ワークロード内の Pod の数。デフォルトは 2 です。

タイプ

ワークロードのタイプ。ワークロードタイプを選択するには、「ワークロードの作成」をご参照ください。

ラベル

ワークロードのラベル。

アノテーション

ワークロードのアノテーション。

タイムゾーン同期

コンテナーが、それが存在するノードと同じタイムゾーンを使用するかどうかを指定します。

コンテナー設定

基本設定

image

設定項目

説明

イメージ名

  • イメージの選択

    [イメージの選択] をクリックしてイメージを選択できます。次の 3 種類のイメージから選択できます。

    • Container Registry Enterprise Edition: Container Registry (ACR) でホストされている Enterprise Edition イメージを選択できます。イメージが配置されているリージョンと ACR インスタンスを選択する必要があります。ACR の詳細については、「Container Registry とは」をご参照ください。

    • Container Registry Personal Edition: ACR でホストされている Personal Edition イメージを選択できます。イメージが配置されているリージョンと ACR インスタンスを選択する必要があります。

    • Artifacts: Alibaba Cloud と OpenAnolis コミュニティによって提供される一般的なイメージ。Artifacts を使用するには、クラスターのインターネットアクセスを有効にする必要があります。Artifacts の詳細については、「Artifacts」をご参照ください。

    別のソースからのイメージを使用するには、domainname/namespace/imagename:tag の形式でイメージアドレスを直接入力できます。domainname を指定しない場合 (たとえば nginx:1.7.9 と入力した場合)、イメージは Docker Hub からプルされます。

  • イメージプルポリシーの選択

    ACK は、次の 3 つのイメージプルポリシー (imagePullPolicy) をサポートしています。

    • ローカルイメージを優先 (IfNotPresent) (デフォルト): ワーカーノードにローカルイメージが存在する場合は、それが使用されます。存在しない場合は、イメージがプルされます。

    • 常にイメージをプル (Always): イメージは、各デプロイメントまたはスケールアウトのたびに常に Container Registry からプルされ、ローカルノードからはプルされません。

    • ローカルイメージのみを使用 (Never): ローカルイメージのみが使用されます。ローカルイメージが存在しない場合、プルは失敗します。

  • イメージプル Secret の設定

    ACR またはサードパーティのリポジトリを使用する場合、イメージをプルするために Secret を設定する必要がある場合があります。

    説明

    ACR Enterprise インスタンスの場合、パスワード不要のコンポーネントを使用してイメージをプルできます。詳細については、「非管理対象クラスター用のパスワード不要コンポーネントのインストールと使用」をご参照ください。

リソース制限

コンテナーの resources.limits。詳細については、「Requests and Limits」をご参照ください。

リソースリクエスト

コンテナーの resources.requests。詳細については、「Requests and Limits」をご参照ください。

コンテナー起動オプション

  • stdin: コンテナーの標準入力を有効にします。

  • tty: 信号を送信するためにコンテナーに仮想ターミナルを割り当てます。

これら 2 つのオプションは通常、ターミナル (tty) をコンテナーの標準入力 (stdin) にバインドするために一緒に使用されます。たとえば、対話型プログラムはユーザーから標準入力を取得し、それをターミナルに表示します。

特権コンテナー

  • このチェックボックスを選択すると、privileged=true に設定され、特権モードが有効になります。

  • このチェックボックスの選択を解除すると、privileged=false に設定され、特権モードが無効になります。

特権モードは、コンテナーにホストワーカーノードのオペレーティングシステムと同様の権限 (ハードウェアデバイスへのアクセスやファイルシステムのマウントなど) を付与します。

Init コンテナー

このオプションを選択して、init コンテナーを作成します。

Init コンテナーは、アプリケーションコンテナーの起動をブロックまたは遅延させるメカニズムを提供します。init コンテナーが正常に実行された後、Pod 内の他のコンテナーが並行して起動します。たとえば、依存サービスの可用性を確認できます。Init コンテナーには、アプリケーションイメージに含まれていないユーティリティツールやインストールスクリプトを含めることができ、カーネルパラメーターの設定や設定ファイルの生成など、アプリケーションコンテナーのランタイム環境を初期化します。詳細については、「Init Containers」をご参照ください。

ポート設定

image

設定項目

説明

名前

コンテナーポートの名前。ポートを区別するためにのみ使用され、機能的な効果はありません。

コンテナーポート

コンテナーによって公開されるポート。値は 1 から 65535 の間でなければなりません。コンテナーは、Pod の外部からアクセス可能であり、Pod 内のコンテナー間の通信を可能にするためにポートを公開する必要があります。

Pod 内のすべてのコンテナーは Pod のネットワークプロトコルスタックを共有するため、Pod 内に複数のコンテナーを設定する場合、ポートを重複させることはできません。

プロトコル

コンテナーポートで使用されるレイヤー 4 (トランスポート層) プロトコル。TCP と UDP がサポートされています。

環境変数

image

設定項目

説明

タイプ

環境変数のタイプ。次のタイプがサポートされています。

  • カスタム

    env を使用して、ワークロードに環境変数を直接ハードコーディングします。

  • 設定項目

    envFrom を使用して、ConfigMap に保存されている機密性の低い設定データを取得します。

  • Secret

    envFrom を使用して、パスワードや API キーなど、ConfigMap に保存されている機密情報を取得します。

  • 変数/変数参照

    value/valueFrom を使用して、他の環境変数または事前定義された値を取得します。

  • リソース参照

    resourceFieldRef を使用して、Pod が配置されているノードのリソース情報を取得します。

設定項目と Secret は、すべてのファイルの参照をサポートしています。Secret を例にとると、[Secret] タイプを選択し、対象の Secret のみを選択した場合、デフォルトですべてのファイルが参照されます。环境变量

対応する YAML ファイルも Secret 全体を参照します。yaml

[リソース参照] を選択した場合、resourceFieldRef パラメーターは主に、Pod 仕様からコンテナーによって宣言されたリソース値を参照するために使用されます。これらの値は、環境変数としてコンテナーに渡されます。対応する YAML は次のとおりです。

image

変数名

Pod 内の環境変数の名前。

変数/変数参照

環境変数の値、または別のソースから取得した値。

ヘルスチェック

image

設定項目

説明

Liveness プローブ: コンテナーが正常に実行されているかどうかを判断するために使用されます。指定された回数のチェックに失敗した場合、kubelet はコンテナーを再起動します。Liveness プローブは、デッドロックなど、コンテナーが実行中の状態のままで応答しなくなる原因となる問題を検出できます。

リクエストタイプ: HTTP リクエスト

コンテナーに HTTP リクエストを送信して、正常かどうかを定期的にチェックします。

  • プロトコル: HTTP/HTTPS

  • パス: HTTP サーバーへのアクセスに使用されるパス。

  • ポート: コンテナーによって公開されるアクセスポートまたはポート名。ポート番号は 1 から 65535 の間でなければなりません。

  • HTTP ヘッダー: HTTP リクエスト内のカスタムリクエストヘッダー。HTTP では重複したヘッダーが許可されます。ヘッダーはキーと値のペアとして指定できます。

  • 検出レイテンシ (秒): initialDelaySeconds。コンテナーが起動してから最初のプローブが実行されるまでの待機秒数。デフォルト値は 3 秒です。

  • 検出頻度 (秒): periodSeconds。プローブが実行される間隔。デフォルト値は 10 秒で、最小値は 1 秒です。

  • タイムアウト (秒): プローブの timeoutSeconds。デフォルト値は 1 秒で、最小値は 1 秒です。

  • 正常しきい値: 失敗後にプローブが成功したと見なされるために必要な連続した成功プローブの最小数。デフォルト値は 1 で、最小値は 1 です。liveness プローブの場合、この値は 1 でなければなりません。

  • 非正常しきい値: 成功後にプローブが失敗したと見なされるために必要な連続した失敗プローブの最小数。デフォルト値は 3 で、最小値は 1 です。

リクエストタイプ: TCP 接続

コンテナーに TCP ソケットを送信します。kubelet は指定されたポートでソケットを開こうとします。接続が確立できる場合、コンテナーは正常と見なされます。それ以外の場合は、失敗と見なされます。

  • ポート: コンテナーによって公開されるアクセスポートまたはポート名。ポート番号は 1 から 65535 の間でなければなりません。

  • 検出レイテンシ (秒): initialDelaySeconds。コンテナーが起動してから最初のプローブが実行されるまでの待機秒数。デフォルト値は 15 秒です。

  • 検出頻度 (秒): periodSeconds。プローブが実行される間隔。デフォルト値は 10 秒で、最小値は 1 秒です。

  • タイムアウト (秒): プローブの timeoutSeconds。デフォルト値は 1 秒で、最小値は 1 秒です。

  • 正常しきい値: 失敗後にプローブが成功したと見なされるために必要な連続した成功プローブの最小数。デフォルト値は 1 で、最小値は 1 です。liveness プローブの場合、この値は 1 でなければなりません。

  • 非正常しきい値: 成功後にプローブが失敗したと見なされるために必要な連続した失敗プローブの最小数。デフォルト値は 3 で、最小値は 1 です。

リクエストタイプ: コマンドライン

コンテナー内でプローブコマンドを実行して、そのヘルスをチェックします。

  • コマンドライン: コンテナーのヘルスをチェックするために使用されるプローブコマンド。

  • 検出レイテンシ (秒): initialDelaySeconds。コンテナーが起動してから最初のプローブが実行されるまでの待機秒数。デフォルト値は 5 秒です。

  • 検出頻度 (秒): periodSeconds。プローブが実行される間隔。デフォルト値は 10 秒で、最小値は 1 秒です。

  • タイムアウト (秒): プローブの timeoutSeconds。デフォルト値は 1 秒で、最小値は 1 秒です。

  • 正常しきい値: 失敗後にプローブが成功したと見なされるために必要な連続した成功プローブの最小数。デフォルト値は 1 で、最小値は 1 です。liveness プローブの場合、この値は 1 でなければなりません。

  • 非正常しきい値: 成功後にプローブが失敗したと見なされるために必要な連続した失敗プローブの最小数。デフォルト値は 3 で、最小値は 1 です。

Readiness プローブ: コンテナーがトラフィックを受け入れる準備ができているかどうかを判断するために使用されます。Pod は、readiness プローブが成功した後にのみサービスバックエンドにアタッチされます。

Startup プローブ: コンテナーが正常に起動したかどうかをチェックするために、コンテナーの起動時にのみ実行されます。Liveness ProbeReadiness Probe は、startup プローブが成功した後にのみ実行されます。

説明

startup プローブは、バージョン 1.18 以降を実行している Kubernetes クラスターでのみサポートされています。

ライフサイクル

image

設定項目

説明

起動コマンド

コンテナーの起動前コマンドとパラメーターを設定します。起動コマンドとパラメーターは、コンテナーの起動時に実行されるアクションを定義し、アプリケーションサービスを初期化するために使用されます。これは、特定の環境変数、マウントポイント、またはポートマッピングを必要とするアプリケーションのデプロイメントに適しています。

Post-start

コンテナーの起動後に実行されるコマンドを設定します。Post-start コマンドは、コンテナーの起動後に特定タスク (設定の初期化やスクリプトの実行など) を実行するために使用されます。これは、メインプロセスが開始する前に準備作業を完了する必要があるシナリオに適しています。

Pre-stop

コンテナーの停止前コマンドを設定します。Pre-stop コマンドは、コンテナー内のアプリケーションプロセスをシャットダウンするために使用され、データ整合性と正常なサービス終了を保証します。これは、データ損失やサービス異常を避けるために安全なシャットダウンが必要なシナリオに適しています。

コンテナーのライフサイクルに対して、起動コマンド、post-start、および pre-stop ハンドラーを設定できます。詳細については、「ライフサイクルの設定」をご参照ください。

ボリューム

設定項目

説明

ローカルストレージの追加

ノードから Pod にローカルストレージボリュームをマウントします。ローカルストレージボリューム内のデータはノードに保存され、ノードがシャットダウンすると利用できなくなります。ローカルストレージは、Secret、ConfigMap、およびその他のエフェメラルボリュームタイプもサポートしています。ストレージ機能は複雑です。ストレージボリュームを使用する前に、「ストレージ」を読んで ACK のストレージの基本を理解してください。

PersistentVolumeClaim の追加

コンテナー内の重要なデータを永続的に保存するために、クラウドストレージボリュームを Pod にマウントします。クラウドストレージボリュームは、クラスター外のリモートストレージサービスであり、ワーカーノードから完全に独立しており、ノードの変更の影響を受けません。ACK では、クラウドストレージボリュームは通常、ディスク、NAS、OSS などの Alibaba Cloud が提供するストレージサービスです。ストレージ機能は複雑です。ストレージボリュームを使用する前に、「ストレージ」を読んで ACK のストレージの基本を理解してください。

ログ設定

収集設定

  • Logstore: 収集されたログを保存するために、クラスターに関連付けられた Simple Log Service プロジェクトに対応する Logstore が作成されます。ログを使用する前に、「ログ管理」を読んで ACK のロギングの基本を理解してください。

  • コンテナー内のログパス: コンテナー内で収集するログのパス。Stdout に設定すると、コンテナーの標準出力ログを収集します。

カスタムタグ

カスタムタグを設定すると、タグはコンテナーのログ出力とともに収集され、ログの統計やフィルタリングなどの分析操作が容易になります。

詳細設定

設定カード

設定項目

説明

アクセス設定

Service

Service は、Pod のグループに対して固定された統一されたレイヤー 4 (トランスポート層) のエントリポイントを提供します。これは、ワークロードを公開するために必要なリソースです。Service は、仮想クラスター IPノードポートロードバランサー など、複数のタイプをサポートしています。Service を設定する前に、「Service 管理」を参照して Service の基本を理解してください。

Ingress

Ingress は、クラスター内の複数の Service に対してレイヤー 7 (アプリケーション層) のエントリポイントを提供し、ドメイン名の一致に基づいてリクエストを異なる Service に転送します。Ingress を使用する前に、Ingress コントローラーをインストールする必要があります。ACK は、さまざまなシナリオに対応するいくつかのオプションを提供しています。「Nginx Ingress、ALB Ingress、MSE Ingress の比較」を参照して選択してください。

スケーリング設定

メトリックベースのスケーリング

コンテナーのパフォーマンスメトリックを監視して自動スケーリングをトリガーします。メトリックベースのスケーリングは、ビジネス負荷が変動するときにワークロードが使用する総リソースを自動的に調整するのに役立ち、高負荷を処理するためにスケールアウトし、低負荷時にリソースを節約するためにスケールインします。詳細については、「水平ポッド自動スケーリング (HPA) の使用」をご参照ください。

スケジュールされたスケーリング

スケジュールされた時間にワークロードのスケーリングをトリガーします。これは、昼食後や夕食後のソーシャルメディアの周期的なトラフィックピークなど、ビジネス負荷が定期的に変化するシナリオに適しています。詳細については、「CronHPA を使用したスケジュールされた水平ポッド自動スケーリング」をご参照ください。

スケジューリング設定

アップグレード方法

Pod の設定が変更されたときに、ワークロードが古い Pod を新しい Pod に置き換えるメカニズム。

  • ローリングアップグレード (rollingupdate): 一度に Pod の一部を置き換え、新しい Pod が正常に実行された後にのみ次の置き換えに進みます。この方法ではサービスの中断はありませんが、ユーザーは同時に異なるバージョンの Pod にアクセスする可能性があります。

  • 再作成 (Recreate): すべての Pod を一度に置き換えます。これによりサービスが中断される可能性がありますが、すべての Pod が同じバージョンであることが保証されます。

  • ノードアフィニティ

  • Pod アフィニティ

  • Pod アンチアフィニティ

  • Toleration

アフィニティ、アンチアフィニティ、および Toleration の設定は、Pod が特定のノードで実行されることを保証するためのスケジューリングに使用されます。スケジューリング操作は複雑であり、ニーズに基づいて事前の計画が必要です。詳細な操作については、「スケジューリング」をご参照ください。

ラベルとアノテーション

Pod ラベル

このワークロードに属する各 Pod にラベルを追加します。ワークロードや Service を含むクラスター内のさまざまなリソースは、ラベルを介して Pod と一致します。ACK は、app:(application name) の形式で Pod にデフォルトのラベルを追加します。

Pod アノテーション

このワークロードに属する各 Pod にアノテーションを追加します。ACK の一部の機能はアノテーションを使用します。これらの機能を使用するときに編集できます。

サンプルワークロード YAML ファイル

apiVersion: apps/v1
kind: Deployment    # ワークロードタイプ
metadata:
  name: nginx-test
  namespace: default  # 必要に応じて名前空間を変更します
  labels:
    app: nginx
spec:
  replicas: 2  # Pod の数を指定します
  selector:
    matchLabels:
      app: nginx
  template: # Pod 設定
    metadata:
      labels: # Pod ラベル
        app: nginx 
      annotations: # Pod アノテーション
        description: "This is an application deployment"
    spec:
      containers:
      - name: nginx  # イメージ名
        image: nginx:1.7.9  # 特定のバージョンの Nginx イメージを使用します
        ports:
        - name: nginx  # 名前
          containerPort: 80  # コンテナーによって公開されるポート
          protocol: TCP  # プロトコルを TCP または UDP として指定します。デフォルトは TCP です。
        command: ["/bin/sh"]  # コンテナー起動コマンド
        args: [ "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY) && exec nginx -g 'daemon off;'"] # 変数を出力し、nginx を起動するコマンドを追加します
        stdin: true  # 標準入力を有効にします
        tty: true    # 仮想ターミナルを割り当てます
        env:
          - name: SPECIAL_LEVEL_KEY
            valueFrom:
              configMapKeyRef:
                name: special-config  # 設定項目の名前
                key: SPECIAL_LEVEL    # 設定項目のキー名
        securityContext:
          privileged: true  # true は特権モードを有効にし、false は無効にします。デフォルトは false です。
        resources:
          limits:
            cpu: "500m"               # 最大 CPU 使用量、500 ミリコア
            memory: "256Mi"           # 最大メモリ使用量、256 MiB
            ephemeral-storage: "1Gi"  # 最大エフェメラルストレージ使用量、1 GiB
          requests:
            cpu: "200m"               # 最小要求 CPU 使用量、200 ミリコア
            memory: "128Mi"           # 最小要求メモリ使用量、128 MiB
            ephemeral-storage: "500Mi" # 最小要求エフェメラルストレージ使用量、500 MiB
        livenessProbe:  # liveness プローブ設定
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:  # readiness プローブ設定
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 10
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
          readOnly: true
      volumes:
      - name: tz-config
        hostPath:
          path: /etc/localtime  # volumeMounts および volumes フィールドを使用して、ホストの /etc/localtime ファイルをコンテナー内の同じパスにマウントします。
---
# サービス
apiVersion: v1
kind: Service
metadata:
  name: nginx-test-svc
  namespace: default  # 必要に応じて名前空間を変更します
  labels:
    app: nginx
spec:
  selector:
    app: nginx  # ラベルを照合して、サービスが正しい Pod を指すようにします
  ports:
    - port: 80           # クラスター内のサービスによって提供されるポート
      targetPort: 80     # コンテナー内のアプリケーションがリッスンするポート (containerPort) を指します
      protocol: TCP      # プロトコル。デフォルトは TCP です。
  type: ClusterIP        # サービスタイプ。デフォルトは内部アクセス用の ClusterIP です。
---
# Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default  # 必要に応じて名前空間を変更します
  annotations:
    kubernetes.io/ingress.class: "nginx"  # Ingress コントローラーのタイプを指定します
    # Alibaba Cloud SLB Ingress コントローラーを使用する場合、次のように指定できます。
    # service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxxxxxxxx"
    # service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.spec.s1.small"
spec:
  rules:
    - host: foo.bar.com  # ドメイン名に置き換えます
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-service  # バックエンドサービス名
                port:
                  number: 80         # バックエンドサービスポート
  tls:  # オプション、HTTPS を有効にする場合
    - hosts:
        - foo.bar.com  # ドメイン名に置き換えます
      secretName: tls-secret  # TLS 証明書 Secret 名

リファレンス