Practice of fully automated GitOps delivery based on ACK One and ACR

背景情報

サードパーティの CI システムを使用して、以下の CI プロセスを実行できます。
CI プロセスでアプリケーションイメージが ACR レジストリに正常にプッシュされると、CD プロセスが自動的にトリガーされ、アプリケーションのコンテナイメージが更新されます。本記事の例では、ACK One GitOps が ACR レジストリの変更を自動的にモニタリングし、フィルタ条件に合致するコンテナイメージタグの更新があった場合に、以下のプロセスがトリガーされる流れを示します。

利用制限

・ACK One GitOps システムで作成されたアプリケーションにのみ適用されます。
・Kustomize または Helm のオーケストレーションレンダリングを通じて、Git システムでホストされているアプリケーションオーケストレーションにのみ適用されます。
・同期ポリシーが自動同期に設定されているアプリケーションにのみ有効です。
・プライベートイメージのプル認証情報は、GitOps システムと同じクラスターにデプロイする必要があり、クラスター間での認証情報の読み取りはサポートされていません。

前提条件

・ACK One マルチクラスター管理インスタンスが作成されていること。https://help.aliyun.com/document_detail/384048.html を参照してください。
・ACK One マルチクラスター管理インスタンスで GitOps 機能が有効化されていること。https://help.aliyun.com/document_detail/464255.html を参照してください。

クイックスタート

本例ではアプリケーションの変更を Git リポジトリにライトバックする必要があるため、まず上記の Git リポジトリを自身のアカウントにフォークする必要があります。本デモでは、フォーク後のリポジトリアドレスを使用します。

gitops-demo アプリケーションのディレクトリ構成は以下の通りです。

values.yaml ファイルでは、アプリケーションが使用するイメージタグが image.tag を通じて動的にレンダリングされます。

ステップ 1 GitOps システムでアプリケーションを作成する

GitOps システムへの接続とアクセスについては、

https://help.aliyun.com/document_detail/464255.html#section-q3r-rjg-t9k を参照してください。
Git ソースリポジトリの追加については、https://help.aliyun.com/document_detail/464259.html を参照してください。
アプリケーションの作成については、https://help.aliyun.com/document_detail/464576.html を参照してください。
本例では、UI ページを使用して gitops-demo アプリケーションを作成します。パラメータの詳細については、以下の図 2 を参照してください。
アプリケーションの実行状況を確認します。

ステップ 2 アプリケーションの自動更新を設定する

ACR レジストリにアプリケーションの新バージョンイメージをプッシュした際に、GitOps システムが新バージョンのイメージを自動的に検出し、実際の環境に自動更新できるようにします。アプリケーションの自動更新を設定する前に、以下の点を確認してください。

・GitOps システムで ACR レジストリの変更に基づきアプリケーションの自動更新をトリガーする機能は、argocd-image-updater コンポーネントが担当します。本コンポーネントは現在アルファ段階にあり、開発およびテスト環境でのみ使用することを推奨します。本番環境で使用する場合は、慎重に評価し、自己責任で行ってください。
・GitOps システムで作成されたアプリケーションは、argocd 名前空間に Application CR が生成されます。Application CR にアノテーションを追加することで、アプリケーションの自動更新を設定します。
・GitOps システムでは、ACR レジストリの変更をモニタリングするために、ACR レジストリのログインユーザー名とパスワードを手動で設定する必要があります。

(1) gitops-demo アプリケーションの Application CR を確認する
(2) gitops-demo にアノテーションを追加する
(3) ACR および Git リポジトリへのアクセス認証情報を設定する

ステップ 3 アプリケーションの自動更新をテストする

(1) ACR レジストリに新しいイメージタグをプッシュする
(2) 以下のコマンドを実行して、argocd 名前空間の argocd-image-updater コンテナのログを確認する
(3) GitHub の Git リポジトリに manifests/helm/.argocd-source-gitops-demo.yaml ファイルが自動生成されていることを確認する(Git へのライトバックが成功したことを示します)。

アプリケーションイメージの自動更新を設定する

1. 更新対象のコンテナイメージを指定して設定する

GitOps システムで作成されたアプリケーションに対して、アノテーションを設定することで、1 つ以上のコンテナイメージを自動更新対象としてマークできます。
2. イメージタグの条件付きフィルタリング
3. コンテナイメージの更新ポリシーを設定する
コンテナイメージの更新ポリシーには以下の種類があります。デフォルトのイメージ更新ポリシーは semver です。
4. Helm / Kustomize でオーケストレーションされたアプリケーションのパラメータ設定
・Helm でオーケストレーションされたアプリケーションのパラメータ設定
・Kustomize でオーケストレーションされたアプリケーションのパラメータ設定

ACR レジストリへのアクセス認証情報を設定する

GitOps システムを通じて ACR レジストリの変更を自動的にモニタリングし、アプリケーションを更新するには、以下のアクセス認証情報を設定する必要があります。ACR レジストリ関連の設定は、argocd 名前空間の argocd-image-updater-config という名前の ConfigMap に保存されます。

コンテナレジストリのクエリプレフィックスは、GitOps インストール時に現在のリージョンに基づいて動的にレンダリングされ、自動生成されます。
ACREE レジストリを使用している場合は、対応する api_url および prefix フィールドの値を置き換えてください。
secret:argocd/acr#acr の認証情報設定に基づき、argocd 名前空間に acr という名前のシークレットを作成し、ACR レジストリへのアクセス認証情報を保存する必要があります。

Git リポジトリへのアクセス認証情報を設定する

GitOps システムに Git リポジトリを追加する際にユーザー名とパスワードを設定した場合、その Git リポジトリを使用するアプリケーションには、デフォルトでアプリケーションのコンテナイメージ変更情報を Git システムにライトバックする権限が付与されます。以下のアノテーション設定を追加することで、Git 認証情報を使用できます。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.