Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ArgoCDによるGitOps導入 / ArgoCD GitOps

mekka
April 30, 2024
8

ArgoCDによるGitOps導入 / ArgoCD GitOps

Kubernetes Wakaran Tokyo #2 のLT資料

mekka

April 30, 2024
Tweet

Transcript

  1. 自己紹介
 名前と所属
 • Chikahisa Mikata(Twitter: @melpo_mel)
 • Rakusという会社に所属しています
 
 普段の業務


    • SREチームのマネージャーをしています
 • Kubernetesはまだまだ学習中、
 社内導入もこれからで四苦八苦しています

  2. GitOpsの流れ
 ①マージ
 (機能開発ブランチ) 
 ②CI発火
 ③プッシュ
 ③PR作成
 ④マージ
 (マニフェストブランチ) 


    ⑤差分検知
 ポーリング
 ⑥イメージ取得
 ⑦デプロイ
 ・テスト
 ・イメージビルド

  3. GitOpsの流れ
 ①マージ
 (機能開発ブランチ) 
 ②CI発火
 ③プッシュ
 ③PR作成
 ④マージ
 (マニフェストブランチ) 


    ⑤差分検知
 ポーリング
 ⑥イメージ取得
 ⑦デプロイ
 ・テスト
 ・イメージビルド

  4. AppProject
 apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: ehozon-project namespace: argo-cd

    spec: description : Ehozon Project sourceRepos : - 'https://github.com/rakus-dev/zabuton-ehozon-apps.git' destinations : - namespace: ehozon-applications server: https://kubernetes.default.svc - namespace: ehozon-backend server: https://172.18.20.112:6443 sourceNamespaces : - 'ehozon-applications' roles: - name: developer description : developer role policies: - p, proj:ehozon-:developer, applications, get, ehozon-project/*, allow 接続先のGitを指定 
 デプロイ先のclusterとnamespaceを指定 
 Application配置先のnamespaceを指定 
 ユーザのRoleを指定 

  5. Hoge Project
 Fuga Project
 Hoge
 Fuga
 Hoge
 Fuga
 Hoge
 Fuga


    Argo Cluster
 Hoge Cluster
 Fuga Cluster
 Hoge Team
 Fuga Team
 Hoge App
 Fuga App

  6. Application
 apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: ehozon-applications namespace: ehozon-applications

    spec: project: ehozon-project source: repoURL: 'https://github.com/rakus-dev/zabuton-ehozon-apps.git' path: apps targetRevision: main destination: server: 'https://kubernetes.default.svc' namespace: ehozon-applications syncPolicy: automated: prune: true selfHeal: true AppProjectで許可されたnamespace 
 AppProjectで許可されたGitリポジトリ 
 AppProjectで許可されたnamespace 

  7. ApplicationSet
 • 複数のApplicationを束ねて管理するCRD
 • GeneratorとTemplateによってApplicationを管理する。List Generator, Cluster Generator, Git Generatorなど複数のGeneratorが適用されており、

    用途に合わせて選択可能
 • 自社ではDevelop, Staging, Productなど複数のcluster向けにApplicationを配 置する目的で、Cluster Generatorを利用している
 • Applicationと同様にProjectの設定で配置するnamespaceを制限することが 可能(ArgoCDのver2.8以降)
  8. ApplicationSet
 apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: ehozon-backend-applicationset namespace: ehozon-applications

    spec: generators: - clusters: selector: matchLabels: type: cluster project: ehozon template: metadata: name: 'ehozon-backend' spec: project: ehozon-project source: repoURL: 'https://github.com/rakus-dev/zabuton-ehozon-apps.git' path: manifests/ehozon-backend targetRevision: '{{metadata.labels.targetRevision}}' helm: releaseName: 'ehozon-backend' destination: server: '{{server}}' namespace: ehozon-backend AppProjectで許可されたnamespace 
 Cluster Generatorを利用 
 ArgoCDに登録されたCluster情報を取得 
 取得したCluster分だけApplicationを作成 
 namespaceはApplicationSetと同様になる 

  9. App Of Apps
 /sre-zabuton-ehozon-apps ├── apps │ ├── ehozon-backend.yaml │

    └── ehozon-frontend.yaml ├── argocd │ └── ehozon-applications.yaml └── manifests ├── ehozon-backend │ ├── Chart.yaml │ ├── templates │ │ ├── _helpers.tpl │ │ ├── deployment.yaml │ │ ├── ingress.yaml │ │ └── service.yaml │ └── values.yaml └── ehozon-frontend ├── Chart.yaml ├── templates │ ├── _helpers.tpl │ ├── deployment.yaml │ ├── ingress.yaml │ └── service.yaml └── values.yaml 子Application郡 
 親Application
 デプロイ用のhelmチャート 
 ディレクトリ内のApplicationを全て適用 
 Applicationを追加する場合はapps内にyamlを追加 
 
 ※ラクスではApplicationSetを配置している 
 子Applicationから参照されるHelmチャート 
 
 デプロイ時はvalues.yamlを更新する 

  10. Helm Chart
 /argo-cd ├── Chart.yaml ├── templates │ ├── clusterrole.yaml

    │ ├── clusterrolebinding.yaml │ ├── ingress.yaml │ ├── serviceaccount.yaml │ └── vaultstaticsecret.yaml └── values.yaml apiVersion: v2 name: argo-cd description: A Helm chart for argo-cd type: application version: 1.0.0 dependencies: - name: argo-cd version: "5.53.8" repository: "https://argoproj.github.io/argo-helm" dependency buildを利用してArgoCDをインストール 
 その後にtemplates/配下のマニフェストを適用 
 
 1つのApplicationとしてArgoCDに関連するリソースも管理し ている

  11. 株式会社ラクス
 
 設立 2000年11月1日 設立
 従業員数 連結:2,197名 単体:1,253名 (2023年3月31日現在) 


    関連子会社 Rakus Vietnam Co.,Ltd.(ベトナム子会社)
 株式会社ラクスパートナーズ(国内子会社)
 株式会社ラクスライトクラウド(国内子会社)
     株式会社ラクスHRテック(国内子会社)
 株式会社ラクスみらい(国内子会社)
 事業所 東京・大阪・名古屋・福岡・札幌・広島
 上場証券取引所 東証プライム(3923)