Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
update order
Signed-off-by: Carlos Santana <[email protected]>
  • Loading branch information
csantanapr committed Jul 25, 2025
commit 005231363196e6766bd8fccc190ac231a93a0788
69 changes: 34 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,40 +154,7 @@ Argo CD requires `url` and `installationId` of the GitHub app. The `url` is the
> [!NOTE]
> The rest of the installation process assumes the GitHub apps credentials are available in `private/backstage-github.yaml` and `private/argocd-github.yaml`


### Step 5. ☸️ Create EKS Cluster

The reference implementation can be installed on a new EKS cluster which can be created like this:

```bash
export REPO_ROOT=$(git rev-parse --show-toplevel)
$REPO_ROOT/scripts/create-cluster.sh
```
You will be prompted to select `eksctl` or `terraform`

For more details on each type of tools check the corresponding guides:
+ **eksctl**: Follow the [instructions](cluster/eksctl)
+ **terraform**: Follow the [instructions](cluster/terraform/)

This will create all the prerequisite AWS Resources required for the reference implementation, which includes:

+ EKS cluster with Auto Mode or Without Auto Mode (Managed Node Group with 4 nodes)
+ Pod Identity Associations for following Addons:

| Name | Namespace | Service Account Name | Permissions |
| ----- | --------- | -------------------- | ---------- |
| Crossplane | crossplane-system | provider-aws | Admin Permissions but with [permission boundary](cluster/iam-policies/crossplane-permissions-boundry.json) |
| External Secrets | external-secrets | external-secrets | [Permissions](https://external-secrets.io/latest/provider/aws-secrets-manager/#iam-policy) |
| External DNS | external-dns | external-dns | [Permissions](https://kubernetes-sigs.github.io/external-dns/latest/docs/tutorials/aws/#iam-policy) |
| AWS Load Balancer Controller<br>(When not using Auto Mode) | kube-system | aws-load-balancer-controller | [Permissions](https://github.com/kubernetes-sigs/aws-load-balancer-controller/blob/main/docs/install/iam_policy.json) |
| AWS EBS CSI Controller<br>(When not using Auto Mode) | kube-system | ebs-csi-controller-sa | [Permissions](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEBSCSIDriverPolicy.html) |

> [!NOTE]
> **Using Existing EKS Cluster**
>
> The reference implementation can be installed on an existing EKS Cluster only if the above prerequisites are completed.

#### Step 6. ⚙️ Configure Reference Implementation
#### Step 5. ⚙️ Configure Reference Implementation

The reference implementation uses [config.yaml](config.yaml) file in the repository root directory to configure the installation values. The **`config.yaml`** should be updated with appropriate values before proceeding. Refer to the following table and update all the values appropriately. All the values are required.

Expand All @@ -207,7 +174,8 @@ The reference implementation uses [config.yaml](config.yaml) file in the reposit
> [!TIP]
> If these values are updated after installation, ensure to run the command in the next step to update the values in AWS Secret Manager. Otherwise, the updated values will not reflect in the live installation.

#### Step 7. 🔒 Create Secrets in AWS Secret Manager

#### Step 6. 🔒 Create Secrets in AWS Secret Manager

The values required for the installation are stored in AWS Secret Manager in two secrets:

Expand All @@ -223,6 +191,37 @@ Run the command below to create new secrets or update the existing secrets if th
> [!WARNING]
> **DO NOT** move to next steps without completing all the instructions in this step

### Step 7. ☸️ Create EKS Cluster

The reference implementation can be installed on a new EKS cluster which can be created like this:

```bash
export REPO_ROOT=$(git rev-parse --show-toplevel)
$REPO_ROOT/scripts/create-cluster.sh
```
You will be prompted to select `eksctl` or `terraform`

For more details on each type of tools check the corresponding guides:
+ **eksctl**: Follow the [instructions](cluster/eksctl)
+ **terraform**: Follow the [instructions](cluster/terraform/)

This will create all the prerequisite AWS Resources required for the reference implementation, which includes:

+ EKS cluster with Auto Mode or Without Auto Mode (Managed Node Group with 4 nodes)
+ Pod Identity Associations for following Addons:

| Name | Namespace | Service Account Name | Permissions |
| ----- | --------- | -------------------- | ---------- |
| Crossplane | crossplane-system | provider-aws | Admin Permissions but with [permission boundary](cluster/iam-policies/crossplane-permissions-boundry.json) |
| External Secrets | external-secrets | external-secrets | [Permissions](https://external-secrets.io/latest/provider/aws-secrets-manager/#iam-policy) |
| External DNS | external-dns | external-dns | [Permissions](https://kubernetes-sigs.github.io/external-dns/latest/docs/tutorials/aws/#iam-policy) |
| AWS Load Balancer Controller<br>(When not using Auto Mode) | kube-system | aws-load-balancer-controller | [Permissions](https://github.com/kubernetes-sigs/aws-load-balancer-controller/blob/main/docs/install/iam_policy.json) |
| AWS EBS CSI Controller<br>(When not using Auto Mode) | kube-system | ebs-csi-controller-sa | [Permissions](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEBSCSIDriverPolicy.html) |

> [!NOTE]
> **Using Existing EKS Cluster**
>
> The reference implementation can be installed on an existing EKS Cluster only if the above prerequisites are completed.


### Step 8. 🚀 Deployment
Expand Down