{"id":13618411,"url":"https://github.com/weaveworks/eks-quickstart-app-dev","last_synced_at":"2025-12-25T14:39:56.984Z","repository":{"id":54612827,"uuid":"198399957","full_name":"weaveworks/eks-quickstart-app-dev","owner":"weaveworks","description":"Example flux manifests for eksctl gitops","archived":false,"fork":false,"pushed_at":"2021-02-08T14:41:38.000Z","size":71,"stargazers_count":57,"open_issues_count":3,"forks_count":44,"subscribers_count":41,"default_branch":"master","last_synced_at":"2025-01-19T10:10:06.241Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/weaveworks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-23T09:39:43.000Z","updated_at":"2024-10-27T13:03:11.000Z","dependencies_parsed_at":"2022-08-13T21:31:13.937Z","dependency_job_id":null,"html_url":"https://github.com/weaveworks/eks-quickstart-app-dev","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weaveworks%2Feks-quickstart-app-dev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weaveworks%2Feks-quickstart-app-dev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weaveworks%2Feks-quickstart-app-dev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weaveworks%2Feks-quickstart-app-dev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/weaveworks","download_url":"https://codeload.github.com/weaveworks/eks-quickstart-app-dev/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243258506,"owners_count":20262300,"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":[],"created_at":"2024-08-01T20:02:00.890Z","updated_at":"2025-12-25T14:39:56.953Z","avatar_url":"https://github.com/weaveworks.png","language":null,"readme":"# EKS Quickstart App Dev\n\nThis repo contains an initial set of cluster components to be installed and\nconfigured by [eksctl](https://eksctl.io) through GitOps.\n\n## Components\n\n- [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/) -- to easily expose services to the World.\n- [Cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) -- to [automatically add/remove nodes](https://aws.amazon.com/premiumsupport/knowledge-center/eks-cluster-autoscaler-setup/) to/from your cluster based on its usage.\n  - The autoscaler is configured as [recommended in the AWS autoscaler docs](https://docs.aws.amazon.com/eks/latest/userguide/cluster-autoscaler.html#ca-deploy)\n  - See also [the autoscaler docs for the AWS provider](https://github.com/kubernetes/autoscaler/blob/f18b65a80c6f83b35cac057c136af14871552d3c/cluster-autoscaler/cloudprovider/aws/README.md)\n- [Prometheus](https://prometheus.io/) (its [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/), its [operator](https://github.com/coreos/prometheus-operator), its [`node-exporter`](https://github.com/prometheus/node_exporter), [`kube-state-metrics`](https://github.com/kubernetes/kube-state-metrics), and [`metrics-server`](https://github.com/kubernetes-incubator/metrics-server)) -- for powerful metrics \u0026 alerts.\n- [Grafana](https://grafana.com) -- for a rich way to visualize metrics via dashboards you can create, explore, and share.\n- [Kubernetes dashboard](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/) -- Kubernetes' standard dashboard.\n- [Fluentd](https://www.fluentd.org/) \u0026 Amazon's [CloudWatch agent](https://aws.amazon.com/cloudwatch/) -- for cluster \u0026 containers' [log collection, aggregation \u0026 analytics in CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs.html).\n- [podinfo](https://github.com/stefanprodan/podinfo) --  a toy demo application.\n\n## Pre-requisites\n\nA running EKS cluster with [IAM policies](https://eksctl.io/usage/iam-policies/) for:\n\n- ALB ingress\n- auto-scaler\n- CloudWatch\n\nThese policies can be added to a nodegroup by including the following `iam` options in your nodegroup config:\n\n```\nnodeGroups:\n  - iam:\n      withAddonPolicies:\n        albIngress: true\n        autoScaler: true\n        cloudWatch: true\n```\n\n**N.B.**: policies are configured at the nodegroup level.\nTherefore, depending on your use case, you may want to:\n\n- add these policies to all nodegroups,\n- add [node selectors](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/) to the ALB ingress, auto-scaler and CloudWatch pods, so that they are deployed on the nodes configured with these policies.\n\n## How to access workloads\n\nFor security reasons, this quickstart profile does not expose any workload publicly. However, should you want to access one of the workloads, various solutions are possible.\n\n### Port-forwarding\n\nYou could port-forward into a pod, so that you (and _only_ you) could access it locally.\n\nFor example, for `demo/podinfo`:\n\n- run:\n    ```console\n    kubectl --namespace demo port-forward service/podinfo 9898:9898\n    ```\n- go to http://localhost:9898\n\n### Ingress\n\nYou could expose a service publicly, _at your own risks_, via ALB ingress.\n\n**N.B.**: the ALB ingress controller requires services:\n\n- to be of `NodePort` type,\n- to have the following annotations:\n    ```yaml\n    annotations:\n      kubernetes.io/ingress.class: alb\n      alb.ingress.kubernetes.io/scheme: internet-facing\n    ```\n\n#### `NodePort` services\n\nFor any `NodePort` service:\n\n```yaml\napiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n  name: ${name}\n  namespace: ${namespace}\n  annotations:\n    kubernetes.io/ingress.class: alb\n    alb.ingress.kubernetes.io/scheme: internet-facing\n  labels:\n    app: ${service-app-selector}\nspec:\n  rules:\n    - http:\n        paths:\n          - path: /*\n            backend:\n              serviceName: ${service-name}\n              servicePort: 80\n```\n\nA few minutes after deploying the above `Ingress` object, you should be able to see the public URL for the service:\n```console\n$ kubectl get ingress --namespace demo podinfo\nNAME      HOSTS   ADDRESS                                                                     PORTS   AGE\npodinfo   *       xxxxxxxx-${namespace}-${name}-xxxx-xxxxxxxxxx.${region}.elb.amazonaws.com   80      1s\n```\n\n#### `HelmRelease` objects\n\nFor `HelmRelease` objects, you would have to configure `spec.values.service` and `spec.values.ingress`, e.g. for `demo/podinfo`:\n\n```yaml\napiVersion: helm.fluxcd.io/v1\nkind: HelmRelease\nmetadata:\n  name: podinfo\n  namespace: demo\nspec:\n  releaseName: podinfo\n  chart:\n    git: https://github.com/stefanprodan/podinfo\n    ref: 3.0.0\n    path: charts/podinfo\n  values:\n    service:\n      enabled: true\n      type: NodePort\n    ingress:\n      enabled: true\n      annotations:\n        kubernetes.io/ingress.class: alb\n        alb.ingress.kubernetes.io/scheme: internet-facing\n      path: /*\n```\n\n**N.B.**: the above `HelmRelease`\n\n- changes the type of `podinfo`'s service from its default value, `ClusterIP`, to `NodePort`,\n- adds the annotations required for the ALB ingress controller to expose the service, and\n- exposes all of `podinfo`'s URLs, so that all assets can be served over HTTP.\n\nA few minutes after deploying the above `HelmRelease` object, you should be able to see the following `Ingress` object, and the public URL for `podinfo`:\n\n```console\n$ kubectl get ingress --namespace demo podinfo\nNAME      HOSTS   ADDRESS                                                             PORTS   AGE\npodinfo   *       xxxxxxxx-demo-podinfo-xxxx-xxxxxxxxxx.${region}.elb.amazonaws.com   80      1s\n```\n\n## Securing your endpoints\nFor a production-grade deployment, it's recommended to secure your endpoints with SSL. See [Ingress annotations for SSL](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#ssl).\n\nAny sensitive service that needs to be exposed must have some form of authentication. To add authentication to Grafana for e.g., see [Grafana configuration](https://github.com/helm/charts/tree/master/stable/prometheus-operator#grafana).\nTo add authentication to other components, please consult their documentation.\n\n## Get in touch\n\n[Create an issue](https://github.com/weaveworks/eks-quickstart-app-dev/issues/new), or\nlogin to [Weave Community Slack (#eksctl)][slackchan] ([signup][slackjoin]).\n\n[slackjoin]: https://slack.weave.works/\n[slackchan]: https://weave-community.slack.com/messages/eksctl/\n\nWeaveworks follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting a Weaveworks project maintainer, or Alexis Richardson (alexis@weave.works).\n","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweaveworks%2Feks-quickstart-app-dev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweaveworks%2Feks-quickstart-app-dev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweaveworks%2Feks-quickstart-app-dev/lists"}