Skip to content

Commit a16a68c

Browse files
committed
docs(aws): record grill-me answers
Key decisions: - Single account, ap-southeast-2, dev only - EKS Auto Mode pure default NodePool - ACK manages RDS (db.t4g.small), credentials in K8s Secret - ALB + ACM TLS, Route 53 via ACK, WAF via ACK - CloudFront via ACK (Preview, accepted) - Argo CD as EKS Capability for GitOps - KRO single top-level instance per environment - EKS Pod Identity, External Secrets Operator - 5-layer tagging, self-contained (no sparked-infra dependency) - MVP: EKS + VPC + RDS, then iterate Refs: #19
1 parent d2695b5 commit a16a68c

1 file changed

Lines changed: 39 additions & 19 deletions

File tree

aws/GRILL-ME.md

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,25 @@ Answers inline after each question — fill in and save.
1111
Will the EKS cluster and its backing services (RDS, ECR, CloudFront) all live in one AWS account, or do you want a multi-account setup where ACK creates resources cross-account via IAM role assumption?
1212

1313
**Answer:**
14+
single account
1415

1516
### 1.2 Region
1617
Which AWS region? (The sparked-infrastructure pattern uses `ap-southeast-2`.)
1718

1819
**Answer:**
20+
ap-southeast-2
1921

2022
### 1.3 Environments
2123
How many environments do we need to spec? (e.g., `dev` only for now, or `dev` + `prod`? The KRO instances directory can hold per-env configs.)
2224

2325
**Answer:**
26+
dev only - remember this is to make recipe for others. Let's start simple, and we need to tear it down clean.
2427

2528
### 1.4 Existing VPC or new?
2629
Should the bootstrap Terraform create a new VPC, or should it expect an existing VPC (like sparked-infrastructure's sparkey-eks does)?
2730

2831
**Answer:**
32+
new VPC by default, with option to provide one
2933

3034
---
3135

@@ -37,16 +41,19 @@ EKS Auto Mode creates a `default` NodePool. The Azure version has two node pools
3741
- (b) One custom NodePool/NodeClass for Ontoserver workloads (to control instance family, e.g., memory-optimised for the 4G+ heap)?
3842

3943
**Answer:**
44+
pure default - these people want to bring the server up. This can be additional documentation
4045

4146
### 2.2 Kubernetes version pinning
4247
Should the bootstrap pin a specific K8s version (e.g., `1.32`) or track latest?
4348

4449
**Answer:**
50+
I think pinning is better, as features change
4551

4652
### 2.3 Private or public endpoint?
4753
EKS API server endpoint: public, private, or both? (sparked-infrastructure uses `endpoint_public_access = true`.)
4854

4955
**Answer:**
56+
endpoint_public_access = true - we need to expect that initially people will need to be able to inspect - again - documentation
5057

5158
---
5259

@@ -58,7 +65,7 @@ The Azure version uses `B_Gen5_2` (basic tier, 2 vCPU). The sparked-infrastructu
5865
- (b) `db.t4g.medium` (2 vCPU, 4 GiB) — production-like
5966
- (c) Other
6067

61-
**Answer:**
68+
**Answer:** - please check the ontoserver requirements. I would use (a) as we only want to prove how it works in principle - documented switch would be ideal
6269

6370
### 3.2 RDS via ACK or bootstrap Terraform?
6471
ACK's RDS controller is GA. Options:
@@ -68,15 +75,15 @@ ACK's RDS controller is GA. Options:
6875

6976
Which approach? Note: if ACK manages RDS and you delete the K8s resource, the DB gets deleted too (unless deletion policy is set to `retain`).
7077

71-
**Answer:**
78+
**Answer:** (a)
7279

7380
### 3.3 Database credentials
7481
How should the DB password be managed?
7582
- (a) ACK generates a master password stored in a K8s Secret
7683
- (b) AWS Secrets Manager (with External Secrets Operator pulling it into K8s)
7784
- (c) Something else
7885

79-
**Answer:**
86+
**Answer:** (a)
8087

8188
---
8289

@@ -87,12 +94,13 @@ The Azure version uses a 512 GB Premium managed disk. EKS Auto Mode includes EBS
8794
- (a) gp3 PVC (what size? 512 GB like Azure, or smaller for initial dev?)
8895
- (b) io2 for higher IOPS if indexing is time-sensitive
8996

90-
**Answer:**
97+
**Answer:** (a) with documentation for (b) switch?
9198

9299
### 4.2 EBS encryption
93100
EKS Auto Mode encrypts by default. Use default AWS-managed key, or a customer-managed KMS key?
94101

95102
**Answer:**
103+
default
96104

97105
---
98106

@@ -105,7 +113,7 @@ Azure version uses an optional ACR. Same pattern for ECR?
105113
- (c) Pull directly from quay.io (no registry needed in AWS)
106114

107115
**Answer:**
108-
116+
(a)
109117
---
110118

111119
## 6. Networking & Ingress
@@ -117,7 +125,7 @@ EKS Auto Mode includes the AWS Load Balancer Controller. The existing EKS Helm e
117125
- (c) Both supported (Envoy for app routing, ALB for external ingress)
118126

119127
**Answer:**
120-
128+
(a)
121129
### 6.2 TLS termination
122130
- (a) ALB terminates TLS using ACM certificate (simplest for AWS)
123131
- (b) cert-manager issues certs to Kubernetes Secrets (like Azure AGIC pattern)
@@ -126,23 +134,23 @@ EKS Auto Mode includes the AWS Load Balancer Controller. The existing EKS Helm e
126134
Note from the existing README: "cert-manager is not compatible with `ingress.className: alb`". If ALB, TLS must use ACM certificate ARN annotations.
127135

128136
**Answer:**
129-
137+
(a)
130138
### 6.3 DNS
131139
Should the deployment include Route 53 record management?
132140
- (a) Yes, ACK route53-controller creates DNS records
133141
- (b) No, DNS is managed externally
134142
- (c) ExternalDNS operator (watches Ingress annotations, creates Route 53 records)
135143

136144
**Answer:**
137-
145+
(a)
138146
### 6.4 WAF
139147
The Azure version has an optional WAF on the App Gateway. For AWS:
140148
- (a) AWS WAF on ALB/CloudFront via ACK wafv2-controller
141149
- (b) Skip WAF for now (add later)
142150
- (c) Other
143151

144152
**Answer:**
145-
153+
(a)
146154
---
147155

148156
## 7. CDN / Caching
@@ -155,7 +163,7 @@ The ACK cloudfront-controller exists but is in Preview (not GA). Options:
155163
- (d) Use Varnish in-cluster caching (the ontoserver-extras chart already supports this) instead of CloudFront
156164

157165
**Answer:**
158-
166+
(a)
159167
---
160168

161169
## 8. Observability
@@ -168,13 +176,13 @@ EKS Auto Mode includes Container Insights. The sparked-infrastructure also deplo
168176
- (d) OpenTelemetry (chart supports OTel instrumentation)
169177

170178
**Answer:**
171-
179+
(a)
172180
### 8.2 Logging
173181
- (a) CloudWatch Logs (Auto Mode default)
174182
- (b) Something else (Loki, etc.)
175183

176184
**Answer:**
177-
185+
(a)
178186
---
179187

180188
## 9. Tagging & Cleanup
@@ -189,6 +197,7 @@ What tag keys should all resources carry? Suggested minimum:
189197
What keys/values do you want? Any org-mandated tags?
190198

191199
**Answer:**
200+
use minimum, explain how to extend
192201

193202
### 9.2 5-layer tagging
194203
EKS Auto Mode resources created by built-in controllers (EC2, EBS, ALB) require a [5-layer tagging pattern](https://aws-samples.github.io/sample-aws-eks-auto-mode/docs/architecture/tagging):
@@ -201,6 +210,7 @@ EKS Auto Mode resources created by built-in controllers (EC2, EBS, ALB) require
201210
This requires `enable_auto_mode_custom_tags = true` on the EKS module (adds IAM permissions for custom tag keys). Acceptable?
202211

203212
**Answer:**
213+
yes
204214

205215
### 9.3 KRO as resource grouping
206216
You mentioned KRO ResourceGroups as an analogue to Azure Resource Groups for logical grouping + cascading cleanup. The KRO `ResourceGraphDefinition` composes resources, and deleting the instance triggers deletion of all composed resources.
@@ -211,7 +221,7 @@ Should we design:
211221
- (c) Hybrid — one master that references sub-compositions
212222

213223
**Answer:**
214-
224+
(a) - explain alternatives
215225
---
216226

217227
## 10. Secrets & Identity
@@ -223,12 +233,12 @@ EKS Auto Mode supports EKS Pod Identity (no IRSA setup needed). The chart alread
223233
- (c) Either — support both
224234

225235
**Answer:**
226-
236+
(a)
227237
### 10.2 External Secrets Operator
228238
The ontoserver chart already supports External Secrets. Should the platform layer install ESO and configure a ClusterSecretStore pointing to AWS Secrets Manager?
229239

230240
**Answer:**
231-
241+
yes, I am changing my mind on above, if incompatible
232242
---
233243

234244
## 11. CI/CD & GitOps
@@ -237,13 +247,15 @@ The ontoserver chart already supports External Secrets. Should the platform laye
237247
The sparked-infrastructure uses ArgoCD (there's a `sparked-argo` repo). The examples directory has ArgoCD manifests. Use ArgoCD for deploying the ACK/KRO resources and Ontoserver?
238248

239249
**Answer:**
250+
We need to imagine a completely independent setup. So I would propose flux with code commit. Flux because it is easier, and code commit because it is batteries included.
240251

241252
### 11.2 Terraform state backend
242253
- (a) Reuse the existing `examplebucket-fhir-aws` S3 bucket (from sparked-infrastructure)
243254
- (b) New dedicated state bucket for this project
244255
- (c) To be determined when AWS account access is provided
245256

246257
**Answer:**
258+
No, see above
247259

248260
---
249261

@@ -259,6 +271,8 @@ However, if we package ACK controller installations or KRO ResourceGraphDefiniti
259271
- (b) Helm chart (ct-testable, version-tracked, parameterised)
260272
- (c) Mix — ACK controllers via their official Helm charts, KRO compositions as raw manifests
261273

274+
Please double-check EKS has ACK built in.
275+
262276
**Answer:**
263277

264278
### 12.2 Integration test AWS account
@@ -268,6 +282,7 @@ Will the integration tests run against:
268282
- (c) TBD
269283

270284
**Answer:**
285+
(a)
271286

272287
### 12.3 Acceptance test scope
273288
For the integration test, what constitutes "working"?
@@ -277,6 +292,7 @@ For the integration test, what constitutes "working"?
277292
- (d) Other
278293

279294
**Answer:**
295+
(c) - we want this to work for users
280296

281297
---
282298

@@ -287,9 +303,9 @@ For the first deliverable, which services are must-have vs nice-to-have?
287303

288304
| Service | Must-have? |
289305
|---------|-----------|
290-
| EKS Auto Mode cluster | |
291-
| VPC/networking | |
292-
| RDS PostgreSQL | |
306+
| EKS Auto Mode cluster |X |
307+
| VPC/networking |X |
308+
| RDS PostgreSQL |X |
293309
| EBS persistence (Lucene indexes) | |
294310
| ALB ingress with TLS | |
295311
| ECR | |
@@ -299,11 +315,13 @@ For the first deliverable, which services are must-have vs nice-to-have?
299315
| External Secrets | |
300316

301317
**Answer:**
318+
I think the first three and then iterate
302319

303320
### 13.2 Timeline pressure
304321
Is there a deadline or event driving this, or is it spec-at-leisure?
305322

306323
**Answer:**
324+
No deadline. Thorough work preferred
307325

308326
---
309327

@@ -315,6 +333,7 @@ kro is described as "not yet intended for production use" (their README). The Re
315333
- (b) Want a fallback plan (e.g., Helm + ArgoCD without KRO for prod, KRO for dev)
316334

317335
**Answer:**
336+
(a) note that KRO is a feature that can be turned in EKS auto, so you do not have to maintain anything there either.
318337

319338
### 14.2 Ontoserver read-write vs read-only
320339
The Azure version doesn't specify. The EKS examples show both patterns. Should the default deployment be:
@@ -323,12 +342,13 @@ The Azure version doesn't specify. The EKS examples show both patterns. Should t
323342
- (c) Both documented as KRO instances
324343

325344
**Answer:**
345+
(c) - both likely usecases
326346

327347
### 14.3 Relationship to sparked-infrastructure
328348
Should this `aws/` directory be self-contained (duplicating VPC/EKS bootstrap), or should it reference/import from sparked-infrastructure? The Azure directory is self-contained.
329349

330350
**Answer:**
331-
351+
self-contained. This is for external customers to stand up their own instance.
332352
---
333353

334354
*End of grill-me. Save your answers and let me know when ready.*

0 commit comments

Comments
 (0)