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)
大学の期末試験中にストレスを感じる若い学生疫病の影響で、最も長い連休と最も家にこもる春節が誕生し、1...
開発作業において、分散キャッシュ高可用性ソリューション(Redis キャッシュ高可用性ソリューション...
クラウド リポジトリにデータを保存することは理にかなっており、多くの利点があります。ただし、重要なデ...
先週の朝、あるネットユーザーからメールを受け取りました。彼のウェブサイトは数か月前からダウンしており...
ftpit は昨年新年のプロモーションを行いましたが、低価格で販売している業者と比べると、割引額は特...
最近、AWS 中国 (寧夏) リージョン (Western Cloud Data が運営) と AW...
[[421933]] kafka_2.8.0 より前では、kafka を実行するには依然として zo...
northhosts.co.uk は英国に登録されたホスティング会社です。公式ウェブサイトの下部に、...
ElasticSearchとは何か、なぜESを使うべきなのかオープンソースの分散検索および分析エンジ...
SimpleNode.de は 2009 年に設立されました。現在の VPS サーバーは Incer...
設立以来、QingCloud の位置付けは、当初の「クラウド、フリーコンピューティングの礎」から、現...
情報爆発の時代です。企業はニュース情報をどう広報やマーケティングに活用できるでしょうか。企業の声をタ...
constantvps のさらに 2 つの特徴的な VPS をお勧めしたいと思います。どちらも KV...
今日、偶然クライアントのサイトを検査したところ、非常に奇妙な現象が見つかりました。2ページ目と3ペー...
数日前、WeChatとQQ Spaceで、あるコンセプトが言及されました。入札はキーワードに基づいて...