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

Auto Scaling:Apsara DevOps パイプラインを使用して Elastic Container Instance のイメージを自動的にビルドおよび更新する

最終更新日:Apr 09, 2025

スケーリンググループに Elastic Container Instance が含まれている場合、イメージを手動で更新すると、時間がかかり、エラーが発生しやすくなります。これらの問題を回避するために、Auto Scaling の Apsara DevOps パイプライン機能を使用することをお勧めします。これにより、イメージのビルド、更新、および Elastic Container Instance へのデプロイが自動化されます。

実装の原則

このソリューションは、Apsara DevOps パイプラインと Auto Scaling を統合して、コードの更新後に Elastic Container Instance 全体でイメージを迅速にビルドおよびデプロイできるようにします。実装プロセス:

  1. ビルド:Apsara DevOps パイプラインは、コードリポジトリからコードをパッケージ化し、Docker イメージにビルドします。

  2. 公開:次に、Apsara DevOps パイプラインは Docker イメージを Container Registry リポジトリに公開します。

  3. 更新:公開後、Apsara DevOps パイプラインは CloudOps Orchestration Service(OOS)を使用して、スケーリンググループ内の Elastic Container Instance のイメージ(新しいインスタンスに使用されるスケーリング設定を含む)を更新します。

Apsara DevOps の詳細については、「Alibaba Cloud DevOps とは」をご参照ください。

準備

Resource Access Management(RAM)ユーザーを使用している場合は、次の権限を持っていることを確認してください。 RAM ユーザーに権限を付与する方法については、「RAM ユーザーに権限を付与する」をご参照ください。

カスタムポリシーの例

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ess:*",
                "cr:*",
                "rdc:*",
                "vpc:Describe*",
                "ecs:DescribeSecurityGroups",
                "oos:ListExecutions",
                "oos:ListTaskExecutions",
                "oos:GetExecutionTemplate",
                "eci:Describe*",
                "eci:ListUsage",
                "oss:GetExecutionTemplate",
                "ram:GetRole"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

環境を構成する

スケーリンググループ内の Elastic Container Instance 全体でイメージをビルドおよびデプロイするには、次の手順を実行する必要があります。

手順 1:Alibaba Cloud Container Registry リポジトリを作成する

重要

既存の Container Registry リポジトリがある場合は、この手順をスキップできます。

Container Registry リポジトリを作成した後、イメージをリポジトリに保存できます。

  1. Container Registry コンソール にログインします。

  2. Container Registry インスタンスを作成します。

    1. 上部のナビゲーションバーで、Container Registry リージョンを選択します。

      説明

      VPC(Virtual Private Cloud)を介したドメイン名ベースのアクセスをサポートするには、スケーリンググループと同じリージョンに Container Registry リポジトリを作成することをお勧めします。スケーリンググループとは異なるリージョンに Container Registry リポジトリを作成する場合は、Container Registry リポジトリとスケーリンググループ内の Elastic Container Instance のインターネットアクセスを有効にする必要があります。

    2. インスタンス ページで、[Personal Edition のインスタンス] をクリックしてインスタンスを作成します。

      image

    3. インスタンスが作成された後、Personal Edition のインスタンス[個人版のインスタンス] ページに移動し、 をクリックします。

      image

  3. ログインパスワードをリセットした後、左側のナビゲーションウィンドウで [名前空間] をクリックし、次に [名前空間の作成] をクリックして名前空間を作成します。

  4. 左側のナビゲーションウィンドウで [リポジトリ] をクリックし、次に [リポジトリの作成] をクリックします。 リポジトリの作成 ダイアログボックスで、ビジネス要件に基づいてパラメータを構成します。次の表にパラメータを示します。

    • リポジトリ情報

      パラメータ

      説明

      名前空間

      手順 3 で作成した名前空間を選択します。

      ess_eci_test_namespace

      リポジトリ名

      リポジトリのカスタム名を入力します。

      ess_eci_test_repo

      リポジトリタイプ

      プライベートを選択します。

      プライベート

      概要

      リポジトリを作成する理由を入力します。

      テスト

    • コードソース

      コードソース ステップで、[ローカルリポジトリ] を選択し、[リポジトリの作成] をクリックします。

  5. リポジトリが作成された後、[詳細] ページに移動し、パブリックエンドポイントを見つけ、後で使用するためにエンドポイントをコピーします。

手順 2:Elastic Container Instance タイプのスケーリンググループを作成する

重要

既存のスケーリンググループがある場合は、この手順をスキップできます。

スケーリンググループを作成するには、次のいずれかの方法を使用できます。

  • YAML ファイルを使用してスケーリンググループを作成する

  • フォームを使用してスケーリンググループを作成する

方法 1:YAML ファイルを使用してスケーリンググループを作成する

  1. Auto Scaling コンソール にログインします。

  2. 上部のナビゲーションバーで、Auto Scaling リージョンを選択します。左側のナビゲーションウィンドウで、[スケーリンググループ] をクリックします。 スケーリンググループ作成 ページで、 をクリックします。

  3. [YAML ファイルで作成] タブで、指示に従ってパラメータを構成してスケーリンググループを作成し、[作成] をクリックします。このトピックでは、次の YAML ファイルが使用されます。 YAML ファイルを使用してスケーリンググループを作成する方法の詳細については、「Kubernetes YAML ファイルを使用して Elastic Container Instance タイプのスケーリンググループを構成する」をご参照ください。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo
      annotations:
        k8s.aliyun.com/ess-scaling-group-name: ess-eci-test
        k8s.aliyun.com/ess-scaling-group-min-size: 0
        k8s.aliyun.com/ess-scaling-group-max-size: 5
    spec:
      selector:
        matchLabels:
          app: nginx-demo
      replicas: 0
      template:
        metadata:
          labels:
            app: nginx-demo
          annotations:
            k8s.aliyun.com/eci-with-eip: false
        spec:
          containers:
            - name: nginx
              image: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:latest
              ports:
                - containerPort: 80
                  name: http
                - containerPort: 443
                  name: https
              resources:
                requests:
                  memory: 0.05Gi
                  cpu: 50m
                limits:
                  memory: 1Gi
                  cpu: '1'
    警告

    すでにイメージがある場合は、サンプル YAML ファイルのイメージを自分のイメージに置き換えます。イメージがない場合は、サンプル YMAL ファイルのイメージを使用します。パイプラインの実行時に自動的に置き換えられます。イメージを指定しないと、スケーリンググループを作成できません。

    パラメータ

    パラメータ

    説明

    k8s.aliyun.com/ess-scaling-group-name

    スケーリンググループの名前。

    ess-eci-test

    k8s.aliyun.com/ess-scaling-group-min-size

    スケーリンググループ内のインスタンス数の下限。スケーリンググループ内のインスタンス数がこのパラメータの値よりも少ない場合、Auto Scaling はスケーリンググループ内にインスタンスを自動的に作成して下限に到達させます。

    0

    k8s.aliyun.com/ess-scaling-group-max-size

    スケーリンググループ内のインスタンス数の上限。スケーリンググループ内のインスタンス数がこのパラメータの値よりも多い場合、Auto Scaling はインスタンス数が上限に達するまでスケーリンググループからインスタンスを自動的に削除します。

    5

    k8s.aliyun.com/eci-with-eip

    EIP(Elastic IP Address)を自動的に作成し、EIP を Elastic Container Instance に関連付けるかどうかを指定します。

    false

方法 2:フォームを使用してスケーリンググループを作成する

  1. Auto Scaling コンソール にログインします。

  2. 上部のナビゲーションバーで、Auto Scaling リージョンを選択します。

  3. スケーリンググループを作成します。

    1. 左側のナビゲーションウィンドウで、[スケーリンググループ] をクリックします。 スケーリンググループ作成 ページで、 をクリックします。

    2. [フォームで作成] タブで、指示に従ってパラメータを構成してスケーリンググループを作成し、[作成] をクリックします。次の表に、この例で使用されるパラメータ設定を示します。含まれていないパラメータはすべてデフォルト値を保持します。詳細については、「スケーリンググループを作成する」をご参照ください。

      パラメータ

      説明

      スケーリンググループ名

      スケーリンググループの名前を入力します。

      ess-eci-test

      タイプ

      ECI を選択します。これは、スケーリンググループに Elastic Container Instance が含まれていることを指定します。

      ECI

      インスタンス構成ソース

      この段階では、Elastic Container Instance を自動的に作成するためのテンプレートを指定しないでください。スケーリンググループを作成した後、スケーリング設定の作成を続行する必要があります。

      新規作成

      最小インスタンス数

      このパラメータを 1 に設定すると、スケーリンググループには少なくとも 1 つの Elastic Container Instance が含まれている必要があります。

      0

      最大インスタンス数

      このパラメータを 5 に設定すると、スケーリンググループには最大 5 つの Elastic Container Instance を含めることができます。

      5

      VPC

      VPC を指定します。このスケーリンググループに含まれる Elastic Container Instance は、この VPC に存在します。

      vpc-test****-001

      vSwitch

      スケールアウト操作の成功率を向上させるために、異なるゾーンから複数の vSwitch を指定します。

      vsw-test****

  4. スケーリンググループのスケーリング設定を作成します。

    1. 作成したスケーリンググループを見つけ、[アクション] 列の [詳細] をクリックして、スケーリンググループの詳細ページに移動します。

    2. [インスタンス構成ソース] タブで、[スケーリング設定] をクリックします。次に、[スケーリング設定の作成] をクリックして、[スケーリング設定の作成] ページに移動します。

    3. 指示に従ってパラメータを構成します。 スケーリング構成のプレビュー[スケーリング設定のプレビュー] ダイアログボックスで、有効にするElastic Container Instance タイプのスケーリング設定を作成する をクリックします。次に、 をクリックします。次の表に、この例で使用されるパラメータ設定を示します。含まれていないパラメータはすべてデフォルト値を保持します。スケーリング設定の作成方法の詳細については、「」をご参照ください。

      パラメータ

      説明

      課金方法

      ビジネス要件に基づいて課金方法を選択します。

      従量課金制

      セキュリティグループ

      ビジネス要件に基づいてセキュリティグループを選択します。

      sg-****oer

      コンテナ設定 > コンテナ名

      カスタムコンテナ名を入力します。

      nginx

      コンテナ設定 > イメージ

      ビジネス要件に基づいてイメージとイメージタグを選択します。

      警告

      既存のイメージがある場合は、既存のイメージを使用できます。既存のイメージがない場合は、サンプルイメージを使用することをお勧めします。イメージを指定しないと、スケーリンググループを作成できません。

      • イメージ名:registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx。

      • イメージタグ:latest。

    4. [スケーリング設定] タブで、作成したスケーリング設定を見つけ、[アクション] 列の アクション をクリックして、スケーリング設定を有効にします。

手順 3: Apsara DevOps パイプラインを構成する

イメージのパッケージ、リリース、およびデプロイを自動化するには、Apsara DevOps パイプラインを構成する必要があります。

  1. スケーリンググループの詳細ページで、[公開管理] タブをクリックし、次に [Apsara DevOps を使用して公開] をクリックします。

    image

  2. 組織の関連付け ドロップダウンリストから組織を選択し、 [次へ] をクリックします。

    重要

    組織がない場合は、[組織の作成] をクリックして、指示に従って組織を作成します。組織を作成して選択した後、指示に従って認証を完了します。

  3. パイプラインを構成します。

    1. パイプラインソースを構成します。 [パイプラインソース] セクションで、[+ 追加] をクリックし、次に [サンプルコードソース] をクリックします。次に、[追加] をクリックします。

      image

      説明

      独自のコードリポジトリがある場合は、指示に従ってコードリポジトリの URL を選択できます。

    2. イメージビルドタスクを追加します。

      1. [イメージビルドタスク] セクションで、[+ 追加] をクリックします。

      2. [イメージビルドタスク] パネルの [サービス接続の選択] セクションで、[サービス接続の作成] をクリックします。 ページが表示されたら、[サービス接続の作成] をクリックします。

        image

      3. 表示されるダイアログボックスで、[Container Registry(ACR)] を選択し、[次へ] をクリックします。次に、[サービスの認証] を選択します。 サービスを承認する[作成][作成] ボタンが表示されない場合は、 をクリックして認証ページに移動し、 をクリックします。

      4. [イメージビルドタスク] パネルに戻ります。 [サービス接続] ドロップダウンリストで、作成したサービス接続を選択します。 [イメージリポジトリ] ドロップダウンリストで、作成したイメージリポジトリを選択し、[追加] をクリックします。

        image

    3. デプロイタスクを追加します。

      1. [デプロイタスク] セクションで、[+ 追加] をクリックします。 [サービス接続の選択] セクションで、[サービス接続の作成] をクリックします。

        image

      2. 表示されるダイアログボックスで、[Auto Scaling] を選択します。 [次へ] をクリックし、次に [作成] をクリックします。

      3. [イメージのデプロイ] セクションで、[イメージをビルドして Alibaba Cloud Image Warehouse 個人版.Mirror VPC アドレスにプッシュする] を選択し、[追加] をクリックします。

        説明

        スケーリンググループとイメージが同じリージョンにある場合は、[イメージをビルドして Alibaba Cloud Image Warehouse 個人版.Mirror VPC アドレスにプッシュする] を選択することをお勧めします。他の場合にイメージをプルする場合は、Elastic Container Instance がインターネットにアクセスできることを確認してください。

    4. [作成] をクリックします。

ユースケース:イメージのビルドとデプロイ

重要

別の RAM ユーザーがこの機能を使用する場合は、その RAM ユーザーが組織に属しており、パイプライン権限を持っていることを確認してください。 RAM ユーザーは、次の権限も持っている必要があります。

  • Apsara DevOps RDC リソースを管理する権限

  • RAM リソースの読み取り専用権限

  • OOS リソースを管理する権限

コードを更新した後、[Apsara DevOps を使用して公開] タブの [実行] をクリックして、新しいコードをパッケージ化し、スケーリンググループにデプロイします。

  1. 次の準備を完了します。

    • 環境を構成します。詳細については、「環境を構成する」をご参照ください。

    • コードを更新し、コードリポジトリにプッシュします。

  2. 数回クリックするだけでイメージをビルドおよびデプロイします。

    1. スケーリンググループの詳細ページに移動します。 [公開管理] タブをクリックし、[Apsara DevOps を使用して公開] タブをクリックし、次に [実行] をクリックします。実行レコードのリストに新しいレコードが追加されます。

      image

    2. レコードリストで、[詳細] をクリックしてパイプラインの詳細を表示します。パイプラインが実行されるまで待ちます。パイプラインが完了すると、スケーリンググループの Elastic Container Instance とスケーリング設定が自動的に更新されます。新しいインスタンスは最新のイメージを使用します。

      image

      • [インスタンス構成ソース] タブで、アクティブなスケーリング設定を見つけ、[編集] をクリックしてスケーリング設定を確認します。 [コンテナ設定] セクションのイメージが更新されているかどうかを確認します。

      • スケールアウトイベントを手動でトリガーします。 [インスタンス] タブで、新しくスケールアウトされた Elastic Container Instance をクリックし、インスタンスが新しいイメージを使用しているかどうかを確認します。

      • スケーリンググループに 実行中 状態の Elastic Container Instance が含まれている場合は、[インスタンス] タブでインスタンス名をクリックしてインスタンス詳細ページに移動し、インスタンスイメージが更新されているかどうかを確認します。