Skip to content

Argo CD

Argo CD - это GitOps ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ примСняСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (plain-yaml манифСсты, helm Ρ‡Π°Ρ€Ρ‚Ρ‹) ΠΈΠ· git рСпозитория Π² kubernetes кластСрС ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ это ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ состояниС.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки

Note

  • 🚧 ArgoCD Core Concepts https://argo-cd.readthedocs.io/en/stable/core_concepts/
  • ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация https://argo-cd.readthedocs.io/en/stable/
  • ΠžΠ±Π·ΠΎΡ€Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚ TechWorld with Nana https://youtu.be/MeU5_k9ssrs

Виповая схСма развСртывания Π½ΠΎΠ²Ρ‹Ρ… вСрсий прилоТСния

flowchart TD subgraph application [1-application repository] dev((dev)) dev -- commit changes --> app[application code] app -- CI pipeline --> ci[fa:fa-gitlab build and push image to registry] end subgraph infrastructure [2-configuration repository] ops((ops)) ops -- commit changes --> deploy[deployment manifest] end subgraph env [3-kubernetes cluster] argocd -- continuously pull --> deploy argocd -- sync desired state --> k8s[fa:fa-server kubernetes cluster] end
  1. application repository - Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ измСняСт ΠΊΠΎΠ΄ прилоТСния, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ CI ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ собираСт Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ docker ΠΎΠ±Ρ€Π°Π·Π° ΠΈ доставляСт Π΅Π΅ Π² container registry.

  2. configuration repositor - ΠžΡ‚Π²Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ измСняСт Π²Π΅Ρ€ΡΠΈΡŽ ΠΎΠ±Ρ€Π°Π·Π° Π² манифСст-Π΅ Deployment-Π°.

  3. kubernetes cluster - Argo CD Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ измСнСния ΠΈΠ· рСпозитория(refresh), Π²ΠΈΠ΄ΠΈΡ‚ Ρ‡Ρ‚ΠΎ состояния кластСра (live state) Π½Π΅ соотвСтствуСт конфигурациям ΠΈΠ· рСпозитория (target | desired state) ΠΈ примСняСт ΠΈΡ… (sync).

Note

РаздСлСния Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² с манифСстами Π°Ρ€Π³ΠΎ ΠΎΡ‚ ΠΊΠΎΠ΄Π° прилоТСния являСтся Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ ΠΏΠΎ мнСнию ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊ ΠΆΠ΅ сам argo Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΠ± этом https://argo-cd.readthedocs.io/en/stable/user-guide/best_practices/

Application - CRD ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Application - это сути ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ argo Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² кластСр.

Π’ Core Concepts описаны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ понятия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с этим CRD:

  1. Tool - это способ получСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ plain-yaml манифСсты ΠΈΠ»ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ тСймплСйтирования Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ helm, kustomize, jssonnet

  2. Source - Π½Π° самом Π΄Π΅Π»Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ понятия Π½Π΅Ρ‚, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Application ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊ ΠΈΠ· git рСпозитория, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ· OCI Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ (это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ для Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ helm chart-ΠΎΠ²)

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠ±ΠΎΠΈΡ… кСйсов.

---

kind: Application
apiVersion: argoproj.io/v1alpha1
metadata:
  name: project-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://gitlab.com/infra/sandbox.git # (1)
    targetRevision: master # (2)
    path: sandbox/project-app # (3)
    directory: # (4)
      recurse: true
  destination:
    namespace: sandbox
    server: https://kubernetes.default.svc
  syncPolicy:
    automated:
      selfHeal: true
      prune: true
  1. ссылка Π½Π° git Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
  2. Π²Π΅Ρ‚ΠΊΠ° ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ reference
  3. ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ манифСстов Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π΅ΠΏΡ‹
  4. tool - Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ
---

kind: Application
apiVersion: argoproj.io/v1alpha1
metadata:
  name: word-press
  namespace: argocd
spec:
  project: sandbox
  source:
    repoURL: https://charts.bitnami.com/bitnami # (1)
    chart: wordpress # (2)
    targetRevision: "15.2.2" # (3)
    helm:
      values: | # (4)
        wordpressUsername: admin
        wordpressPassword: qwerty

        wordpressFirstName: Infra
        wordpressLastName: Engineer
        wordpressBlogName: Platform Blog

        service:
          type: ClusterIP

        mariadb:
          enabled: true
          architecture: standalone
          auth:
            rootPassword: "mariadb"
            database: bitnami_wordpress
            username: bn_wordpress
            password: "mariadb"
          primary:
            persistence:
              enabled: true
              storageClass: ebs-gp3-ext4-eu-west-1b
              accessModes:
                - ReadWriteOnce
              size: 5Gi

        memcached:
          enabled: true
          auth:
            enabled: true
            username: "admin"
            password: "qwerty"

  destination:
    namespace: env-ahorbach
    server: https://kubernetes.default.svc
  syncPolicy:
    automated:
      selfHeal: true
      prune: true
  1. ссылка Π½Π° helm Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π² readme ΠΊ Ρ‡Π°Ρ€Ρ‚Ρƒhelm repo add bitnami https://charts.bitnami.com/bitnami
  2. имя Ρ‡Π°Ρ€Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ Chart.yaml
  3. Π²Π΅Ρ€ΡΠΈΡŽ Ρ‡Π°Ρ€Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ Chart.yaml
  4. helm ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² Ρ‡Π°Ρ€Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для упрощСния yaml синтаксиса

Project, syncPolicy

НСкоторыС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π±Ρ‹Π»ΠΈ ΠΎΠ±Π΄Π΅Π»Π΅Π½Ρ‹ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Π² Ρ‚Π°ΠΊΠΎΠΌ состоянии ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π²Ρ‹ΡˆΠ΅.

Но ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π½ΠΈΠΌΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ спСки CRD, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: kubectl explain application.spec.syncPolicy.automated

---

kind: Application
apiVersion: argoproj.io/v1alpha1
metadata:
  name: project-app
  namespace: argocd
spec:
  project: default # (1)
  source:
    repoURL: https://gitlab.com/infra/sandbox.git
    targetRevision: master
    path: sandbox/project-app
    directory:
      recurse: true
  destination:
    namespace: sandbox
    server: https://kubernetes.default.svc
  syncPolicy:
    automated: # (2)
      selfHeal: true # (3)
      prune: true # (4)
      allowEmpty: false # (5)
  1. project позволяСт Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Application-Ρ‹ ΠΈ Ρ€Π°Π·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ… ΠΏΡ€Π°Π²Π°, Ρƒ Π°Ρ€Π³ΠΎ Π΅ΡΡ‚ΡŒ свой RBAC, Π½ΠΎ ΠΌΡ‹ это Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ
  2. Sync Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ автоматичСски послС Refresh
  3. Если ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ рСсурс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π°Ρ€Π³ΠΎ - ΠΎΠ½ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ всС Π½Π°Π·Π°Π΄ (target state)
  4. Если ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ Π² Π³ΠΈΡ‚Π΅ рСсурс Π·Π° Application, Π°Ρ€Π³ΠΎ Ρ‚ΠΎΠΆΠ΅ Π΅Π³ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚
  5. Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ чСловСчСского Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ рСсурсы Π·Π° Application-ΠΎΠΌ Ссли Π°Ρ€Π³ΠΎ смотрит Π² ΠΏΡƒΡΡ‚ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ

GC

Если Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Git, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ситуациСй Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π·Π° этим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π² кластСрС. Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ чСловСчСской ошибки.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, слСдуСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΠΈ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ измСнСния Π² git.

---

kind: Application
apiVersion: argoproj.io/v1alpha1
metadata:
  name: project-app
  namespace: argocd
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
...

И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ argo ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ этот Application с Ρ„ΠΈΠ½Π°Π»Π°ΠΉΠ·Π΅Ρ€ΠΎΠΌ - манифСст Application-Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ.

Orphan resources

Note

https://argo-cd.readthedocs.io/en/stable/user-guide/orphaned-resources/

На project ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡ‚ΡŒ отслСТиваниС Π·Π° рСсурсами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Argo Π½Π΅ управляСт. Π’.ΠΊ. Application ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ рСсурсы Π² ΠΎΠ΄ΠΈΠ½ namespace, Ρ‚ΠΎ Π² UI этого application-Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΡΠ΅Ρ‚ΡŒ WARNING, Ссли ΠΊΠ°ΠΊΠΈΠ΅ Π»ΠΈΠ±ΠΎ рСсурсы Π² этом ns-Π΅ Π½Π΅ созданы argo

UI

Note

Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ https://argo-cd.readthedocs.io/en/stable/getting_started/#7-sync-deploy-the-application

Π£ Арго ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π΅Π΅ UI - ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΈ срСдством Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Ρ€Π°Π±Π»ΡˆΡƒΡ‚ΠΈΠ½Π³Π° ΠΈ observability, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ управлСния workloads.

Из Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ, это ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

πŸ’š - это Health, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ этим Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° Pod ΠΈ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΠΈΠ΅ Π½Π°Π΄ Π½ΠΈΠΌΠΈ абстракции. Если Health Π½Π΅ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ - Ρ‚ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ (ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΠ°Π΄Π°Π΅Ρ‚ с ошибкой exit 1 ΠΈ Ρ‚.Π΄.)

βœ… - Sync - эта концСпция ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ соотвСтствиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с target state. Если Sync Π½Π΅ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ - ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Argo Π½Π΅ смог Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ target state, это часто являСтся слСдствиСм ошибок Π² конфигурациях.

Π’ случаС ошибок - ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Π³ΠΎ Event (Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²Π½ΠΈΠ·Ρƒ Π²Ρ‹Π²ΠΎΠ΄Π° kubectl describe object), для pod-ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π³Π»ΡΠ½ΡƒΡ‚ΡŒ log-ΠΈ. А Ρ‚Π°ΠΊ ΠΆΠ΅ Π² зависимости ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ rollout restart, trigger job, Π² ΠΊΠΎΠ½Ρ†Π΅-ΠΊΠΎΠ½Ρ†ΠΎΠ² ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Apps of Apps

Quote

https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#app-of-apps

You can create an app that creates other apps, which in turn can create other apps. This allows you to declaratively manage a group of apps that can be deployed and configured in concert.

Один ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ Π³Ρ€Π°Ρ„Π° являСтся ΠΎΠ΄ΠΈΠ½ Application, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смотрит Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ _cluster_init Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΆΠ΅ Π»Π΅ΠΆΠ°Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Application-Ρ‹

Π“Ρ€Π°Ρ„ зависимостСй ΠΏΡ€ΠΈ этом выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

graph TD A[_cluster_init] A --> PL[platform-core] A --> prometheus[prometheus alerts] A --> T[fa:fa-server _team_ environments] PL --> traefik[traefik] PL --> karpenter[karpenter] T --> team_dev[_team_dev_env] T --> team_test[_team_test_env] team_dev --> dev_foo[_team_dev_foo] team_dev --> dev_bar[_team_dev_bar] team_test --> test_foo[_team_test_foo]

Q&A

Π― ΡƒΠ΄Π°Π»ΠΈΠ» манифСст Π°Ρ€Π³ΠΎ, Π° рСсурсы ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π² kubernetes

ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΡΠ΅ΠΊΡ†ΠΈΡŽ GC Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π³Π°ΠΉΠ΄Π°

Π― Π·Π°ΠΏΡƒΡˆΠΈΠ» манифСсты Π² git, Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит

По Π΄Π΅Ρ„ΠΎΠ»Ρ‚Ρƒ Π°Ρ€Π³ΠΎ ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Ρ€Π°Π· Π² 3 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, Refresh ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π°ΠΆΠ°Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ. Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ для вашСго рСпозитория ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ webhook - Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π°Ρ€Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅Ρ‚ ApplicationSet?

Π‘ΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Π½ΠΎ ΠΏΠΎΠΊΠ° сроков Π½Π΅Ρ‚ πŸ™

Comments