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)
2012年2月6日夕方、GoogleのPR値が更新され、ウェブサイトの新しいドメイン名はPR値3を取...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス今日の午後、同旺ビジネス...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています4年に一度...
近年、モバイルラーニングと人工知能は、人々が機械と連携する方法に大きな影響を与えており、個々の顧客に...
Weiboの時価総額は、かなり長い間、95億ドル前後で推移している。かつて中国のオンライン「世論の場...
Spartanhost は、実は長い間、誰もがよく知っています。HostCat は今年、Sparta...
4月18日、「ビリビリの生放送部門が従業員を解雇する可能性」が話題となった。これに対しビリビリは「ラ...
Yardvps は長い間割引プロモーションをリリースしていませんでした。今回はアップグレード後に 2...
クラウドベースのワークロードとアプリケーションをオンプレミスの施設に移行する場合は、計画を立て、開始...
スクリーン支配は近年のSEOの流行語とみなされるべきです。最初は少し神秘的で「支配的」であり、多くの...
上海警察は8日、青浦市公安局が綿密な捜査を経て省市をまたぐインターネット詐欺事件を摘発し、機械設備販...
公開アカウントへのトラフィックを誘導し、フォロワーを増やすという問題について、多くの友人は、自分は仏...
世界は「モバイル」時代へと移行しており、アプリケーションはデータベース テーブルに保存された重要な最...
[元記事は51CTO.comより] 6月24日から26日まで、KubeCon + CloudNati...
毎日、何百万、何千万もの 404 プロンプト ページが表示されます。このような退屈なページ リソース...