mirror of
https://github.com/BagelHole/DevOps-Security-Agent-Skills.git
synced 2026-08-22 12:49:53 +02:00
.
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
# ArgoCD GitOps Patterns
|
||||
|
||||
## Application Definition
|
||||
|
||||
```yaml
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: myapp
|
||||
namespace: argocd
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://github.com/org/repo
|
||||
targetRevision: HEAD
|
||||
path: k8s/overlays/production
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: myapp
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
```
|
||||
|
||||
## Sync Waves
|
||||
|
||||
```yaml
|
||||
metadata:
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "-1" # Deploy first
|
||||
---
|
||||
metadata:
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "0" # Default
|
||||
---
|
||||
metadata:
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "1" # Deploy last
|
||||
```
|
||||
|
||||
## ApplicationSet
|
||||
|
||||
```yaml
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: ApplicationSet
|
||||
metadata:
|
||||
name: myapp-set
|
||||
spec:
|
||||
generators:
|
||||
- list:
|
||||
elements:
|
||||
- env: dev
|
||||
cluster: dev-cluster
|
||||
- env: prod
|
||||
cluster: prod-cluster
|
||||
template:
|
||||
metadata:
|
||||
name: 'myapp-{{env}}'
|
||||
spec:
|
||||
source:
|
||||
repoURL: https://github.com/org/repo
|
||||
path: 'k8s/overlays/{{env}}'
|
||||
destination:
|
||||
server: '{{cluster}}'
|
||||
namespace: myapp
|
||||
```
|
||||
|
||||
## Multi-Cluster
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: prod-cluster
|
||||
labels:
|
||||
argocd.argoproj.io/secret-type: cluster
|
||||
stringData:
|
||||
name: prod
|
||||
server: https://prod-cluster.example.com
|
||||
config: |
|
||||
{
|
||||
"bearerToken": "...",
|
||||
"tlsClientConfig": {
|
||||
"insecure": false,
|
||||
"caData": "..."
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## App of Apps
|
||||
|
||||
```yaml
|
||||
# Root application
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: root
|
||||
spec:
|
||||
source:
|
||||
path: apps/ # Contains Application manifests
|
||||
destination:
|
||||
namespace: argocd
|
||||
```
|
||||
|
||||
## CLI Commands
|
||||
|
||||
```bash
|
||||
# Login
|
||||
argocd login argocd.example.com
|
||||
|
||||
# Sync
|
||||
argocd app sync myapp
|
||||
argocd app sync myapp --prune
|
||||
|
||||
# Rollback
|
||||
argocd app rollback myapp
|
||||
|
||||
# Diff
|
||||
argocd app diff myapp
|
||||
|
||||
# History
|
||||
argocd app history myapp
|
||||
```
|
||||
Reference in New Issue
Block a user