Alibaba Cloud DevOps パイプラインと Auto Scaling を統合することで、ワンクリックでコンテナイメージを自動的にビルドし、ECI スケーリンググループにデプロイできます。
仕組み
このソリューションでは、Alibaba Cloud DevOps パイプラインを使用して、コード更新後のイメージのビルドとデプロイを自動化します。
-
パイプラインが、コードリポジトリからコンテナイメージをビルドします。
-
パイプラインが、イメージを Container Registry (ACR) に発行します。
-
パイプラインが Operation Orchestration Service (OOS) を使用して、新しいイメージを使用するようにスケーリンググループのインスタンスとスケーリング設定を更新します。
前提条件
RAM ユーザーでログインする場合は、必要な権限があることを確認してください。RAM ユーザー権限の管理
環境の設定
以下の手順に従って、ワンクリックでのイメージデプロイを設定します。
ステップ1:Container Registry (ACR) リポジトリの作成
すでに ACR リポジトリがある場合は、このステップをスキップできます。
リポジトリには、ビルドされたイメージが格納されます。
-
Container Registry コンソールにログインします。
-
ACR インスタンスを作成します。
-
上部メニューで、リージョンを選択します。
説明内部ドメイン名による VPC 通信を有効にするには、リポジトリとスケーリンググループを同じリージョンに配置してください。リージョンをまたいで設定する場合、リポジトリとスケーリンググループインスタンスの両方にパブリックネットワークアクセスが必要です。
-
[インスタンス] ページで [パーソナルインスタンス] をクリックし、インスタンスが作成されるまで待ちます。
-
インスタンスが作成されたら、インスタンス詳細ページで Docker ログインパスワードのリセット をクリックし、画面の指示に従ってパスワードを設定します。
-
-
レジストリのログインパスワードを設定した後、左側メニューで 名前空間 をクリックします。次に、名前空間を作成 をクリックし、画面の指示に従って名前空間を作成します。
-
左側メニューで リポジトリ を選択し、リポジトリの作成 をクリックします。画面の指示に従ってパラメーターを設定します。次の表に、主要なパラメーターを示します。
-
リポジトリ情報
パラメーター
説明
例
[名前空間]
前の手順で作成した名前空間を選択します。
ess_eci_test_namespace
[リポジトリ名]
リポジトリのカスタム名を入力します。
ess_eci_test_repo
[リポジトリタイプ]
プライベート を選択します。
[プライベート]
[サマリー]
リポジトリの簡単な説明を入力します。
test
-
コードソース
ローカルリポジトリ を選択し、リポジトリの作成 をクリックします。
-
-
リポジトリが作成されると、その 詳細 ページにリダイレクトされます。後で使用するために、インターネット を見つけてコピーします。
ステップ2:ECIスケーリンググループの作成
すでにスケーリンググループがある場合は、このステップをスキップできます。
スケーリンググループは、次のいずれかの方法で作成できます:
-
YAML ファイルを使用
-
Web コンソールフォームを使用
YAMLファイルの使用
Auto Scalingコンソールにログインします。
-
上部メニューでリージョンを選択します。左側メニューで スケーリンググループ をクリックし、次に スケーリンググループの作成 をクリックします。
-
YAML から作成する タブで、スケーリンググループを設定し、作成 をクリックします。このトピックでは、次の設定を使用します。詳細については、「Kubernetes YAML ファイルを使用した ECI スケーリンググループの設定」をご参照ください。
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'警告利用可能な場合は独自のアプリケーションイメージを使用してください。それ以外の場合は、サンプルのイメージを使用してください。このイメージは後でパイプラインによって置き換えられます。スケーリンググループを作成するにはイメージが必要です。
次の表にパラメーターを示します。
パラメーター
説明
例
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
Elastic IP (EIP) アドレスを自動的に割り当てるかどうか
false
コンソールフォームの使用
Auto Scalingコンソールにログインします。
-
上部メニューで、リージョンを選択します。
-
スケーリンググループを作成します。
-
左側メニューで スケーリンググループ をクリックし、次に スケーリンググループの作成 をクリックします。
-
フォームから作成する タブで、スケーリンググループを設定し、作成 をクリックします。詳細については、「スケーリンググループの作成」をご参照ください。
パラメーター
説明
例
[スケーリンググループ名]
スケーリンググループの名前を入力します。
ess-eci-test
[タイプ]
[ECI] を選択します。これにより、スケーリンググループ内のインスタンスが ECI インスタンスであることが指定されます。
ECI
[インスタンス設定ソース]
スケーリンググループの作成後にスケーリング設定を作成します。
[新規作成]
[最小インスタンス数]
スケーリンググループ内の ECI インスタンスの最小数
0
[最大インスタンス数]
スケーリンググループ内の ECI インスタンスの最大数
5
[VPC]
このスケーリンググループ内のインスタンスは、この VPC にデプロイされます。
vpc-test****-001
[VSwitch の選択]
複数のゾーンに vSwitch を指定すると、スケールアウトの成功率が向上します。
vsw-test****
-
-
スケーリンググループのスケーリング設定を作成します。
-
作成したスケーリンググループを見つけ、詳細 をクリックしてスケーリンググループの詳細ページに移動します。
-
インスタンスの設定ソース タブで スケーリング構成 をクリックし、次に スケーリング設定の作成 をクリックして スケーリング設定の作成 ページに移動します。
-
このトピックでは、次の設定を使用します。他のすべてのパラメーターはデフォルト値のままにします。設定が完了したら、設定の確認 をクリックし、次に 注文の作成 をクリックします。詳細については、「ECI インスタンスのスケーリング設定の作成」をご参照ください。
パラメーター
説明
例
[支払いモード]
要件に基づいて課金方法を選択します。
[従量課金]
[セキュリティグループ]
要件に基づいてセキュリティグループを選択します。
sg-****oer
コンテナの名前を入力します。
nginx
コンテナのイメージとバージョンを選択します。
警告利用可能な場合は独自のアプリケーションイメージを使用してください。それ以外の場合は、サンプルのイメージを使用してください。スケーリンググループを作成するにはイメージが必要です。
-
イメージ名:registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx
-
イメージタグ:latest
-
-
スケーリング構成 タブで、作成したスケーリング設定を見つけ、有効化 をクリックします。
-
ステップ3:DevOpsパイプラインの設定
Alibaba Cloud DevOps パイプラインを設定して、イメージのビルドとデプロイを自動化します。
-
スケーリンググループ ページで、公開の管理 タブをクリックし、次に [Alibaba Cloud DevOpsでリリース] をクリックします。
-
Alibaba Cloud DevOps 組織を選択し、次へ をクリックします。
重要Alibaba Cloud DevOps 組織を作成していない場合は、企業の作成 をクリックし、画面の指示に従ってください。組織を選択した後、画面の指示に従って承認を完了します。
-
パイプラインを設定します。
-
パイプラインソースを設定します。パイプラインソース セクションで 追加 をクリックし、サンプルコードソース を選択してから 追加 をクリックします。
説明独自のコードソースがある場合は、画面の指示に従ってコードリポジトリの URL を選択します。
-
イメージビルドタスクを追加します。
-
イメージビルドタスク セクションで、追加 をクリックします。
-
で、[サービス接続の作成] をクリックします。Alibaba Cloud DevOps のサービス接続管理ページにリダイレクトされます。[サービス接続の作成] をクリックします。
-
[Container Registry (ACR)] を選択して 次へ をクリックし、権限付与 でサービスを選択してから 作成 をクリックします。利用可能なサービスがない場合は、作成 をクリックして承認ページに移動します。
-
イメージビルドタスク ページに戻ります。サービス接続の選択 パラメーターで、作成したサービス接続を選択します。リポジトリ パラメーターで、作成したリポジトリを選択します。次に、追加 をクリックします。
[イメージタイプ] は [パーソナル版] に設定します。[ビルドクラスター] には [Alibaba Cloud DevOps 北京ビルドクラスター] を、[リージョン] にはターゲットリージョン (例:[中国 (杭州)]) を選択します。
-
-
デプロイタスクを追加します。
-
デプロイタスク セクションで 追加 をクリックします。サービス接続の選択 セクションで、[サービス接続の作成] をクリックします。
デプロイタスクの設定パネルで、[タスク名] を
ESS ECI Deploymentに設定し、[ビルドクラスター] では [Alibaba Cloud DevOps 北京ビルドクラスター] を選択し、[更新するコンテナ] では [nginx] を選択し、[リリースバッチ] を [2バッチ] に設定し、[バッチ方式] を [自動確認] に設定します。 -
[サービス接続タイプ] で [Auto Scaling (ESS)] を選択し、次へ をクリックしてから 作成 をクリックします。
-
イメージのデプロイ セクションで、[Alibaba Cloud Container Registryパーソナル版にビルドおよびプッシュされたイメージ.Image VPC Address] を選択し、追加 をクリックします。
説明スケーリンググループと ACR が同じリージョンにある場合は、ミラーVPCアドレス を選択することも可能です。リージョンをまたいで設定する場合、イメージをプルするためにパブリックネットワークアクセスが必要です。
-
-
新規作成が完了しました をクリックします。
-
パイプラインの実行
別の RAM ユーザーにこの機能の使用を許可するには、その RAM ユーザーが Alibaba Cloud DevOps 組織に所属しており、パイプラインの権限を持っていることを確認してください。RAM ユーザーには、少なくとも以下が必要です:
-
Alibaba Cloud DevOps (RDC) の管理権限
-
Resource Access Management (RAM) への読み取り専用アクセス権
-
OOS の管理権限
コードを更新した後、Apsara Devops での公開 タブで 実行 をクリックして、新しいイメージをビルドし、スケーリンググループにデプロイします。
-
前提条件:
-
環境が設定されていること。詳細については、「環境の設定」をご参照ください。
-
コードを更新し、コードリポジトリにプッシュしたこと。
-
-
ワンクリックでイメージをビルドしてデプロイします。
-
スケーリンググループに移動し、公開の管理 タブをクリックし、[Alibaba Cloud DevOpsでリリース] サブタブをクリックしてから、実行 をクリックします。実行履歴リストに新しいエントリが表示されます。
-
実行履歴リストで [詳細] をクリックしてパイプラインを監視します。完了後、スケーリンググループのインスタンスとスケーリング設定が自動的に更新され、新しいスケールアウトインスタンスが新しいイメージを使用するようになります。
-
インスタンスの設定ソース タブで、アクティブなスケーリング設定を見つけて 変更 をクリックし、イメージ セクションのが更新されていることを確認します。
-
手動でスケールアウトイベントをトリガーします。インスタンス タブで、新しく追加された ECI インスタンスをクリックして、新しいイメージを使用していることを確認します。
-
既存の ECI インスタンスについては、インスタンス タブに移動し、インスタンス名をクリックして詳細ページを開き、イメージが更新されていることを確認します。
-
-