Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Próximo SlideShare
What to Upload to SlideShare
Siguiente
Descargar para leer sin conexión y ver en pantalla completa.

Compartir

Argo CDについて

Descargar para leer sin conexión

NTT Engineers' Meetup #4で発表したArgo CDの紹介と運用で得られたTipsについてです。

Libros relacionados

Gratis con una prueba de 30 días de Scribd

Ver todo
  • Sé el primero en recomendar esto

Argo CDについて

  1. 1. ArgoCDについて 2021/01/19 紀本雅大 masahiro.kimoto@ntt.com
  2. 2. 自己紹介 紀本 雅大 / KIMOTO MASAHIRO masahiro.kimoto@ntt.com NTTコミュニケーションズ 2020年入社 イノベーションセンター テクノロジー部門 Testbed基盤拡張2 PJ AI向けコンテナ基盤としてのGPU Kubernetesクラスタの運用と機能検証 (Testbedとは: NTT Comにおける開発・検証用ネットワーク)
  3. 3. Contents ● Argo CD紹介 ○ 概要 ○ GitOps by Tekton and Argo ○ Architecture ○ Try Argo CD ● Tips ○ Slack通知 ○ Status Badge ○ RBAC・ユーザ管理 ○ 戦略的デプロイ Argo Rolloutsとの連携
  4. 4. About Argo https://argoproj.github.io/ ArgoプロジェクトはKubernetesネイティブツールのセット ArgoCDはそのうちのひとつ Argo Workflows Kubernetes上で並列ジョブを実行する ワークフローエンジン。 CI/CDパイプラインを構築。 Argo Rollouts Blue/Greenやカナリアリリース等の 高度なデプロイ戦略を提供する、 KubernetesコントローラとCRDのセット。 Argo CD リポジトリの変更を検知し、CD機能を提供。 helm/kustomizeなどにも対応。 Argoの代表的なコンポーネント。 Argo Events Kubernetes用のイベントマネージャ。 webhookなどのイベントを受け取り、 Kubernetesオブジェクトをトリガー。
  5. 5. GitOps by Tekton and Argo CD CI Build image Push image Update K8s config Detect Change Deploy manifest Deploy Blue/green Analysis Deploy Tekton Tekton Pipeline Tekton Trigger Tekton Pipeline None Argo Argo Workflows Argo CD Argo Rollouts FIX App Argo Events Tekton Trigger Tekton Pipeline None Argo Events Argo Workflows
  6. 6. Argo CD Argo CDはKubernetesにおいて宣言的にGitOpsのCD機能を実現するコンポーネント 特徴 ● 宣言型のアーキテクチャ ( Kubernetes YAML, ksonnet / jsonnet, Helm, kustomize ) ● Gitリポジトリで理想状態を宣言 ( GitOps ) ● Kubernetesネイティブ ● CIプロセスとCDプロセスを明確に分離 ● WebUIによるデプロイ状態の可視化・操作が可能 ● デプロイされたリソースのヘルスチェック・任意のロールバックが可能 https://argoproj.github.io/argo-cd/
  7. 7. Architecture ● API Server ○ WebUI, CLI, およびAPIを公開する gRPC/RESTサーバ ● Repository Server ○ マニフェストを保持する Gitリポジトリのキャッシュを 維持する内部サービス ● Application Controller ○ 実行中のアプリケーションを監視、 現在の状態をリポジトリの理想状態と 比較するKubernetesコントローラ
  8. 8. WebUI - Argo CD App List View App Details View
  9. 9. Getting Started Cluster Install cluster-admin権限を持つ標準的なインストール $ kubectl apply -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml or Namespaced Install Namespaceを限定したインストール 外部クラスタにデプロイする場合にも使用 $ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo- cd/stable/manifests/namespace-install.yaml CLI Tools $ brew install argocd https://argoproj.github.io/argo-cd/getting_started/
  10. 10. Installing Argo CD Kubernetesクラスタ上にアプリケーションがデプロイされる
  11. 11. Access WebUI $ kubectl port-forward svc/argocd-server -n argocd 8080:443 Open http://localhost:8080 in browser user: admin init pass: argocd-server pod name ( $ kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2 )
  12. 12. Deploy App ①NEW APP ②アプリケーションの情報を入 力 ③AUTO APPLY
  13. 13. Argo CDが3分おきにリポジトリの更新を確認 即時反映の場合はリポジトリ側からwebhookを飛ばす Update App PR MERGE Argo CD kube api 変更検知 Deploy AUTO SYNC
  14. 14. Argo CD紹介 まとめ ● Argo CDはKubernetesにおいて宣言的に GitOpsのCD機能を実現するコンポーネント ○ Gitリポジトリのマニフェストを理想状態として宣言する ● CD機能にのみ注力しておりCI機能は備えていない ○ Argoのコンポーネントはいずれも独立した機能としてふるまう ● Kubernetesネイティブであり自身もCRDとして実装されている ● WebUI, CLIによる可視化・操作が強力
  15. 15. Contents ● Argo CD紹介 ○ 概要 ○ GitOps by Tekton and Argo ○ Architecture ○ Argo CD sample ● Tips ○ Slack通知 ○ Status Badge ○ RBAC・ユーザ管理 ○ 戦略的デプロイ Argo Rolloutsとの連携
  16. 16. Slack通知 デプロイ状況を通知する拡張機能 kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd- notifications/stable/manifests/install.yaml https://argocd-notifications.readthedocs.io/en/stable/ Cluster Argo CD Argo CD Notification Slack ConfigMap argocd-notification-cm Git Repo App ②Deploy Secret argocd-notification-secret ①Get OAuth Token ④Notification ・Success ・Failed etc... ③ Log
  17. 17. Status Badge ● Best Practices:ソースコードとマニフェストのリポジトリを分離する ○ アプリケーションコードとアプリケーション構成を明確に分離可能 ○ 例:デプロイメントのレプリカ数を変更したい場合 ● マニフェストリポジトリの同期状況の可視化にStatus Badgeを使用 ○ 使用例:GitHubのREADME先頭に表示 https://argoproj.github.io/argo-cd/user-guide/best_practices/ https://argoproj.github.io/argo-cd/user-guide/status-badge/ $ kubectl edit configmap argocd-cm data: + statusbadge.enabled: 'true' ${argoCdBaseUrl}/api/badge?name=${appName}
  18. 18. クラスタ内に複数のユーザが存在する場合, project単位で権限を設定する ● Appはいずれかのprojectに割り当てられる ○ 指定しない場合 default ● projectに対して許可するアクションと 実行可能なユーザを設定 ○ ConfigMap: argocd-cm ○ Projectの他 cluster, applications, repositories, certificates単位で設定可能 cluster project B project A RBAC・プロジェクト管理 App A App B App C App D https://argoproj.github.io/argo-cd/operator-manual/rbac/ https://argoproj.github.io/argo-cd/user-guide/projects/ user A user B
  19. 19. 戦略的デプロイ Argo Rolloutsとの連携 Argo RolloutsはReplicaSetに代わって Blue/Green や カナリアリリース等の デプロイ戦略を提供するコンポーネント Argo CDでデプロイするマニフェストにArgo Rolloutsを使用することで 戦略的デプロイを利用可能 https://argoproj.github.io/argo-rollouts/migrating/ マニフェストの変更点( YAMLの場合 ) apiVersion: apps/v1 → argoproj.io/v1alpha1 kind: Deployment → Rollout strategy: blue-green or canary を追加
  20. 20. Argo CD Tips まとめ ● 拡張機能によってデプロイ状況をSlack通知できる ● Status Badgeの表示でリポジトリの同期状況を表示できる ● 複数のアプリケーションの権限を管理する場合、 Project単位でアクセス権限を設定する ● Argo Rolloutsを利用することで戦略的デプロイが実現できる ● Argo Events と Argo Workflowsを利用したCD機能の拡張については検証中

NTT Engineers' Meetup #4で発表したArgo CDの紹介と運用で得られたTipsについてです。

Vistas

Total de vistas

189

En Slideshare

0

De embebidos

0

Número de embebidos

0

Acciones

Descargas

0

Compartidos

0

Comentarios

0

Me gusta

0

×