AWS EKS deployment patterns via Harness CD - Native Helm, Kubernetes manifests, and GitOps strategies with rolling, canary, and blue-green deployments
npx claudepluginhub markus41/claude --plugin aws-eks-helm-keycloakThis skill is limited to using the following tools:
Deploy to AWS EKS via Harness CD with Native Helm, Kubernetes manifests, or GitOps.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Deploy to AWS EKS via Harness CD with Native Helm, Kubernetes manifests, or GitOps.
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>
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>
execution:
steps:
- step:
type: K8sRollingDeploy
name: Rolling Deploy
identifier: rolling_deploy
spec:
skipDryRun: false
timeout: 10m
rollbackSteps:
- step:
type: K8sRollingRollback
name: Rollback
identifier: rollback
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
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
infrastructureDefinition:
name: EKS Production
identifier: eks_production
type: KubernetesDirect
spec:
connectorRef: eks_connector
namespace: <+service.name>-<+env.name>
releaseName: <+service.name>
allowSimultaneousDeployments: false
connector:
name: EKS Production
identifier: eks_production
type: K8sCluster
spec:
credential:
type: InheritFromDelegate
delegateSelectors:
- eks-delegate
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
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
- 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
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"
| 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 |
| 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 |