feat(skills): add ArgoCD skill for Kubernetes deployments
- Document SSH access requirement (192.168.200.1) - Cover dev and prod environments - Include common workflows: deploy, rollback, health checks - List managed repositories - Add troubleshooting section
This commit is contained in:
parent
6af205a13a
commit
63e7adc938
178
skills/argocd/SKILL.md
Normal file
178
skills/argocd/SKILL.md
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
---
|
||||||
|
name: argocd
|
||||||
|
description: "Manage Kubernetes deployments via ArgoCD. Sync applications, check health, view history, and rollback deployments across dev and prod environments."
|
||||||
|
metadata: {"openclaw":{"emoji":"🦑","requires":{"bins":["ssh","argocd"]}}}
|
||||||
|
---
|
||||||
|
|
||||||
|
# ArgoCD Skill
|
||||||
|
|
||||||
|
Manage Kubernetes application deployments using ArgoCD CLI. Supports dev and prod environments at Telnyx.
|
||||||
|
|
||||||
|
## ⚠️ Access Requirement
|
||||||
|
|
||||||
|
**All ArgoCD commands must be run via SSH to the main machine first:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh daan@192.168.200.1
|
||||||
|
```
|
||||||
|
|
||||||
|
The `argocd` CLI is installed there with access to both environments.
|
||||||
|
|
||||||
|
## Environments
|
||||||
|
|
||||||
|
| Environment | URL | Cluster |
|
||||||
|
|-------------|-----|---------|
|
||||||
|
| dev | `argo-cd.query.dev.telnyx.io:8080` | gce-management-ch1-dev |
|
||||||
|
| prod | `argo-cd.query.prod.telnyx.io:8080` | gce-management-dc2-prod |
|
||||||
|
|
||||||
|
## Context Management
|
||||||
|
|
||||||
|
Switch between environments:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Switch to dev
|
||||||
|
argocd context dev
|
||||||
|
|
||||||
|
# Switch to prod
|
||||||
|
argocd context prod
|
||||||
|
|
||||||
|
# Login (if session expired) - opens browser for SSO
|
||||||
|
argocd login argo-cd.query.dev.telnyx.io:8080 --sso
|
||||||
|
argocd login argo-cd.query.prod.telnyx.io:8080 --sso
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Commands
|
||||||
|
|
||||||
|
### List Applications
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List all apps in current context
|
||||||
|
argocd app list
|
||||||
|
|
||||||
|
# Filter by project or name
|
||||||
|
argocd app list | grep <pattern>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check Application Status
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Get detailed app info (status, health, sync state)
|
||||||
|
argocd app get <app-name>
|
||||||
|
|
||||||
|
# Check health only
|
||||||
|
argocd app health <app-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deploy (Sync)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Sync an application (deploy latest)
|
||||||
|
argocd app sync <app-name>
|
||||||
|
|
||||||
|
# Sync with prune (remove resources not in git)
|
||||||
|
argocd app sync <app-name> --prune
|
||||||
|
|
||||||
|
# Sync specific resources only
|
||||||
|
argocd app sync <app-name> --resource <group>:<kind>:<name>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Preview Changes
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Show diff between live and desired state
|
||||||
|
argocd app diff <app-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
### History & Rollback
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# View deployment history
|
||||||
|
argocd app history <app-name>
|
||||||
|
|
||||||
|
# Rollback to a previous revision
|
||||||
|
argocd app rollback <app-name> <history-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Workflows
|
||||||
|
|
||||||
|
### Deploy to Dev
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh daan@192.168.200.1
|
||||||
|
argocd context dev
|
||||||
|
argocd app sync <app-name>
|
||||||
|
argocd app get <app-name> # verify health
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deploy to Prod
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh daan@192.168.200.1
|
||||||
|
argocd context prod
|
||||||
|
argocd app diff <app-name> # preview changes first!
|
||||||
|
argocd app sync <app-name>
|
||||||
|
argocd app get <app-name> # verify health
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check App Health Across Environments
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh daan@192.168.200.1
|
||||||
|
|
||||||
|
# Dev
|
||||||
|
argocd context dev
|
||||||
|
argocd app get <app-name> | head -20
|
||||||
|
|
||||||
|
# Prod
|
||||||
|
argocd context prod
|
||||||
|
argocd app get <app-name> | head -20
|
||||||
|
```
|
||||||
|
|
||||||
|
### Emergency Rollback
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh daan@192.168.200.1
|
||||||
|
argocd context prod
|
||||||
|
argocd app history <app-name> # find good revision
|
||||||
|
argocd app rollback <app-name> <revision-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Managed Repositories
|
||||||
|
|
||||||
|
ArgoCD syncs from these Git repositories:
|
||||||
|
|
||||||
|
- `https://github.com/team-telnyx/deploy-infra-bare-metal-main`
|
||||||
|
- `https://github.com/team-telnyx/infra-svc-k8s-addons/`
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### App Stuck in "Progressing"
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check events and pod status
|
||||||
|
argocd app get <app-name> --show-operation
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sync Failed
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Get detailed sync result
|
||||||
|
argocd app get <app-name>
|
||||||
|
|
||||||
|
# Check for resource conflicts
|
||||||
|
argocd app diff <app-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Session Expired
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Re-authenticate via SSO
|
||||||
|
argocd login argo-cd.query.dev.telnyx.io:8080 --sso
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tips
|
||||||
|
|
||||||
|
- **Always check `diff` before syncing to prod** - know what you're deploying
|
||||||
|
- **Use `--prune` carefully** - it removes resources not in git
|
||||||
|
- **Check history before rollback** - find the right revision ID
|
||||||
|
- **Health ≠ Synced** - an app can be synced but unhealthy (pods crashing)
|
||||||
Loading…
Reference in New Issue
Block a user