home / skills / markus41 / claude / harness-eks-deployments
/plugins/aws-eks-helm-keycloak/skills/harness-eks-deployments
This skill helps deploy to AWS EKS using Harness CD with native Helm, Kubernetes manifests, or GitOps across environments.
npx playbooks add skill markus41/claude --skill harness-eks-deploymentsReview the files below or copy the command above to add this skill to your agents.
---
name: harness-eks-deployments
description: AWS EKS deployment patterns via Harness CD - Native Helm, Kubernetes manifests, and GitOps strategies with rolling, canary, and blue-green deployments
allowed-tools:
- Bash
- Read
- Write
- Edit
- Glob
- Grep
- Task
- WebFetch
dependencies:
- harness-code-integration
triggers:
- eks deploy
- harness eks
- kubernetes deployment
- helm deployment
- canary deployment
- blue green deployment
- rolling deployment
- eks pipeline
---
# 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
```yaml
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
```yaml
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)
```yaml
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)
```yaml
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)
```yaml
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
```yaml
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
```yaml
connector:
name: EKS Production
identifier: eks_production
type: K8sCluster
spec:
credential:
type: InheritFromDelegate
delegateSelectors:
- eks-delegate
```
## Environment Configuration
### Development
```yaml
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
```yaml
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
```yaml
- 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
```yaml
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>` | Service name |
| `<+env.name>` | Environment name |
| `<+env.type>` | Environment type (Production/PreProduction) |
| `<+infra.namespace>` | Kubernetes namespace |
| `<+infra.releaseName>` | Helm release name |
| `<+artifact.image>` | Full image path |
| `<+artifact.tag>` | Image tag |
| `<+pipeline.executionId>` | 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 |
## References
- [Harness EKS Tutorial](https://developer.harness.io/docs/continuous-delivery/deploy-srv-diff-platforms/kubernetes/eks-deployments)
- [Native Helm Deployments](https://developer.harness.io/docs/continuous-delivery/deploy-srv-diff-platforms/helm/native-helm-quickstart)
This skill provides opinionated Harness CD patterns for deploying to AWS EKS using Native Helm, Kubernetes manifests, or GitOps. It documents rolling, canary, and blue-green strategies, plus environment and connector setups, verification checks, and multi-environment promotion pipelines. Practical examples and troubleshooting tips make it easy to adopt predictable, repeatable EKS delivery pipelines.
The skill describes service definitions that point to Helm charts or raw Kubernetes manifests stored in a code repository, and ties those to artifacts such as ECR images. It maps infrastructure definitions to an EKS cluster via a Kubernetes connector and defines execution steps for Rolling, Canary, and Blue-Green deployments, including approval gates, verification steps, and rollback actions. It also shows environment overrides, release naming, and expressions to parameterize pipelines across dev, staging, and production.
How do I choose between Native Helm and Kubernetes manifests?
Use Native Helm if you manage charts and want Helm features like templating and chart dependencies; use raw manifests or Kustomize overlays if you prefer GitOps-style manifests and fine-grained Kubernetes control.
What verification steps are recommended for canary deployments?
Attach a Verify step configured for Canary monitoring and a short Http health check. Use medium sensitivity with a 3–5 minute duration, then require an approval before increasing traffic.