@@ -79,8 +79,8 @@ AWS_USER_ARN=$(aws iam list-users --query "Users[? UserName==\`${AWS_USER_NAME}\
79
79
sed -i " s@^AWS_USER_ARN.*@AWS_USER_ARN = \" ${AWS_USER_ARN} \" @" mise.local.toml
80
80
```
81
81
82
- The ` aws-cli ` user was created in the management AWS account and will be used to
83
- access all AWS accounts via the AWS CLI.
82
+ The ` aws-cli ` user was created in the management AWS account. It will be used to
83
+ access all AWS accounts via the AWS CLI by assuming the proper IAM Role .
84
84
85
85
##### Route35 Hosted Zone + GitHub Action IAM Role
86
86
@@ -241,6 +241,62 @@ flowchart TB
241
241
k8s.gcp.mylabs.dev --> k04.k8s.gcp.mylabs.dev
242
242
```
243
243
244
+ ### AWS diagram
245
+
246
+ Suppose you have three AWS accounts and want to provision one EKS cluster in each.
247
+ The setup would look like this:
248
+
249
+ - ** AWS Management Account** - centralized account responsible for provisioning
250
+ and managing infrastructure, hosting two EKS clusters, and assuming IAM roles
251
+ in tenant accounts
252
+ - k01.k8s.aws.mylabs.dev
253
+ - k02.k8s.aws.mylabs.dev
254
+ - ** AWS Tenant Account 01** – tenant account hosting two EKS clusters. These
255
+ clusters are created using a local IAM role, which is assumed by the IAM role
256
+ from the management account
257
+ - k03.k8s.aws.mylabs.dev
258
+ - k04.k8s.aws.mylabs.dev
259
+ - ** AWS Tenant Account 02** – tenant account hosting two EKS clusters. These
260
+ clusters are created using a local IAM role, which is assumed by the IAM role
261
+ from the management account
262
+ - k05.k8s.aws.mylabs.dev
263
+ - k06.k8s.aws.mylabs.dev
264
+
265
+ ``` mermaid
266
+ flowchart TB
267
+
268
+ subgraph "AWS"
269
+ subgraph "AWS Management Account"
270
+ aws-cli@{ icon: "logos:panda", form: "rounded", label: "aws-cli", pos: "b", h: 60 }
271
+ aws-mgmt-iam-role@{ icon: "logos:aws-iam", form: "square", label: "aws-mgmt-iam-role", pos: "b", h: 60 }
272
+ aws-01-iam-role@{ icon: "logos:aws-iam", form: "square", label: "aws-01-iam-role", pos: "b", h: 60 }
273
+ k01.k8s.aws.mylabs.dev@{ icon: "logos:aws-eks", form: "square", label: "k01.k8s.aws.mylabs.dev", pos: "b", h: 60 }
274
+ k02.k8s.aws.mylabs.dev@{ icon: "logos:aws-eks", form: "square", label: "k02.k8s.aws.mylabs.dev", pos: "b", h: 60 }
275
+ end
276
+ subgraph "AWS Account 01"
277
+ aws-02-iam-role@{ icon: "logos:aws-iam", form: "square", label: "aws-02-iam-role", pos: "b", h: 60 }
278
+ k03.k8s.aws.mylabs.dev@{ icon: "logos:aws-eks", form: "square", label: "k03.k8s.aws.mylabs.dev", pos: "b", h: 60 }
279
+ k04.k8s.aws.mylabs.dev@{ icon: "logos:aws-eks", form: "square", label: "k04.k8s.aws.mylabs.dev", pos: "b", h: 60 }
280
+ end
281
+ subgraph "AWS Account 02"
282
+ aws-03-iam-role@{ icon: "logos:aws-iam", form: "square", label: "aws-03-iam-role", pos: "b", h: 60 }
283
+ k05.k8s.aws.mylabs.dev@{ icon: "logos:aws-eks", form: "square", label: "k05.k8s.aws.mylabs.dev", pos: "b", h: 60 }
284
+ k06.k8s.aws.mylabs.dev@{ icon: "logos:aws-eks", form: "square", label: "k06.k8s.aws.mylabs.dev", pos: "b", h: 60 }
285
+ end
286
+ end
287
+
288
+ aws-cli -- "Assume Role (STS)" --> aws-mgmt-iam-role
289
+ aws-mgmt-iam-role -- "Assume Role (STS)" --> aws-01-iam-role
290
+ aws-01-iam-role --> k01.k8s.aws.mylabs.dev
291
+ aws-01-iam-role --> k02.k8s.aws.mylabs.dev
292
+ aws-mgmt-iam-role -- "Assume Role (STS)" --> aws-02-iam-role
293
+ aws-02-iam-role --> k03.k8s.aws.mylabs.dev
294
+ aws-02-iam-role --> k04.k8s.aws.mylabs.dev
295
+ aws-mgmt-iam-role -- "Assume Role (STS)" --> aws-03-iam-role
296
+ aws-03-iam-role --> k05.k8s.aws.mylabs.dev
297
+ aws-03-iam-role --> k06.k8s.aws.mylabs.dev
298
+ ```
299
+
244
300
## Tests
245
301
246
302
``` bash
0 commit comments