ACK One GitOps は、ハイブリッドクラウド、マルチクラウド、およびマルチクラスターのシナリオで、マルチクラスターアプリケーションの継続的デリバリーを提供します。これは、マネージドオープンソースの Argo CD 上に構築されており、Application API などの Argo CD API と完全に互換性があります。オープンソースの Argo CD と比較して、ACK One GitOps は、マルチクラスター配信、マルチユーザー権限管理、すぐに使える O&M フリーの使用などの利点を提供します。ACK One GitOps をアプリケーションリリースシステムに統合するには、Go SDK を使用して Argo CD アプリケーションを作成、削除、または同期できます。このトピックでは、Argo CD v2.9.3 を例として、Go SDK を使用してアプリケーションを作成する方法を説明します。
デモコードの構成
ステップ 1: ターゲットクラスターの Server または Name を取得する
Argo CD アプリケーションでターゲットクラスターの Server または Name を指定する必要があります。
ACK One コンソールからフリートインスタンスの KubeConfig ファイルを取得し、kubectl を使用してフリートインスタンスに接続します。
詳細については、「クラスターの KubeConfig を取得し、kubectl を使用してクラスターに接続する」をご参照ください。
次のいずれかのコマンドを実行して、関連付けられているすべてのクラスターの
NameまたはServerの値のリストを取得します。1 つ選択するだけで十分です。Nameはより読みやすく、デフォルトでは<cluster id>-<cluster name>のフォーマットを使用します。Nameの値のリストを取得するkubectl get secret -nargocd -l argocd.argoproj.io/secret-type=cluster |awk 'NR>1 {print $1}'|xargs -I {} sh -c 'kubectl get secret -nargocd {} -ojsonpath="{.data.name}"|base64 -d; echo'Serverの値のリストを取得するkubectl get secret -nargocd -l argocd.argoproj.io/secret-type=cluster |awk 'NR>1 {print $1}'|xargs -I {} sh -c 'kubectl get secret -nargocd {} -ojsonpath="{.data.server}"|base64 -d; echo'
ステップ 2: トークンを取得する
フリートインスタンスにローカルユーザーを作成し、そのユーザーがアプリケーション操作を管理するためのトークンを生成します。
ローカルユーザーを作成します。
次のコマンドを実行して、Argo CD の
argocd-cmConfigMap を編集します。kubectl edit cm argocd-cm -n argocdargocd-cmConfigMap で、次のコードに示すようにlocaluser1という名前のローカルユーザーを追加します。data: accounts.localuser1: login,apiKey # ローカルユーザーが Argo CD UI と Argo CD CLI にログインし、apiKey トークンを生成できるようにします。 accounts.localuser1.enabled: "true" # ローカルユーザー localuser1 を作成します。次のコマンドを実行して、ローカルユーザーをクエリします。
argocd account list期待される出力:
NAME ENABLED CAPABILITIES admin true login localuser1 true login,apiKey # ローカルユーザー localuser1。
argocd-rbac-cmで、作成したローカルユーザーに Argo CD の Kubernetes リソースに対するロールベースのアクセス制御 (RBAC) 権限を付与します。たとえば、アプリケーション、クラスター、プロジェクトなどのリソースに対する読み取りおよび書き込み権限を持つ admin ロールを付与できます。Argo CD RBAC 権限の詳細については、「ユーザーの Argo CD RBAC を構成する」をご参照ください。
次のコマンドを実行して、Argo CD の
argocd-rbac-cmConfigMap を編集します。kubectl edit cm argocd-rbac-cm -n argocdargocd-rbac-cmConfigMap ファイルで、次の例に示すようにローカルユーザーに権限を付与します。重要この ConfigMap ファイル内の既存の構成は変更しないでください。
data: policy.csv: | g, "14***01", role:admin # 既存の構成。変更しないでください。 g, localuser1, role:admin # 新しい構成。localuser1 を admin ロールにマッピングします。 scopes: '[uid]'
ローカルユーザーのトークンを生成します。
Argo CD CLI を使用してトークンを生成する
次のコマンドを実行してパスワードを設定し、トークンを生成します。
# パスワードを設定します。 argocd account update-password \ --account localuser1 \ --current-password <admin password> \ --new-password <localuser1-password> # localuser1 のトークンを生成します。 argocd account generate-token --account localuser1 eyJhb......Argo CD UI を使用してトークンを生成する
ACK One コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
[マルチクラスター GitOps] ページで、左上隅のフリート名の横にある
アイコンをクリックします。ドロップダウンリストから、ターゲットフリートを選択します。次に、[GitOps コンソール] をクリックします。表示されるログインページで、ユーザー名とパスワードを入力してログインします。Argo CD コンソールの左側のナビゲーションウィンドウで、[Settings] を選択し、次に [Accounts] を選択します。追加したローカルユーザーを見つけて、ユーザー名をクリックします。このトピックでは、localuser1 を例として使用します。
localuser1 のユーザーページで、Token セクションの [Generate New] をクリックし、トークンを保存します。
ステップ 3: アプリケーション操作のサンプルコード
次のサンプルコードは、アプリケーションの作成、同期、詳細の取得、更新、削除などのアプリケーション操作を実行する方法を示しています。
メインエントリポイント。
説明<argocd server lb ip>を Argo CD サーバーのロードバランサーの IP アドレスに置き換えます。これは、kubectl get svc -nargocd argocd-server -ojsonpath='{.status.loadBalancer.ingress[0].ip}'コマンドを実行して取得できます。local user tokenをステップ 2: トークンを取得するで取得したトークンに置き換えます。
アプリケーション管理のサンプルコード。
このコードは Argo CD apiclient に基づいています。
ClusterName、ClusterServer、およびGitRepoURLを置き換える必要があります。
go.mod の構成
Argo CD Go パッケージを Go プロジェクトにインポートすると、依存関係をダウンロードするときに「unknown revision v0.0.0」エラーが発生することがあります。このエラーは、Argo CD が、go.mod ファイルにこの v0.0.0 バージョンが含まれている Kubernetes パッケージに直接依存しているために発生します。
`replace` ディレクティブを追加することで、この問題を解決できます。詳細については、コミュニティドキュメント「Importing Argo CD go packages」をご参照ください。ただし、`replace` ディレクティブで必要な依存関係のバージョンは、Argo CD のバージョンによって異なります。`replace` ディレクティブの Kubernetes パッケージのバージョンを、Argo CD のバージョンと一致するように設定する必要があります。
このトピックのデモでは、Argo CD v2.9.3 の Go パッケージを使用します。したがって、`replace` ディレクティブのすべての Kubernetes パッケージを、Argo CD v2.9.3 に対応する v0.24.17 に設定する必要があります。次のコードは、完全な go.mod の例です。
リファレンス
ACK One GitOps の特徴の詳細については、「GitOps の概要」をご参照ください。
GitOps を使用してマルチクラスターアプリケーションを公開する方法のチュートリアルについては、「GitOps クイックスタート」をご参照ください。