Claude-skill-registry harness-eks-deployments
AWS EKS deployment patterns via Harness CD - Native Helm, Kubernetes manifests, and GitOps strategies with rolling, canary, and blue-green deployments
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/harness-eks-deployments" ~/.claude/skills/majiayu000-claude-skill-registry-harness-eks-deployments && rm -rf "$T"
manifest:
skills/data/harness-eks-deployments/SKILL.mdsource content
Harness EKS Deployments Skill
Deploy to AWS EKS via Harness CD with Native Helm, Kubernetes manifests, or GitOps.
Use For
- EKS deployment pipelines, deployment strategies (Rolling/Canary/Blue-Green)
- Native Helm deployments, GitOps with ArgoCD, multi-environment promotion
Deployment Types
Native Helm Deployment
service: name: my-service serviceDefinition: type: NativeHelm spec: manifests: - manifest: identifier: helm_chart type: HelmChart spec: store: type: HarnessCode spec: repoName: my-app branch: main folderPath: charts/my-service chartName: my-service chartVersion: <+input> helmVersion: V3 artifacts: primary: primaryArtifactRef: ecr_image sources: - identifier: ecr_image type: Ecr spec: connectorRef: aws_connector region: us-west-2 imagePath: my-service tag: <+input>
Kubernetes Manifest Deployment
service: name: my-service serviceDefinition: type: Kubernetes spec: manifests: - manifest: identifier: k8s_manifests type: K8sManifest spec: store: type: HarnessCode spec: repoName: my-app branch: main paths: - k8s/base - k8s/overlays/<+env.name>
Deployment Strategies
Rolling (Zero-Downtime Default)
execution: steps: - step: type: K8sRollingDeploy name: Rolling Deploy identifier: rolling_deploy spec: skipDryRun: false timeout: 10m rollbackSteps: - step: type: K8sRollingRollback name: Rollback identifier: rollback
Canary (Progressive Traffic Shift)
execution: steps: - step: type: K8sCanaryDeploy name: Canary 10% identifier: canary_10 spec: instanceSelection: type: Percentage spec: percentage: 10 - step: type: HarnessApproval name: Approve Canary spec: approvers: userGroups: - account.DevOpsTeam - step: type: K8sCanaryDeploy name: Canary 50% identifier: canary_50 spec: instanceSelection: type: Percentage spec: percentage: 50 - step: type: K8sCanaryDeploy name: Full Rollout identifier: full_rollout spec: instanceSelection: type: Percentage spec: percentage: 100 rollbackSteps: - step: type: K8sCanaryDelete name: Canary Delete identifier: canary_delete
Blue-Green (Instant Cutover)
execution: steps: - step: type: K8sBGStageDeployment name: Stage Deployment identifier: stage_deployment - step: type: HarnessApproval name: Approve Switch spec: approvers: userGroups: - account.ProductionApprovers - step: type: K8sBGSwapServices name: Swap Services identifier: swap_services rollbackSteps: - step: type: K8sBGSwapServices name: Rollback Swap identifier: rollback_swap
EKS Infrastructure Definition
infrastructureDefinition: name: EKS Production identifier: eks_production type: KubernetesDirect spec: connectorRef: eks_connector namespace: <+service.name>-<+env.name> releaseName: <+service.name> allowSimultaneousDeployments: false
AWS EKS Connector
connector: name: EKS Production identifier: eks_production type: K8sCluster spec: credential: type: InheritFromDelegate delegateSelectors: - eks-delegate
Environment Configuration
Development
environment: name: Development identifier: development type: PreProduction overrides: manifests: - manifest: identifier: values_override type: Values spec: store: type: HarnessCode spec: repoName: my-app branch: main paths: - charts/my-service/values-dev.yaml
Production
environment: name: Production identifier: production type: Production overrides: manifests: - manifest: identifier: values_override type: Values spec: store: type: HarnessCode spec: repoName: my-app branch: main paths: - charts/my-service/values-prod.yaml
Verification & Health Checks
- step: type: Verify name: Deployment Verification spec: type: Canary monitoredService: type: Default spec: sensitivity: MEDIUM duration: 5m - step: type: Http name: Health Check spec: url: http://<+service.name>.<+infra.namespace>.svc.cluster.local/health method: GET assertion: <+httpResponseCode> == 200
Multi-Environment Promotion Pipeline
pipeline: name: EKS Promotion Pipeline stages: - stage: name: Deploy Dev type: Deployment spec: deploymentType: NativeHelm environment: environmentRef: development execution: steps: - step: type: HelmDeploy name: Helm Deploy - stage: name: Deploy Staging type: Deployment spec: environment: environmentRef: staging when: pipelineStatus: Success - stage: name: Deploy Production type: Deployment spec: environment: environmentRef: production when: pipelineStatus: Success condition: <+pipeline.stages.deploy_staging.status> == "SUCCEEDED"
Common Expressions
| Expression | Purpose |
|---|---|
| Service name |
| Environment name |
| Environment type (Production/PreProduction) |
| Kubernetes namespace |
| Helm release name |
| Full image path |
| Image tag |
| Pipeline execution ID |
Troubleshooting
| Issue | Solution |
|---|---|
| Helm release failed | Check values file syntax, verify chart dependencies |
| Pod stuck in Pending | Check node resources, PVC availability |
| Image pull error | Verify ECR connector, check image exists |
| Namespace not found | Ensure namespace exists or set createNamespace: true |
| Rollback failed | Check rollback steps, verify previous release exists |
| Verification failed | Adjust sensitivity, extend duration |