EventBridgeと分散Argoワークフローに基づいて、効率的で高速かつ費用効果の高いイベント駆動型自動継続統合 (CI) パイプラインを構築して、アプリケーションの配信を大幅に簡素化および高速化できます。 このトピックでは、イベント駆動型の自動CIパイプラインを構築する方法について説明します。
前提条件
ACK Oneがアクティブ化されます。
Resource Access Management (RAM) ポリシーAliyunAdcpFullAccessはRAMユーザーにアタッチされています。 詳細については、「RAM ユーザーへの権限の付与」をご参照ください。
概要
イベント駆動型自動CIパイプラインは、次の2つの部分で構成されています。
Gitイベントトリガー。 コードがGitリポジトリにコミットされると、イベントがトリガーされます。
ビルド前のテスト。 CIパイプラインは、CIシステムがDockerイメージを構築し、イメージをイメージリポジトリにプッシュする前にテストを実行します。
イメージの構築後、ACK One GitOpsなどの連続展開 (CD) システムを使用して、新しいイメージタグをKubernetesクラスターに同期できます。
この例では、イベント駆動型ソリューションは、可用性、使いやすさ、セキュリティ、およびスケーラビリティの点で利点を提供するEventBridgeを利用します。 CIパイプラインは、Cloud Native Computing Foundation (CNCF) の段階的なプロジェクトであるArgo Workflowsに基づいて構築されています。 Distributed Cloud Container Platform for Kubernetes (ACK One) ワークフロークラスターは、Argoワークフローをホストします。 これにより、安定性と可観測性が向上し、O&M機能が提供され、より高いパフォーマンスと低コストでより大きなCIパイプラインを構築できます。
ユーザーがGitリポジトリにコードをコミットします。
EventBridgeは、設定されたルールに基づいてGitイベントをキャプチャし、そのイベントをACK Oneワークフロークラスターに配信してCIパイプラインの実行をトリガーします。
ACK Oneは、ワークフロークラスターにCIパイプラインを作成し、Dockerイメージを構築して、イメージリポジトリにイメージをプッシュします。 GitOpsを使用して、画像の変更をACKクラスターに自動的に同期できます。
ステップ1: ACK OneワークフロークラスターでCI環境を準備する
Container Registry Enterprise Editionインスタンスにアクセスし、Apsara File Storage NAS (NAS) ボリュームをワークフロークラスタにマウントするための資格情報をワークフロークラスタに作成します。 詳細については、「ワークフロークラスターでのGolangプロジェクトのCIパイプラインの作成」の「手順1および手順2」をご参照ください。
説明名前空間がワークフローリソースの名前空間と同じであることを確認します。
この例では、Apps Code Repoに使用されるプロジェクトはecho-serverです。 echo-serverをGitHubアカウントにフォークし、[CIパイプラインにプライベートGitリポジトリを複製する] トピックの手順に従ってWorkflowTemplateを変更します。
手順2: EventBridgeを使用してGitイベント駆動CIパイプラインを実装する
カスタムイベントバスを作成します。
GitHubをEventBridgeと統合します。 詳細については、「GitHubの統合」をご参照ください。
(オプション) イベントルールを設定します。 この例では、次の内容を使用します。 イベントルールの設定方法の詳細については、「イベントルールの管理」をご参照ください。
イベントパターン: 次の設定は、
release-v1
ブランチからの変更のみに基づいてパイプラインをトリガーするように構成されています。{ "source": [ "github.event" ], "data": { "body": { "ref": [ "refs/heads/release-v1" ] } } }
イベントターゲットを設定します。
サービスタイプ: Container Service for Kubernetesが選択されています。
Kubernetesクラスターファイル: ACK Oneワークフロークラスターのkubeconfigファイルを入力します。
YAML: テンプレートが選択されています。
Parameters:
workflowName
パラメーターを追加し、イベントIDを設定します。{ "workflowName": "$.id" }
テンプレート: ワークフローのコンテナイメージと対応するコンテナイメージリポジトリアドレスを入力します。 以下の例は参考情報です。 実際の情報に基づいて、コンテナーイメージリポジトリのアドレスを指定します。
重要リソース設定では、
name
およびnamespace
パラメーターを設定する必要があります。generateName
パラメーターは使用できません。 リソースがデフォルトの名前空間default
に属している場合は、名前空間も指定する必要があります。apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: name: ci-go-v1-eb-${workflowName} namespace: default labels: workflows.argoproj.io/workflow-template: ackone-ci spec: arguments: parameters: - name: repo_url value: https://github.com/ivan-cai/echo-server.git - name: repo_name value: echo-server - name: target_branch value: release-v1 - name: container_image value: "YOUR-IMAGE-REGISTRY-ADDRESS" # The address of the container image repository. Replace the value based on your business requirements. - name: container_tag value: "v1.0.0" - name: dockerfile value: ./Dockerfile - name: enable_suffix_commitid value: "true" - name: enable_test value: "true" workflowTemplateRef: name: ci-go-v1 clusterScope: true
ネットワークアクセス: インターネットが選択されています。
上記の設定に基づいて、GitHubリポジトリの
release-v1
ブランチでコードを変更し、変更をコミットした後、自動化プロセスがトリガーされます。 上記の設定を確認するには、次の操作を実行します。イベントトレースを表示します。
EventBridgeコンソールにログインします。 左側のナビゲーションウィンドウで、[イベントバス] をクリックします。
イベントバスの名前をクリックします。 左側のナビゲーションウィンドウで、[イベントトラッキング] をクリックします。
[イベントトレース] ページで、イベントトレースを表示できます。
ワークフローのトポロジを表示します。
ACK Oneワークフロークラスターでワークフローのトポロジを表示します。 詳細については、「ワークフロークラスターのArgo Serverの有効化」をご参照ください。