|
3 | 3 | [ |
4 | 4 | <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Presidential_Standard_of_Belarus_%28fictional%29.svg/240px-Presidential_Standard_of_Belarus_%28fictional%29.svg.png" width="20" height="20" alt="Voices From Belarus" />](https://bysol.org/en/) [](https://vshymanskyy.github.io/StandWithUkraine) |
5 | 5 |
|
6 | | -Setup basic EKS cluster with necessary controllers. Examples for further configuring the EKS cluster can be found in [eks blueprints](https://github.com/aws-ia/terraform-aws-eks-blueprints/tree/main), [tEKS](https://github.com/particuleio/teks) and [eks demo](https://github.com/awslabs/eksdemo) repos. |
| 6 | +Setup EKS cluster with necessary controllers, operators and monitoring stack. Similar projects: |
| 7 | +- [eks blueprints](https://github.com/aws-ia/terraform-aws-eks-blueprints/tree/main) |
| 8 | +- [tEKS](https://github.com/particuleio/teks) |
| 9 | +- [eks demo](https://github.com/awslabs/eksdemo) |
| 10 | + |
| 11 | +## What is included |
| 12 | + |
| 13 | +|| Description | Purpose | Enabled | DNS || |
| 14 | +|EKS cluster module based on [terraform-aws-modules/eks/aws](https://github.com/terraform-aws-modules/terraform-aws-eks) v19|Base|True|| |
| 15 | +|Templates for Managed Node Groups and Fargate Profile to link them to each availability zone instead of all zones at once|Base|True|| |
| 16 | +|Integration of modules with each other and reasonable default values|Base|True|| |
| 17 | +|[CoreDNS EKS addon](https://docs.aws.amazon.com/eks/latest/userguide/managing-coredns.html)|Core|True|| |
| 18 | +|[Kube-Proxy EKS addon](https://docs.aws.amazon.com/eks/latest/userguide/managing-kube-proxy.html)|Core|True|| |
| 19 | +|[VPC CNI EKS addon](https://docs.aws.amazon.com/eks/latest/userguide/managing-vpc-cni.html)|Core|True|| |
| 20 | +|[AWS EBS CSI driver EKS addon](https://docs.aws.amazon.com/eks/latest/userguide/managing-ebs-csi.html)|Core|True|| |
| 21 | +|[Snapshot Controller EKS addon](https://docs.aws.amazon.com/eks/latest/userguide/csi-snapshot-controller.html)|Core|True|| |
| 22 | +|[AWS EFS CSI driver](https://github.com/aws-ia/terraform-aws-eks-blueprints-addons/blob/main/docs/addons/aws-efs-csi-driver.md)|Core|True|| |
| 23 | +|[AWS Node Termination Handler](https://github.com/aws-ia/terraform-aws-eks-blueprints-addons/blob/main/docs/addons/aws-node-termination-handler.md)|Core|True|| |
| 24 | +|[Cert Manager](https://github.com/aws-ia/terraform-aws-eks-blueprints-addons/blob/main/docs/addons/cert-manager.md)|Core|True|| |
| 25 | +|[Cluster Autoscaler](https://github.com/aws-ia/terraform-aws-eks-blueprints-addons/blob/main/docs/addons/cluster-autoscaler.md)|Core|True|| |
| 26 | +|[Metrics Server](https://github.com/aws-ia/terraform-aws-eks-blueprints-addons/blob/main/docs/addons/metrics-server.md)|Core|True|| |
| 27 | +|[Vertical Pod Autoscaler](https://github.com/aws-ia/terraform-aws-eks-blueprints-addons/blob/main/docs/addons/vertical-pod-autoscaler.md)|Core|True|| |
| 28 | +|[Ingress Apisix](https://github.com/apache/apisix-ingress-controller)|Ingress|True|| |
| 29 | +|[Ingress Nginx](https://github.com/kubernetes/ingress-nginx)|Ingress|False|| |
| 30 | +|[Victoriametrics Operator](https://github.com/VictoriaMetrics/operator)|Operator|True|| |
| 31 | +|[Opentelemetry Operator](https://github.com/open-telemetry/opentelemetry-operator)|Operator|False|| |
| 32 | +|[Clickhouse Operator](https://github.com/Altinity/clickhouse-operator)|Operator|False|| |
| 33 | +|[Grafana Operator](https://artifacthub.io/packages/helm/bitnami/grafana-operator)|Operator|True|| |
| 34 | +|[Victoriametrics](https://github.com/VictoriaMetrics/helm-charts/blob/master/charts/victoria-metrics-k8s-stack/README.md)|Monitoring|True|vmauth.${var.ingress_domain}<br>victoriametrics.${var.ingress_domain}<br>vmalertmanager.${var.ingress_domain}<br>vmagent.${var.ingress_domain}<br>vmalert.${var.ingress_domain}| |
| 35 | +|[Grafana](https://grafana.com/oss/grafana/)|Monitoring|True|grafana.${var.ingress_domain}| |
| 36 | +|[Uptrace](https://uptrace.dev/)|Monitoring|True|uptrace.${var.ingress_domain}| |
| 37 | +|[Vector](https://vector.dev/)|Monitoring|True|| |
| 38 | +|[Qryn](https://qryn.metrico.in)|Monitoring|False|qryn.${var.ingress_domain}| |
| 39 | +|[Openobserve](https://openobserve.ai/)|Monitoring|False|openobserve.${var.ingress_domain}| |
| 40 | +|[Kubernetes Dashboard](https://github.com/kubernetes/dashboard)|Control|False|k8s-dashboard.${var.ingress_domain}| |
| 41 | + |
| 42 | +## What is not included right now |
| 43 | + |
| 44 | +- email integration |
| 45 | +- dns integration |
| 46 | +- alert rules |
| 47 | +- resources limits |
| 48 | +- ci & cd integration |
| 49 | +- network policies |
| 50 | +- host-based pod segregation |
| 51 | +- ... |
7 | 52 |
|
8 | 53 | ## Depend on |
9 | 54 | - terraform |
@@ -45,21 +90,11 @@ After `terraform destroy` check ec2 volumes for unused disks as aws-ebs-csi-driv |
45 | 90 |
|
46 | 91 | Helm upgrade `reset_values` flag set to `true` for everything except databases like postgresql and clickhouse, see this [explain](https://shipmight.com/blog/understanding-helm-upgrade-reset-reuse-values) |
47 | 92 |
|
48 | | -## Variables |
49 | | - |
50 | 93 | ## Outputs |
51 | 94 |
|
52 | | -| Name | Description | |
53 | | -|------|-------------| |
54 | | -|region|The AWS region| |
55 | | -|vpc_id|The ID of the target VPC| |
56 | | -|cluster_name|The name of the EKS| |
57 | | -|cluster_endpoint|Endpoint for your Kubernetes API server| |
58 | | -|cluster_certificate_authority_data|Base64 encoded certificate data required to communicate with the cluster| |
59 | | - |
60 | | -Also `~/.kube/eks-${account_id}-${region}-${cluster_name}` will be created by `aws eks` utility. |
| 95 | +Check the [./example/outputs.example](./example/outputs.example) file to get an example of the output. For setting DNS you can describe ingress external address with kubectl: `kubectl get service/apisix-ingress-controller-apisix-gateway -n ingress-apisix`. |
61 | 96 |
|
62 | | -You can describe apisix ingress external address with kubectl: `kubectl get service/apisix-ingress-controller-apisix-gateway -n ingress-apisix`. |
| 97 | +Also `~/.kube/eks-${account_id}-${region}-${cluster_name}` kubeconfig will be created by `aws eks` utility. |
63 | 98 |
|
64 | 99 | ## About the Author |
65 | 100 |
|
|
0 commit comments