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
Π’ΠΈΠΏΠΎΠ²Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
-
application repository
- Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ CI ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ docker ΠΎΠ±ΡΠ°Π·Π° ΠΈ Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΅Π΅ Π² container registry. -
configuration repositor
- ΠΡΠ²Π΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π²Π΅ΡΡΠΈΡ ΠΎΠ±ΡΠ°Π·Π° Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ-Π΅Deployment
-Π°. -
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:
-
Tool - ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ plain-yaml ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΡΡΠΈΠ»ΠΈΡΡ ΡΠ΅ΠΉΠΌΠΏΠ»Π΅ΠΉΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ helm, kustomize, jssonnet
-
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
- ΡΡΡΠ»ΠΊΠ° Π½Π°
git
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ - Π²Π΅ΡΠΊΠ° ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ reference
- ΠΏΡΡΡ Π΄ΠΎ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΠ² Π²Π½ΡΡΡΠΈ ΡΠ΅ΠΏΡ
- 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
- ΡΡΡΠ»ΠΊΠ° Π½Π°
helm
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΈΠ³ΡΡΠΈΡΡΠ΅Ρ Π² readme ΠΊ ΡΠ°ΡΡΡhelm repo add bitnami https://charts.bitnami.com/bitnami
- ΠΈΠΌΡ ΡΠ°ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ Chart.yaml
- Π²Π΅ΡΡΠΈΡ ΡΠ°ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ Chart.yaml
- 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)
- project ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ Application-Ρ ΠΈ ΡΠ°Π·Π΄Π°Π²Π°ΡΡ Π½Π° Π½ΠΈΡ ΠΏΡΠ°Π²Π°, Ρ Π°ΡΠ³ΠΎ Π΅ΡΡΡ ΡΠ²ΠΎΠΉ RBAC, Π½ΠΎ ΠΌΡ ΡΡΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ
- Sync Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅ Refresh
- ΠΡΠ»ΠΈ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΠ΅ΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ Π°ΡΠ³ΠΎ - ΠΎΠ½ΠΎ Π²Π΅ΡΠ½Π΅Ρ Π²ΡΠ΅ Π½Π°Π·Π°Π΄ (target state)
- ΠΡΠ»ΠΈ ΠΌΡ ΡΠ΄Π°Π»ΠΈΠΌ Π² Π³ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡ Π·Π° Application, Π°ΡΠ³ΠΎ ΡΠΎΠΆΠ΅ Π΅Π³ΠΎ ΡΠ΄Π°Π»ΠΈΡ
- ΠΠ°ΡΠΈΡΠ° ΠΎΡ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΊΡΠΎΡΠ°, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ΅ΡΡΡΡΡ Π·Π° 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
-Ρ
ΠΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
Q&A
Π― ΡΠ΄Π°Π»ΠΈΠ» ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ Π°ΡΠ³ΠΎ, Π° ΡΠ΅ΡΡΡΡΡ ΠΎΡΡΠ°Π»ΠΈΡΡ Π² kubernetes
-
ΠΡΠΎΡΡΠΈΡΠ΅ ΡΠ΅ΠΊΡΠΈΡ GC Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π³Π°ΠΉΠ΄Π°
Π― Π·Π°ΠΏΡΡΠΈΠ» ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ Π² git, Π½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ
-
ΠΠΎ Π΄Π΅ΡΠΎΠ»ΡΡ Π°ΡΠ³ΠΎ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠ°Π· Π² 3 ΠΌΠΈΠ½ΡΡΡ, Refresh ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΡΡΠ½ΡΡ Π½Π°ΠΆΠ°Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ. Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΠ΄Π΅Π»Π°ΡΡ webhook - Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π°ΡΠ³ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ
ΠΠΎΡΠ΅ΠΌΡ Π½Π΅Ρ ApplicationSet?
-
Π‘ΠΎΠ±ΠΈΡΠ°ΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, Π½ΠΎ ΠΏΠΎΠΊΠ° ΡΡΠΎΠΊΠΎΠ² Π½Π΅Ρ