Argo CD は、宣言型 GitOps コンセプトに従う Kubernetes の継続的デプロイメント ツールです。 Argo CD は、Git リポジトリが変更されると、アプリケーションを自動的に同期してデプロイします。 Argo CD は GitOps モデルに従い、Git リポジトリを真のソースとして使用して、目的のアプリケーション状態を定義します。 Argo CD はさまざまな Kubernetes マニフェストをサポートしています。
構成管理プラグインとして構成されたカスタム構成管理ツール Argo CD は、指定されたターゲット環境に目的のアプリケーション状態を自動的に展開します。アプリケーションのデプロイメントでは、ブランチやタグの更新を追跡したり、Git コミット時にマニフェストの指定されたバージョンに固定したりできます。 建築ArgoCD アーキテクチャ Argo CD は、実行中のアプリケーションを継続的に監視し、現在のライブ状態と目的のターゲット状態 (Git リポジトリで指定) を比較する Kubernetes コントローラーを介して実装されます。デプロイされたアプリケーションの実際の状態がターゲットの状態と異なる場合、OutOfSync と見なされます。 Argo CD はこれらの違いを報告し、状態を目的のターゲット状態に自動または手動で同期するためのツールを提供します。 Git リポジトリ内の目的のターゲット状態に加えられた変更は、指定されたターゲット環境に自動的に適用され、フィードバックされます。 以下は、Argo CD の主なコンポーネントの簡単な紹介です。 API サービス: API サービスは、Web UI、CLI、CI/CD システムで使用されるインターフェースを公開する gRPC/REST サービスです。以下の機能があります。
リポジトリ サービス:リポジトリ サービスは、アプリケーション マニフェストを保持する Git リポジトリのローカル キャッシュを維持する内部サービスです。次の入力が提供された場合、Kubernetes マニフェストを生成して返す役割を担います。
アプリケーション コントローラー:アプリケーション コントローラーは、実行中のアプリケーションを継続的に監視し、現在のライブ状態と目的のターゲット状態 (リポジトリで指定) を比較する Kubernetes コントローラーです。アプリケーションの OutOfSync 状態を検出し、状態を同期するためのアクションを実行します。ユーザー定義のライフサイクル イベント フック (PreSync、Sync、PostSync) を呼び出す役割を担います。 関数
コアコンセプト
インストールもちろん、前提条件として、kubectl からアクセスできる Kubernetes クラスターが必要です。次のコマンドを使用してください。ここでは最新の安定バージョン v2.0.4 をインストールします。
実稼働環境で使用する場合は、次のコマンドを使用して HA 高可用性バージョンをデプロイできます。
これにより、新しい名前空間 argocd が作成され、そこに Argo CD サービスとアプリケーション リソースがデプロイされます。
次に、Argo CD の操作を容易にするために CLI ツールをローカルにインストールできます。 Argo CD の最新バージョンは、Argo CD Git リポジトリのリリース ページ (https://github.com/argoproj/argo-cd/releases/latest) で確認するか、次のコマンドを実行してバージョンを取得できます。
次のコマンドの VERSION を、ダウンロードする Argo CD のバージョンに置き換えます。
argocd CLI に実行権限を付与します。
これで、argocd コマンドが使用できるようになります。 Mac を使用している場合は、brew install argocd を使用して直接インストールできます。 Argo CD は、gRPC サーバー (CLI によって使用される) と HTTP/HTTPS サーバー (UI によって使用される) を実行します。両方のプロトコルは、argocd-server サーバーによって次のポートで公開されます。
Ingress を構成することでサービスを外部に公開できます。ここでも、設定には Traefik の IngressRoute を使用します。その他の Ingress コントローラーの設定については、公式ドキュメント https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/ を参照してください。 Traefik は同じポートで TCP 接続と HTTP 接続の両方を処理できるため、HTTP サービスと gRPC サービスを公開するために複数の IngressRoutes を定義する必要はありません。その後、API サービスは TLS を無効にして実行する必要があります。 argocd-server デプロイメントを編集して、argocd-server コマンドに --insecure フラグを追加します。
次に、以下に示すように IngressRoute リソース オブジェクトを作成します。 http サービスを https サービスに強制的にリダイレクトできる redirect-https ミドルウェアを作成しました。
作成が完了すると、argocd.k8s.local を通じて Argo CD サービスにアクセスできるようになります。ただし、ここで設定する証明書は自己署名されているため、初めてアクセスするときに安全ではないというメッセージが表示されることに注意してください。強制的にジャンプするだけです: アルゴCDUI デフォルトでは、管理者アカウントの初期パスワードは自動的に生成され、Argo CD インストールの名前空間にある password という名前の Secret オブジェクトの argocd-initial-admin-secret フィールドにプレーンテキストで保存されます。これを取得するには、次のコマンドを使用できます。
ユーザー名 admin と上記のパスワード出力を使用してダッシュボードにログインします。 ArgoCD CLI コマンドライン ツールを使用してログインすることもできます。
CLI に正常にログインしたら、次のコマンドを使用してパスワードを変更できます。
クラスターの構成Argo CD は複数のクラスターへのアプリケーションのデプロイをサポートしているため、アプリケーションを外部クラスターにデプロイする場合は、まず外部クラスターの認証情報を Argo CD に登録する必要があります。内部的にデプロイする場合 (Argo CD を実行している同じクラスター、デフォルトでは構成は不要)、アプリケーションの K8S APIServer アドレスとして https://kubernetes.default.svc を使用する必要があります。 まず、現在の kubeconfig 内のすべてのクラスター コンテキストを一覧表示します。
リストからコンテキスト名を選択し、argocd cluster add CONTEXTNAME に指定します。たとえば、docker-desktop コンテキストの場合は、次を実行します。
上記のコマンドは、ServiceAccount (argocd-manager) を kubectl コンテキストの kube-system 名前空間にインストールし、ServiceAccount を管理者レベルの ClusterRole にバインドします。 Argo CD はこの ServiceAccount トークンを使用してタスク管理 (展開/監視) を実行します。
アプリケーションを作成するGit リポジトリ https://github.com/argoproj/argocd-example-apps.git は、Argo CD の動作を示すために使用できるゲストブック アプリケーションを含むサンプル リポジトリです。 CLI 経由でアプリケーションを作成するargocd app create xxx コマンドを使用してアプリケーションを作成できます。
次のコマンドを実行するだけです。
UI 経由でアプリケーションを作成するCLI ツールを使用してアプリケーションを作成するだけでなく、UI インターフェースを使用してアプリケーションを作成することもできます。 argocd.k8s.local ページに移動してログインし、以下に示すように「+ 新しいアプリ」ボタンをクリックします。 新しいアプリ アプリケーションに guestbook という名前を付け、デフォルトのプロジェクトを使用し、同期ポリシーを手動に設定します。 アプリケーションを構成する 次に、リポジトリ URL を https://github.com/argoproj/argocd-example-apps.git として設定します。何らかの理由により、Gitee に移行されたリポジトリ アドレス https://gitee.com/cnych/argocd-example-apps を使用します。リビジョンを HEAD に設定し、パスを guestbook に設定します。 リポジトリを構成する 次に、下の [宛先] セクションで、クラスターを in-cluster に設定し、名前空間を default に設定します。 クラスターの構成 上記の情報を入力したら、ページ上部の「作成」をクリックしてゲストブック アプリケーションを作成します。作成が完了すると、現在のアプリケーションが OutOfSync 状態になっていることがわかります。 ゲストブックアプリケーション アプリケーションをデプロイする上記のアプリケーションを作成するときに使用した同期戦略は手動であるため、アプリケーションは作成後に自動的にデプロイされず、手動でアプリケーションをデプロイする必要があります。 CLI および UI インターフェイスを介して同期することもできます。 CLIを使用して同期するアプリケーションが作成されたら、次のコマンドでそのステータスを表示できます。
アプリケーションはまだデプロイされておらず、Kubernetes リソースもまだ作成されていないため、アプリケーションの状態は初期の OutOfSync 状態にあります。アプリケーションを同期 (デプロイ) するには、次のコマンドを実行します。
このコマンドは、Git リポジトリからリソース リストを取得し、kubectl apply を実行してアプリケーションをデプロイします。上記のコマンドを実行すると、ゲストブック アプリケーションがクラスター内で実行されます。これで、リソース コンポーネント、ログ、イベントを表示し、ヘルス ステータスを評価できるようになりました。 UI経由で同期する同期を開始するには、UI インターフェイスに同期ボタンを追加するだけです。 同期操作 同期が完了すると、リソースのステータスを確認できます。 同期完了 さまざまな視点から見ることもできます: 同期完了 kubectl を通じてデプロイされたリソースを表示することもできます。
Git リポジトリから同期した guestbook ディレクトリの下のリソース ステータスも同期されており、同期が成功したことが証明されています。 望ましい状態 |
>>: プロデューサー実装ロジック - Kafka 知識システム (II)
Kafka は人気のあるメッセージ キュー ミドルウェアです。大量のデータをリアルタイムで処理でき、...
2009 年に設立された Hostkvm は最近、オーストラリアの VPS 事業を開始しました。この...
Internet of Everythingの時代の到来により、IoTデバイスの数は爆発的に増加しま...
インターネットの発展に伴い、常に新しいものが登場しています。近年人気が高まっている「テナントグループ...
入札ランキングの仕組みは、すべての入札者が非常に関心を持っているトピックです。 Baidu の入札シ...
kvmla は日本の大阪にある新しいデータセンターに移転しました。これは依然として KVM 仮想 V...
インターネットの誕生以来、ブログマーケティング、フォーラムマーケティング、電子メールマーケティング、...
Catalysthost は 2011 年初頭に設立され、現在は非常に評判の高い VPS プロバイダ...
今日は木曜日なのでいい日です。ウェブサイトの改訂は1か月ほど続いていて、スパイダーは先週リリースされ...
デジタル変革の潮流の中で、データは企業の中核資産とみなされ、データセキュリティをどのように確保するか...
[[333521]]この記事はWeChat公式アカウント「Xintai Cloud Service...
[[281973]] 「Kubernetes がダンプ トラックである理由」では、ダンプ トラックが...
「顧客の成功」という概念は古くから存在しています。 Wikipedia によると、カスタマー サクセ...
中国、北京、2017 年 12 月 7 日 – PTC は本日、北京で 2017 PTC Forum...
bcyhost(香港百草網絡有限公司)は、新たに設立されたVPSブランドです。コンピューター室に自社...