{"id":15322935,"url":"https://github.com/msfidelis/eks-app-helm-chart","last_synced_at":"2026-04-28T20:33:12.131Z","repository":{"id":92817566,"uuid":"403771766","full_name":"msfidelis/eks-app-helm-chart","owner":"msfidelis","description":"Helm Chart to Grant High Availability for Applications in EKS with Istio :whale: :package: :rocket: ","archived":false,"fork":false,"pushed_at":"2021-09-11T01:21:11.000Z","size":14,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-01T21:14:09.546Z","etag":null,"topics":["aws","eks","helm","helm-chart","istio","kubernetes"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/msfidelis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-06T22:21:01.000Z","updated_at":"2024-04-26T08:40:34.000Z","dependencies_parsed_at":"2023-04-21T16:05:04.786Z","dependency_job_id":null,"html_url":"https://github.com/msfidelis/eks-app-helm-chart","commit_stats":{"total_commits":5,"total_committers":1,"mean_commits":5.0,"dds":0.0,"last_synced_commit":"6f3ff17ae5ba5253056ea1ae4a95c95ea2a74a4c"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msfidelis%2Feks-app-helm-chart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msfidelis%2Feks-app-helm-chart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msfidelis%2Feks-app-helm-chart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msfidelis%2Feks-app-helm-chart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msfidelis","download_url":"https://codeload.github.com/msfidelis/eks-app-helm-chart/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245898335,"owners_count":20690466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","eks","helm","helm-chart","istio","kubernetes"],"created_at":"2024-10-01T09:18:36.064Z","updated_at":"2026-04-28T20:33:07.111Z","avatar_url":"https://github.com/msfidelis.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eWelcome to EKS Application Helm Chart 👋\u003c/h1\u003e\n\u003cp\u003e\n  \u003cimg alt=\"Version\" src=\"https://img.shields.io/badge/version-v1-blue.svg?cacheSeconds=2592000\" /\u003e\n  \u003ca href=\"/\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Documentation\" src=\"https://img.shields.io/badge/documentation-yes-brightgreen.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"/LICENSE\" target=\"_blank\"\u003e\n    \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/fidelissauro\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Twitter: fidelissauro\" src=\"https://img.shields.io/twitter/follow/fidelissauro.svg?style=social\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003e Helm Chart to Grant High Availability for Any Applications Running on EKS\n\n\n### 🏠 [Homepage](.)\n\n### ✨ [Demo](/)\n\n## Install\n\n```sh\ngit clone git@github.com:msfidelis/eks-app-helm-chart.git\ncd eks-app-helm-chart/\n```\n\n## Usage Simple\n\n```sh\nhelm install simple chart/ -f examples/simple/values.yaml -n simple\nhelm update  simple chart/ -f examples/simple/values.yaml -n simple\n```\n\n## Run tests\n\n```sh\ncurl simple.k8s.raj.ninja/version -i\nHTTP/1.1 200 OK\ncontent-type: application/json; charset=utf-8\ndate: Mon, 06 Sep 2021 23:20:58 GMT\ncontent-length: 23\nx-envoy-upstream-service-time: 3\nserver: istio-envoy\n\n{\"version\":\"simple-v1\"}\n```\n\n## Features \n\n### Deployment with AWS Zones Anti-Affinity (Multi-AZ Distribuition)\n\nBy default Kubernetes (EKS) don't provide multi-az deployments for pods, only for nodes and control plane. \n\nThis chart solve this using node label `failure-domain.beta.kubernetes.io/zone` to sugest to scheduler where place the pod. You can use `availability.multiaz.mode` with `soft` or `hard` value\n\n```yaml\n    spec:\n      affinity:\n\n        {{ if eq .Values.availability.multiaz.mode \"soft\" }}\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchExpressions:\n                - key: app\n                  operator: In\n                  values:\n                  - {{ .Values.application.name }}\n              topologyKey: failure-domain.beta.kubernetes.io/zone\n            weight: 100            \n        {{ end }}\n\n        {{ if eq .Values.availability.multiaz.mode \"hard\" }}\n        podAntiAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n          - labelSelector:\n              matchExpressions:\n              - key: app\n                operator: In\n                values:\n                - {{ .Values.application.name }}\n            topologyKey: failure-domain.beta.kubernetes.io/zone\n        {{ end }}\n```\n\nThis is an example with `hard` mode, trying to run 4 replicas on a 3 AZ's Cluster. This is grant a high consistency pods in available AZ's  \n\n```sh\n❯ kubectl get pods -n chip\nNAME                    READY   STATUS    RESTARTS   AGE\nchip-58b85cfc98-dfm22   0/2     Pending   0          77s\nchip-58b85cfc98-lpgq9   2/2     Running   0          77s\nchip-58b85cfc98-n8fb7   2/2     Running   0          77s\nchip-58b85cfc98-nk8wd   2/2     Running   0          77s\n```\n\nThis is an example on `soft` mode, this is works like a soft suggestion to scheduler. Instead `hard` mode, `soft` mode don't lock scheduler to place a pods. \n\n```sh\n❯ kubectl get pods -n chip\nNAME                   READY   STATUS    RESTARTS   AGE\nchip-7df5b89bb-8kb4x   2/2     Running   0          67s\nchip-7df5b89bb-9gvcz   2/2     Running   0          67s\nchip-7df5b89bb-b489k   2/2     Running   0          67s\nchip-7df5b89bb-dcsqp   2/2     Running   0          67s\n```\n\n### Deployment with hostname Anti-Affinity suggestion \n\nThis chart uses node label `kubernetes.io/hostname` to sugest to scheduler where place the pod. You can use `availability.host.mode` with `soft` or `hard` value. \n\nThe `soft` mode suggest do scheduler do dont' place a pod in a node with one replica already running. The `hard` mode prevent this. \n\nThis example show `hard` mode running `8` replicas running on cluster with `6` nodes. \n\n```sh\n❯ kubectl get pods -n chip -o wide\nNAME                   READY   STATUS    RESTARTS   AGE\nchip-789cffddb-5zmzx   0/2     Pending   0          4m41s    \u003cnone\u003e        \u003cnone\u003e                       \u003cnone\u003e           \u003cnone\u003e\nchip-789cffddb-cktcf   2/2     Running   0          4m40s   10.0.87.162   ip-10-0-80-123.ec2.internal   \u003cnone\u003e           \u003cnone\u003e\nchip-789cffddb-dhv9c   2/2     Running   0          4m41s   10.0.81.54    ip-10-0-87-5.ec2.internal     \u003cnone\u003e           \u003cnone\u003e\nchip-789cffddb-ds92c   2/2     Running   0          4m41s   10.0.55.32    ip-10-0-56-184.ec2.internal   \u003cnone\u003e           \u003cnone\u003e\nchip-789cffddb-k7nlw   2/2     Running   0          4m41s   10.0.66.176   ip-10-0-68-5.ec2.internal     \u003cnone\u003e           \u003cnone\u003e\nchip-789cffddb-lmpgr   0/2     Pending   0          4m40s    \u003cnone\u003e        \u003cnone\u003e                       \u003cnone\u003e           \u003cnone\u003e\nchip-789cffddb-mf5jr   2/2     Running   0          4m41s   10.0.73.74    ip-10-0-65-77.ec2.internal    \u003cnone\u003e           \u003cnone\u003e\nchip-789cffddb-vtf5x   2/2     Running   0          4m41s   10.0.70.96    ip-10-0-66-110.ec2.internal   \u003cnone\u003e           \u003cnone\u003e\n```\n\n### Istio Retries by Default\n\nYou can enable and disable connections retries on application virtualservice.\n\n```yaml\n# Retry Options - Envoy\nretry:\n  max_attemps: 2\n  timeout: \n    enabled: true\n    max_timeout: 4s\n  error:\n    enabled: true\n    errors: gateway-error,connect-failure,refused-stream,5xx\n```\n\n### Istio Circuit Breaker \n\nYou can improve Istio Circuit Breaker for pods and services. \n\n```yaml\n# Circuit Breaking\ncircuit_breaker:\n  enabled: true\n  max_connections: 500\n  max_pending_requests: 20\n  max_requests_per_connection: 20\n  max_consecutive_5xx_errors: 50\n  evaluation_interval: 1s\n  ejection_time: 10s\n  ejection_percent: 100\n```\n\n### Capacity \n\n```yaml \nreplicas:\n  desired: 2\n  minimum: 2\n  maximum: 6\n```\n\n### Horizontal Pod Autoscaling\n\nSetting `autoscaling` key\n\n```yaml\nautoscaling:\n  hpa:\n    cpu:\n      enabled: true\n      averageUtilization: 80\n    memory:\n      enabled: true\n      averageUtilization: 80\n```\n\n### Vertial Pod Autoscaling\n\n### Healthcheck and Grace Periods\n\n```yaml\nprobe:\n  startup:\n    enabled: true\n    path: /healthcheck\n    failureThreshold: 10\n    periodSeconds: 10\n  liveness:\n    enabled: true\n    path: /liveness\n    failureThreshold: 10\n    periodSeconds: 10\n  readiness:\n    enabled: true\n    path: /readiness\n    failureThreshold: 10\n    periodSeconds: 10\n\n```\n\n### QoS Distribuition \n\n## Author\n\n👤 **Matheus Fidelis**\n\n* Website: msfidelis.github.io\n* Twitter: [@fidelissauro](https://twitter.com/fidelissauro)\n* Github: [@msfidelis](https://github.com/msfidelis)\n* LinkedIn: [@msfidelis](https://linkedin.com/in/msfidelis)\n\n## 🤝 Contributing\n\nContributions, issues and feature requests are welcome!\u003cbr /\u003eFeel free to check [issues page](/issues). \n\n## Show your support\n\nGive a ⭐️ if this project helped you!\n\n## 📝 License\n\nCopyright © 2021 [Matheus Fidelis](https://github.com/msfidelis).\u003cbr /\u003e\nThis project is [MIT](/LICENSE) licensed.\n\n***\n_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsfidelis%2Feks-app-helm-chart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsfidelis%2Feks-app-helm-chart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsfidelis%2Feks-app-helm-chart/lists"}