Argo Workflows は、YAML でワークフローを定義するための直感的なツールを提供しており、CI パイプラインを迅速にセットアップおよび設定できます。クラスター内でジョブを並列実行し、必要に応じてコンピューティングリソースを動的にスケールすることで、CI パイプライン全体の効率を向上させることができます。
仕組み
Argo Workflows で CI パイプラインを構築する際、主に BuildKit を使用してコンテナイメージのビルドとプッシュを行い、BuildKit Cache を使用してイメージのビルドを高速化します。NAS を使用して Go mod キャッシュを保存することで、go test および go build プロセスが高速化され、CI パイプラインワークフロー全体が大幅にスピードアップします。
事前定義されたワークフローテンプレート
事前定義されたテンプレートを直接使用するか、カスタマイズして独自の CI ワークフローテンプレートを作成できます。この例では、BuildKit Cache と NAS を使用して Go mod キャッシュを保存し、CI パイプラインを高速化する ci-go-v1 という名前の CI ワークフローテンプレート (ClusterWorkflowTemplate) を作成する方法を示します。
操作手順
このトピックでは、パブリック Git リポジトリを使用して CI パイプラインを構築する方法を示します。ワークフローの CI パイプラインでプライベート Git リポジトリを使用する場合は、まずプライベートリポジトリをクローンする必要があります。詳細については、「CI パイプラインでプライベート Git リポジトリをクローンする」をご参照ください。
コンテナイメージのアクセス認証情報を保存する Secret とマウントされた NAS ボリュームは、送信するワークフローと同じ名前空間に存在する必要があります。
ステップ 1: ACR EE アクセス認証情報の作成
BuildKit は、主に Container Registry Enterprise Edition のアクセス認証情報を使用してイメージをプッシュします。
-
Container Registry Enterprise Edition のアクセス認証情報を設定します。詳細については、「アクセス認証情報の設定」をご参照ください。
-
次のコマンドを実行して、クラスターに Secret を作成します。この Secret は Container Registry Enterprise Edition のパスワードを保存し、BuildKit が使用します。
説明$repositoryDomainを、お使いの Container Registry Enterprise Edition イメージリポジトリのアドレスに置き換えてください。$usernameを、お使いの Container Registry Enterprise Edition イメージリポジトリのユーザー名に置き換えてください。$passwordを、お使いの Container Registry Enterprise Edition イメージリポジトリのパスワードに置き換えてください。kubectl create secret -n argo generic docker-config --from-literal="config.json={\"auths\": {\"$repositoryDomain\": {\"auth\": \"$(echo -n $username:$password|base64)\"}}}"
ステップ 2: NAS ボリュームのマウント
NAS ボリュームをマウントすると、ワークフロー内の異なるジョブ間で、クローンされたリポジトリ情報などのデータを共有できます。このボリュームは Go mod キャッシュを保存するためにも利用でき、CI パイプラインの go test および go build プロセスを高速化します。
詳細については、「ボリュームの使用」をご参照ください。
ステップ 3: テンプレートからワークフローを開始
コンソール
-
Argo コンソールにログオンします。 左側のナビゲーションペインで、[クラスターワークフローテンプレート] をクリックし、次に事前定義されたテンプレート [ci-go-v1] をクリックします。
-
「テンプレート詳細」ページで、左上隅にある[+ SUBMIT]をクリックします。パネルで、必要なパラメーターを入力し、下部にある[+ SUBMIT]をクリックします。
パラメーターの詳細については、このトピックの前半の「テンプレートパラメーターの説明」セクションをご参照ください。パラメーターを実際の値に設定してください。
ワークフローが送信されると、[ワークフロー] ページでそのステータスを確認できます:
ワークフローは、DAG として [git-checkout-pr]、[run-test]、[build-push-image] ステップを順番に実行します。すべてのノードが緑色になると、ワークフローが正常に完了したことになります。
Argo CLI
-
次の内容で
workflow.yamlという名前のファイルを作成します。要件に基づいてパラメーター値を変更してください。詳細については、「テンプレートパラメーターの説明」セクションをご参照ください。apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: ci-go-v1- labels: workflows.argoproj.io/workflow-template: ackone-ci namespace: argo 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: main - name: container_image value: "test-registry.cn-hongkong.cr.aliyuncs.com/acs/echo-server" - 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 -
次のコマンドを実行して、ワークフローを送信します。
argo submit workflow.yaml
お問い合わせ
この製品に関する提案や質問がある場合は、DingTalkグループ35688562に参加してお問い合わせください。