回나 CD し て)システムを構築する方法を見てみましょう。1.GitOpsと単一真実ソース(SSOT)定義、まずGitOpsの定義を見てみましょう。 先ほどコードで宣言するクバネティスの特徴とインストール部分で確認したように、クバネティスのすべてのリソースはコードを実装できます。 ギットオプスは、これらのコードをギット(Git)に保管し、ギットに保管したコードが現在運営中の状態(Ops)と同じように合わせることを意味します。現業では、現在の運用状態をGit、Pushせずに任意に自分のローカルソースから変更するか、コマンドを変更することを禁止するためによく使用します。 任意に変更された状態では、変更履歴を追跡することは困難です。 全体の一部のクラスターだけが障害が発生して確認すると、任意に変更された部分だけを発見することは比較的一般的なケースの 1 つです。 そして、新たにシステムを構成する場合、いちいち探さなければならないなど、追加リソースが多く必要です。ギットオプスは単一真実源泉(Single Source of Truth, SSOT)概念を使用しているので、その定義を見てみましょう。 「単一真実源」は、データ管理原則の 1 つであり、特定のデータの正確で信頼できるバージョンのみがシステム全体に存在するという概念を示しています。 この原則は、一貫性、正確性、効率性を向上させる上で重要な役割を果たします。一貫性: すべてのシステム コンポーネントが同じデータ ソースを参照するため、データの一貫性が維持されます。正確性:重複や不一致の可能性が減少するため、データの正確性が向上します。効率性: データを維持管理する単一の場所があるため、更新と管理がはるかに効率的です。
<出典: Cloud Native Computing Foundation>
ギットオプスでは、Gitリポジトリがシステムの構成と状態に対する単一の真実源として機能します。 コードとインフラストラクチャの完全な状態をGitストレージにバージョン化および保存することにより、宣言的なアプローチによりシステムを管理および自動化します。 現在のオペレーティング システムを個々のユーザーが任意にコマンドに変更したり、コミットしていないローカル ソースに変更したりすることなく、中央化された旗ソースでのみ変更することを意味します。 ギットオプスでシステムの一貫性が維持され、協業生産性が向上することが筆者が考える最大の利点です。 すべてのシステムとユーザーが同じデータ ソースを参照するため、情報の不一致が発生する確率が低下し、重複したデータを管理および同期するために必要な労力とコストが削減されます。 これにより、システム全体の運用効率が向上します。 検索などを通じて以前の状態を照会する機能もよく使います。しかし、この原則を実現することはしばしば困難です。 忙しい仕事に原則に従いたくない多くの誘惑があります。 ギットオプス関連ツールを使用してポリシーを強制する必要があり、正しいデータアーキテクチャ、プロセス、管理ツールが必要です。 GitOpsを実装するために複数のツールを使用できますが、CD(連続配布、Continuous Deployment)に使用するツールはArgoCDを最も多く使用しています。 複数のCDツールの中でArgoCDは1)使いやすいUI提供2)他のツールと統合しやすく、3)ユーザーが多いため事例が豊富です。
<発売元 : 아르고 CD>
ArgoCDは、指定されたGitリポジトリとクバネティスクラスターを継続的に監視します。 ストレージの変更が検出されると、ArgoCDはクラスターの状態をストレージの状態と自動的に同期します。 もちろん、状況に応じて手動同期オプションも提供されます。 そして、問題が発生すると、以前の状態に簡単にロールバックできます。 Gitのバージョン管理のおかげで、すべての変更が追跡されるため、安定した状態に復元しやすいです。そしてArgoCDダッシュボードを通じてアプリケーションのリアルタイム状態、同期状態、Healthを視覚的に確認することができます。 ヘルムでアプリケーションを配布すると、リソース全体を把握するのが難しいですが、ArgoCDダッシュボードを通じて便利に把握でき、多くのユーザーが好む機能です。 ユーザー別にProject別にアクセス制御権限を設定し、チームメンバーが適切なアクセスレベルを持つようにすることができます。 Argo CDは、Gitリポジトリを単一の真実ソースとして使用して、クバネティスクラスターの状態を継続的に同期し、監視します。 これにより、開発者と運営チームが協業を強化し、安定的かつ迅速な配布を実現できます。それでは実習を通じて詳しく調べてみましょう。実習内訳1.ArgoCDインストール2.ArgoCDを利用してNGINXヘルムチャート配布3.Gitops実習-ローカル環境任意修正検証2.Argo-CDインストールスキューバネス環境では、アプリケーションは主にヘルムを利用してインストールします。 ヘルム(Helm)はクバネティスパッケージ管理者で、よく知られているオペレーティングシステムのapt、yumに似ています。 ヘルムを使用すると、複数のクバネティス リソースをまとめて 1 つのパッケージとして管理でき、これによりアプリケーションのインストール、アップグレード、削除が簡素化されます。 ヘルムの詳細については、第11章で説明します。では、ヘルムでArgoCDをインストールします。 Windows WSLのHomebrewインストールユーザとMACユーザは、brewを使用してローカルPCにヘルムをインストールします。
醸造所の操舵装置
次に、ArgoCD公式ホームページを利用してArgoCDヘルムチャートをダウンロードします。
첼시는 https://argoproj.github.io/argo-helmhelm에서 pull을 추가하여 14에서 v-514.1tmlV-tmlV-1tmlV-1tmlV-sphere.
遠隔のArgoCDのヘルムリポジトリを登録(helm repoadd)し、ローカルにヘルムチャートをダウン(helm pull)します。 その後、基本ヘルムValueファイルを各環境に合わせて修正するために、既存のValues.yamlファイルをコピーして任意の名前(jerry-test-values.yaml)に変更します。 ヘルムコマンドの詳細な説明は、第 11 章で扱います。基本公式ヘルムValueを以下のように修正します。(筆者のギットハブを参照)
구성: [email protected]: SSHPrivate: :: jun: begin: —: config: gh: –: c: tem: s: | 단선SSH 프라이빗 키…—————————– 리포지토리의 이름: k8대: k8대: k8대: k8대: k8의 이름: k8
. . configs.credentialTemplates.ssh-credsArgoCDで登録するGitHubレポジトリ情報を登録します。 それぞれ使用するギットハブの登録したsshキー情報(~/.ssh/id_rsa)を入力します。 秘密鍵情報なので、セキュリティ上該当情報をマスキング処理(xxx)しました。リポジトリ情報はArgoCDのインストールを完了し、GUIでも可能です。 しかし、できればGitOps哲学に合わせてギットレポ情報もソースコードに入力することをお勧めします。 最初は面倒ですが、GUIを利用した作業はしない方が今後の再利用性の面で良いでしょう。repositories.k8s-class.name/url それぞれギットレポの名前とURLを登録します。今はまだイングレス設定をする前なので、イングレス関連ヘルムValues設定が抜けています。 5枚のイングレス設定が完了すると、イングレス設定を追加して便利にイングレスアドレスに接続できます。該当ヘルムValueファイル(jerry-test-values.yaml)を利用してArgoCDをインストールします。
. . configs.credentialTemplates.ssh-credsArgoCDで登録するGitHubレポジトリ情報を登録します。 それぞれ使用するギットハブの登録したsshキー情報(~/.ssh/id_rsa)を入力します。 秘密鍵情報なので、セキュリティ上該当情報をマスキング処理(xxx)しました。リポジトリ情報はArgoCDのインストールを完了し、GUIでも可能です。 しかし、できればGitOps哲学に合わせてギットレポ情報もソースコードに入力することをお勧めします。 最初は面倒ですが、GUIを利用した作業はしない方が今後の再利用性の面で良いでしょう。repositories.k8s-class.name/url それぞれギットレポの名前とURLを登録します。今はまだイングレス設定をする前なので、イングレス関連ヘルムValues設定が抜けています。 5枚のイングレス設定が完了すると、イングレス設定を追加して便利にイングレスアドレスに接続できます。該当ヘルムValueファイル(jerry-test-values.yaml)を利用してArgoCDをインストールします。
インストールが完了すると、ArgoCD関連のファドを確認することができます。
# #Agocold 이 로 경 7 다 06 0 中 中 中 行 06 行 行 7 임 스 name 実 페 er
3. Port-forwardを利用したArgo-CDファド接続では、インストールしたArgoCDファドをPort-forwardを利用して接続します。 クラスター外部からクラスター内部で実行している波に接続するために、主にクバネティスのイングレス リソースを使用します。 その内容は5章で詳しく説明します。 今は追加のイングレス設定作業なしに管理者が楽に使えるPort-forwardを利用してファードに接続します。 現業でもセキュリティ上の理由でイングレス設定をしていないファードはPort-forwardを利用して接続します。Port-forwardは「kubectl port-forward」コマンドを使用します。 port-forwardコマンドは長いですが、コマンドの自動完成が可能で難しくありません。 port-forwardコマンドは、クラスター内の特定のPodへのトラフィックをローカルシステムの特定のポートに伝達(port-forward)する機能を提供します。 これにより、ローカル開発環境でクラスターの内部リソースに直接アクセスできます。 すでにkubectlコマンドを実行するためにAPIサーバポートが接続されているため、簡単な設定だけでクラスタ内部ポートに接続できます。 ローカル システムの指定されたポートに入ってくるトラフィックは、API サーバーを介して選択したPodの特定のポートに配信されます。クバネティスAPIサーバーはこの過程で仲介者の役割を果たし、実際のトラフィックの伝達はkubeletが担当します。 では、以下のコマンドを使用してArgoCD パドに接続します。[jry: – (예:argocold-서버 이름 유형 클러스터-IP 포트 유형 클러스터-IP 포트)IP1023.337.108/TCP, 443/TCP 43/TCP 43:80 μ80 μm.クバネティスは、サービス オブジェクトでファド トラフィックを制御します。 port-forwardもやはりファードの代わりにサービスを利用すると便利です。 サービスの詳細については、次の章で説明します。’8080:80’コマンドの前8080ポートはローカルホストのポートを意味し、後80ポートはクラスターサービスが使用する80ポートを意味します。 つまり、私のローカルホストの8080ポートをクラスター サービスの80ポートに接続することを意味します。 以下のようにブラウザに「localhost:8080」と入力すると、ArgoCD画面が確認できます。初期の「admin」ユーザーのパスワードはSecretで確認できます。 Secretはパスワードなどと敏感な情報を保存するクバネティスオブジェクトです。 詳しい説明はこれから続く文章で扱い、今は以下のようにデコードして平文でパスワードを確認します。[Flash 테스트: 메시지] – [Flashboard-SNSPath= {data. -docolid-SCTY Limited-SCTY Limited 항공) {data.ログインウィンドウにUsername adminを入力し、Passwordに上記コマンド出力結果を入力します。 ログイン後、画面左側のメニューの「Settings」-「Repositories」を選択すると、ヘルムValuesファイルに設定したGitHubレポジトリが正常に登録されていることが確認できます。ArgoCDを正常にインストールしました。4. Argo-CDを利用してNGINXヘルム配布、インストールしたArgoCDを利用してアプリケーションを配布します。 アプリケーションはウェブサーバー用途でよく使われるNginxです。 Nginxもヘルムチャートを利用して配布します。[k8s]$-nx-bitx-nx-ns:n1}:n1}:n1}:n1}:n-nxn-nxnxnsnxnxyam l ?/-civalue my ?@L以前と同じようにヘルムをインストールするプロセスです。 Nginxウェブサーバーバージョンは最新バージョンを使用しても構いませんが、筆者と同じ構成を希望する場合はバージョン情報(15.1.0)を指定します。ヘルム Values.yaml ファイルを簡単に以下のように修正します。 該当ファイルは筆者のギットハブで確認することが。replicaCount:2 サービス:タイプ:クラスタIP メトリック:イネーブル化:true基本設定でNginxウェブサーバーのファード数量を2つに変更するなど簡単な変更です。 該当ヘルムValuesファイルを基準にNginxウェブサーバーを配布します。 ArgoCDは、アプリケーションをクバネティス環境に配布するためにGUIウェブで作業することができます。 しかし、使い回しやすく、GitOpsに適したアプリケーション配布設定もコードにすることをお勧めします。ArgoCDはコードで配布できるように「Application」というCRD(Custom Resource Definition)を使用します。 CRDは、クバネティスでユーザー定義リソースを定義するための機能です。 クバネティスは基本的にファド、サービス、デプロイメントなどのコアリソースを提供しますが、ユーザーはそれ以外にも独自のリソース タイプを定義して使用できます。 CRDを使用すると、ユーザーは独自のリソース タイプを定義し、これをクラスタ内でまるで組み込まれたリソースのように使用できます。 ArgoCDでもアプリケーション配布を容易に「Application」という独自のリソースを提供します。それではNginxウェブサーバーを配布するためのArgoCD Applicationを作ります。 (筆者ギッホッ)API 버전: argoproj.io/v1alpha1kind: リ https タ : デ 이름: nx 네임스페이스: nx 네임스페이스:nx 네임스페이스:nx 네임스페이스:nx 네임스페이스: namespace.HTTPS: 기본 소스: 기본 소스: 기본 소스: knic/mula_n1}:xn1}:xn1}: netc:xc: netc: netc: net. . metadata.finalizers’Application’リソースを削除すると、関連するクバネティスリソース(ファドなど)まで一緒に削除するオプションです。spec.destination.serverArgoCDがアプリケーションを配布する目的地を指定します。 リモートクバネティスクラスターも指定できますし、ArgoCDがインストールされているクバネティスも指定できます。 アドレスを’https://kubernetes.default.svc’指定すると、ArgoCDがインストールされたクバネティスに指定します..사양할게요.helmArgoCDはアプリケーションのインストール形態をヘルム、マニフェストなどをサポートします。 今回の実習でNginxをヘルムで設置するので’helm’に指定しました..사양할게요.경로 준비URLヘルムチャートが位置するGitHubレポジトリURLと該当ヘルムチャート経路を指定します..spec.syncPolicy.automated.prune/selfHealArgoCDから自動的にアプリケーションを配布するかどうかを指定するオプションです。 ギットにソースが載ると自動的にクバネティスにヘルムを配布したい場合は、「automated」オプションを指定します。 実際、現業ではDev、Stage環境ではautomatedオプションを使用し、運営環境では手動で変化(‘Diff’)内訳を確認して配布するためにautomatedオプションを使用しない場合も多いです。pruneは、Gitからコードを削除すると、実際のリソースも一緒に削除するオプションであり、selfHealオプションは失敗したタスクを自動的に復旧します..사양.Sync 옵션CreateNamespaceネームスペースを自動的に生成するオプションです。Application CRDも同じクバネティスリソースなので、「kapply」コマンドでリソースを生成できます。$ k apply -fnginx-webserver/nginx-15.1.0/cd/my-application. html application.argoproj.io/nginxArgocd「Application」という別のクバネティスオブジェクトが作成されました。 ArgoCDのApplicationとは、一般的にプログラムApplicationではなく、ArgoCDで独自に生成したクバネティスオブジェクトの一種です。[(jerry-test:argocd) cd]$kget 응용 프로그램 -nargocd nginxNAME SYNC STATUS ヘルス ステータス nginx Synced HealthyArgoCDウェブで画面左側のメニューの「Applications」を確認すると、新しくargocd/nginxが生成されたことが確認できます。このメニューをクリックすると、NGINXヘルムチャートでインストールしたクバネティスリソースを確認できます。 サービス、Deployがインストールされました。インストールされているNginxウェブサーバーのパドはコマンドでも確認できます。[jry:nx]$-(nx]$-nxNamexNamex) 35 μ-25 μm2 μm2 μm2 μm2 μm2上記のようにArgoCDを利用してアプリケーションファドを配布することができます。 最初のArgoCD配布時、ローカルPCで「helm install」コマンドを使用してアプリケーションを配布しました。 その後、ArgoCDを配布した後、NGINXは「helm install」コマンドではなく、ArgoCDを利用してNGINXアプリケーションを配布しました。 ローカルPCでコマンドとしてインストールしたアプリケーションは、Gitに保存されない可能性があり、今後の管理が困難になります。 しかし、ArgoCDを利用すると、ギットにソースを載せて配布することを強制することができ、ギットオプスポリシーを適用することが容易です。 クバネティスでインストールするすべてのアプリケーションは、ArgoCDを使用して配布することをお勧めします。 ArgoCDはUIをサポートし、Helmでどのようなリソースをインストールしたかを確認することができるので便利です。5.GitOps実習では、実際に運営(Ops)中の状態とGitの状態を変えて、ArgoCDがどのようにGitOpsを実装するかを見てみましょう。ソースではなくコマンドを使用してNGINXファドの数字を2つから5つに変更します。 ローカルのコンソール ウィンドウを2つに分け、上ではファドの数字を変更し、下では変更点をリアルタイムで確認します。以下のウィンドウは、以下のように「kgetpod-w(watch)」コマンドで、Fadの変更事項をリアルタイムで確認します。# 싱가포르-nx9 switch 中 0 – – switch – | 行 ⎈ 変 間 空 $ 前 な 名 x し す さ上のウィンドウでパード番号を変更します。 ファド数字の変更はコマンドとしてスケールを使用します。$ ( switch-deployment-test:nginx )k scale deployment –switch-deployment. module/nginx scaleed 5コマンドでファドの数を5つに指定しましたが、ファドは増加しません。 「Container Creating」と同時に「Terminating」されました。$ ⎈ | switch )nxnxnxnbnbn-05 μ-05 μ-09bnbnbn-200 μnbnbnbnbn6-qd4J 0/2 μbFC 55z1 -0x975~0x852 μx852 μx5 μx5 μx5 μx5ファドの数は依然として2つです。 なぜでしょうか?$ ⎈ | switch k )nx9bnx9bn-2009b4 μb4 μb4 μb4 μbsnx9bsnx9なぜなら、ギットソースでファドの数量を修正しないため、ArgoCDが自動的に現在のクラスター状態をギットに同期されたソースの状態と自動的に合わせるために常に2つに維持するからです。 それでは、違いを確認するためにArgoCDから「automated」オプションを削除します。 ‘automated’オプションは、自動的に現在の状態と旗の状態を合わせるオプションです。 このオプションを削除すると、ArgoCDは現在の状態を自動的に修正しません。 もう一度「kscale deploymentnginx–replicas 5」コマンドを実行し、ArgoCDウェブで確認すると「Out Of Sync」です。 フレーズで確認できるように、現在ギットに保存されているソースの状態が、運用中のクラスタの現在の状態と互いにSync状態ではないことを確認できます。동기화되지 않았습니다.자세한 메시지를 보려면 ‘APP DIFF’ 메뉴를 확인하십시오.”, 패드의 복제본 수가 각각 5와 2와 2와 2와 2로 다를 수 있습니다.제품 환경에서 ‘자동화된’ 옵션이 비활성화되고 위에 사용됩니다.항상 ‘D’를 수동으로 확인하고 실제 클러스터에 반영하여 실제 클러스터에 반영합니다.요약에서 ‘자동화된’ 옵션이 활성화되면 ARGOCD는 연산자 수를 자동으로 동기화할 수 있는 경우 소스 수를 자동으로 동기화할 수 있습니다.반면에, 나는 그 소스에 2로 패드를 바꾸려고 합니다.NNTX 헬스케어 값 파일을 변경합니다.복제본 수: 1 # 2 대 1GIT를 누른 후 Git을 누릅니다.아래의 VSC 디맨드 화면의 예제입니다.ARCD 메뉴에서 ‘RCD 메뉴’를 자동으로 줄일 수 있습니다.kubectl command로 확인하면 패드 개수가 1개로 줄어듭니다$ (⎈ | 스위치-싱가포르-테스트:nginx) kgetpodNAME READITY STATUS AGINx-7979bfc556-gb7t2 2/러닝 025m이 방법으로 아르GOCD는 실제 운영 쿠버넷 주에서 반영된다.모든 변경사항은 명령 또는 로컬 소스로부터만 만들 수 있습니다.마찬가지로, 테라 폼을 사용하여 실제 상태에 반영되어 실제 상태에 반영됩니다.위의 스크린샷은 EK 업그레이드 중에 사용하는 권한입니다.이것은 리뷰를 통해 동료들에게 TK 업그레이드에 대한 유효한 테레인 코드 작업입니다.작업 중에 가능한 실패 오류를 줄이기 위해 작업 관련 코드를 검증할 수 있었다.검증 코드가 실제 상태에 반영되어 실제 상태에 반영되었습니다.테라 폼 코드 및 기타 작업을 위한 파이썬 코드 및 기타 운영이 동일하게 저장됩니다.위 스크린샷은 EKS 업그레이드 시 실제로 사용한 저자의 PR Review 메시지입니다. 리뷰를 통해 EKS 업그레이드를 위한 Terraform code 작업을 동료에게 검증한 예입니다. 작업 중 발생할 수 있는 실패를 줄이기 위해 작업 관련 코드를 사전에 검증할 수 있었습니다. 검증된 코드를 main에 병합하여 실제 상태에 반영하였으며, Terraform code 및 기타 작업에 대한 Python code는 리뷰를 위한 칼라에 동일하게 저장됩니다.위의 예는 각 영역에서 AWSK 클러스터를 출력하는 파이썬 코드입니다.물론, 실제로 운영한다면 모든 작업에 대한 코드 검토가 어렵습니다.그러나 모든 태스크, 사전 코딩 코드 및 문서를 기반으로 하는 경우 피어 검토 프로세스가 안정적으로 실행 중인 시스템을 안정적으로 유지하는 데 효과적입니다.그리고 적어도 우리는 당신의 업무 세부 정보를 가지고 있는 모든 일에 대해 매우 도움이 될 것이라고 추천합니다.지금까지 ARO CD GOP 케이스를 공유했습니다.Gopops는 정책이기 때문에 계속해야 합니다.코드를 신뢰하는 것은 번거롭게 검토하고 작업 프로세스와 작업 프로세스와 작업 프로세스와 함께 유지할 수 있습니다.기술 블로그에서 궁금한 사항이 있으면 연락해주세요[email protected]에 대답하겠습니다.1. CI/CD 도구로서 CI는 Gub 액션 및 CD를 위한 가장 인기 트렌드이다.Windows UBS 사용자는 홈 나사를 사용할 수 있습니다.홈 나사를 사용하지 않는 사용자는 적합, 맛, 맛 등을 설치할 수 있습니다.름 치 # 조 https://helm.sh/docs/intro/install/#: https://helm.sh/docs/intro/install/# from#: -#apt# :#