Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
247 commits
Select commit Hold shift + click to select a range
d9791b2
wip
punkwalker Jun 3, 2025
401b45e
wip
punkwalker Jun 3, 2025
1dda815
add external-dns addon
punkwalker Jun 3, 2025
48a0e73
add cert-manager and argocd ingress
punkwalker Jun 3, 2025
74af5b7
disable redis for argocd
punkwalker Jun 3, 2025
ce0fb32
enable redis for argocd
punkwalker Jun 3, 2025
5e4d49b
add letsencrypt ClusterIssuer for cert-manager
punkwalker Jun 3, 2025
12d47d4
specify ingress specific values for argocd
punkwalker Jun 3, 2025
7818dbe
add keycloak addon
punkwalker Jun 4, 2025
ce22be5
refactor hub addons from Apps to AppSet
punkwalker Jun 5, 2025
2a61636
move github token externalsecret to argocd manifests
punkwalker Jun 6, 2025
0303b01
match ServerSideApply on github-token external secret
punkwalker Jun 6, 2025
2e29ed2
match argocd and external secret to AppSets
punkwalker Jun 6, 2025
63fcf4c
add keycloak addon
punkwalker Jun 6, 2025
a5e42cd
update ExternalSecrets to avoid Diffs
punkwalker Jun 6, 2025
f64bd3e
add keycloak config job to create users
punkwalker Jun 7, 2025
14ed10e
add argocd keycloak sso config job
punkwalker Jun 8, 2025
884d6cb
add backstage addon
punkwalker Jun 10, 2025
6a0fe7d
fix dataFromn extraction of backstage postres password
punkwalker Jun 10, 2025
37b0adf
fix dataFromn extraction of backstage postres password
punkwalker Jun 10, 2025
e472ed5
fix dataFromn extraction of backstage postres password
punkwalker Jun 10, 2025
9d75d97
fix backstage postgres sts
punkwalker Jun 10, 2025
6a9245c
fix backstage app config
punkwalker Jun 10, 2025
12cc78c
fix backstage env vars secret
punkwalker Jun 10, 2025
0d230d6
fix backstage db config
punkwalker Jun 10, 2025
d05a342
fix backstage argo workflow URL
punkwalker Jun 10, 2025
5f9661c
fix backstage rback template
punkwalker Jun 10, 2025
c23141a
add backstage ingress
punkwalker Jun 10, 2025
5604b73
add backstage ingress
punkwalker Jun 10, 2025
41f754f
update uninstall.sh
punkwalker Jun 10, 2025
f25effc
move backstage PVC to sts
punkwalker Jun 10, 2025
7beeda4
move backstage PVC to sts
punkwalker Jun 10, 2025
81dd746
restucture directories
punkwalker Jun 10, 2025
960ba6f
add keycloak password generation using eso
punkwalker Jun 11, 2025
ca65b91
fix keycloak external secret
punkwalker Jun 11, 2025
6249c1e
fix keycloak external secret
punkwalker Jun 11, 2025
b8a4859
fix keycloak external secret
punkwalker Jun 11, 2025
777f128
fix keycloak external secret
punkwalker Jun 11, 2025
f310e41
fix keycloak external secret
punkwalker Jun 11, 2025
d852a27
fix keycloak external secret
punkwalker Jun 11, 2025
c834184
fix backstage github integration secret
punkwalker Jun 11, 2025
e1c4fe3
fix backstage github integration secret
punkwalker Jun 11, 2025
c326f9b
disable argocd dex server
punkwalker Jun 11, 2025
18b873a
refactor install and uninstall script
punkwalker Jun 11, 2025
6ff47de
fix keycloak user password
punkwalker Jun 11, 2025
d0ea903
add argo workflows addon
punkwalker Jun 12, 2025
65859cd
fix cluster secret annotations
punkwalker Jun 12, 2025
863d407
fix cluster secret annotations
punkwalker Jun 12, 2025
09f8e21
fix argo workflow ingress
punkwalker Jun 12, 2025
6602ab4
fix argo workflow oidc config
punkwalker Jun 12, 2025
a79b6db
fix argo workflow oidc config
punkwalker Jun 12, 2025
7327591
add argo workflows admin rbac
punkwalker Jun 12, 2025
7005956
fix argo workflow external secret
punkwalker Jun 12, 2025
964d4c6
enable keycloak backchannel
punkwalker Jun 12, 2025
0bcc0e5
disable keycloak backchannel
punkwalker Jun 12, 2025
fbbfb47
set up order in keycloak resources
punkwalker Jun 12, 2025
e34141b
refactor appset chart deployment logic
punkwalker Jun 12, 2025
f5ea639
remove namespace resource from backstage chart
punkwalker Jun 12, 2025
c2aa344
enable preserveResourcesOnDeletion on AppSets
punkwalker Jun 12, 2025
a82cb2c
enable pathRouting option
punkwalker Jun 13, 2025
635b606
fix addon values file
punkwalker Jun 13, 2025
511704c
fix appset chart indent and addons values
punkwalker Jun 13, 2025
3fcf81a
fix ingress-nginx values
punkwalker Jun 13, 2025
86bb32f
fix ingress-nginx values
punkwalker Jun 13, 2025
1e4eb0c
fix ingress-nginx values
punkwalker Jun 13, 2025
d1759ce
fix annotations map for ingresses
punkwalker Jun 13, 2025
a06f7b3
add external-dns service annotation on ingress-nginx
punkwalker Jun 13, 2025
df7aa16
refactor bootstrapping logic
punkwalker Jun 16, 2025
b873cd4
refactor bootstrapping logic
punkwalker Jun 16, 2025
052269a
support path-routing on argocd
punkwalker Jun 17, 2025
f92b374
support path-routing on argocd
punkwalker Jun 17, 2025
2ce1768
support path-routing on argocd
punkwalker Jun 17, 2025
9893cba
support path-routing on argocd
punkwalker Jun 17, 2025
d9c8beb
fix appset chart
punkwalker Jun 17, 2025
29e459e
fix appset chart
punkwalker Jun 17, 2025
a62c12b
fix appset chart
punkwalker Jun 17, 2025
7c10ef7
fix appset chart
punkwalker Jun 17, 2025
01d3200
fix argo-cd-path-routing
punkwalker Jun 17, 2025
cf18ba8
fix cert-manager addon for path routing
punkwalker Jun 17, 2025
31b15d8
delay ingress creation for argocd until default cert is provisioned
punkwalker Jun 17, 2025
e8c3d31
fix argocd valuesObject
punkwalker Jun 17, 2025
1529c52
fix argocd valuesObject
punkwalker Jun 17, 2025
f0fa842
fix argocd valuesObject
punkwalker Jun 17, 2025
ae09b3a
fix argocd valuesObject
punkwalker Jun 17, 2025
c9149f0
refactor bootstrapping logic
punkwalker Jun 17, 2025
db900e0
refactor keycloak addon for path routing
punkwalker Jun 17, 2025
34cfc9d
fix keyloak internal url
punkwalker Jun 17, 2025
0345b02
fix keyloak internal url
punkwalker Jun 17, 2025
968ac4e
fix keyloak sso config job
punkwalker Jun 17, 2025
02a304a
fix argocd internal url in keycloak sso job
punkwalker Jun 17, 2025
be12896
refactor argocd oidc config
punkwalker Jun 17, 2025
0009741
refactor backstage addon for path routing
punkwalker Jun 17, 2025
42196f1
add sync wave to nginx service
punkwalker Jun 18, 2025
d7ca8ec
fix backstage ingress values
punkwalker Jun 18, 2025
173d031
fix backstage chart
punkwalker Jun 18, 2025
2b57258
support relative path on backstage
punkwalker Jun 18, 2025
037988a
support relative path on backstage
punkwalker Jun 18, 2025
0bdee0a
support relative path on backstage
punkwalker Jun 18, 2025
2ebe7f0
support relative path on backstage
punkwalker Jun 18, 2025
c399c2b
support relative path on backstage
punkwalker Jun 18, 2025
3306b88
support relative path on backstage
punkwalker Jun 18, 2025
4e07b83
update backstage image
punkwalker Jun 18, 2025
f865030
update backstage image
punkwalker Jun 18, 2025
622df4c
fix backstage keycloak integration
punkwalker Jun 18, 2025
dbeba30
fix backstage argocd integration
punkwalker Jun 18, 2025
4e42f47
fix backstage frontend URL
punkwalker Jun 18, 2025
ed23c5b
fix keycloak redirect url for backstage
punkwalker Jun 18, 2025
2363468
support relative path on argo workflows
punkwalker Jun 18, 2025
699238a
change external dns policy to sync to ensure it can add/remove records
punkwalker Jun 19, 2025
ca61e44
add crossplane addon
punkwalker Jun 19, 2025
7a4a322
fix keycloak cert namespace
punkwalker Jun 19, 2025
3160b94
remove enable-environment-configs flag from crossplane
punkwalker Jun 19, 2025
4478d54
restructure crossplane directory
punkwalker Jun 19, 2025
c8cddb9
add commonAnnotations to kustomization for xrd in crossplane addon
punkwalker Jun 19, 2025
d82890e
remove reduntant directories
punkwalker Jun 19, 2025
d58b989
fix backstage app config keycloak config
punkwalker Jun 19, 2025
4787635
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
4f7b128
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
4e45233
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
f628b81
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
4b2fef0
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
51cfc72
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
96a874f
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
8b5e79b
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
ae58d30
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
5847a2d
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
febbc4b
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
6bc18f9
fix argo workflows ingress for path routing
punkwalker Jun 19, 2025
142a6b3
make argocd install all resources from packages/crossplane/manifests …
punkwalker Jun 19, 2025
39337f7
make argocd install all resources from packages/crossplane/manifests …
punkwalker Jun 19, 2025
9a9e5a3
fix crossplane aws DeploymentRuntimeConfig
punkwalker Jun 19, 2025
856144d
fix crossplane aws DeploymentRuntimeConfig selector
punkwalker Jun 19, 2025
11a5c99
fix crossplane aws DeploymentRuntimeConfig selector
punkwalker Jun 19, 2025
88adb0d
fix provider-aws-s3 runtimeConfigRef
punkwalker Jun 19, 2025
1c62a50
specify serviceAccountName in DeploymentRuntimeConfig for crossplane …
punkwalker Jun 19, 2025
0415849
add generic ServiceAccount for provider-aws
punkwalker Jun 19, 2025
36f2085
fix generic ServiceAccount for provider-aws
punkwalker Jun 20, 2025
564420a
remove sync wave from crossplane custom manifests
punkwalker Jun 20, 2025
b83ba60
add sync wave from crossplane custom manifests
punkwalker Jun 20, 2025
c877806
remove crossplane custom manifests
punkwalker Jun 20, 2025
7d2a0a4
change password constraints for keycloak user
punkwalker Jun 20, 2025
dc9a555
add crossplane provider chart and refactor crossplane compositions
punkwalker Jun 23, 2025
e143d44
move cluster issuer to cert-manager extraObjects in helm values file
punkwalker Jun 23, 2025
1f46ccb
clean values.yamls of addons
punkwalker Jun 23, 2025
2a9a060
clean values.yamls of addons
punkwalker Jun 23, 2025
09940f0
remove selectors from addons
punkwalker Jun 23, 2025
4d520ac
fix AWS LBC Cluster name substitution
punkwalker Jun 23, 2025
89f8cf6
fix Argo Workflow values in AppSet
punkwalker Jun 23, 2025
d8bcd4c
fix crossplane registry url
punkwalker Jun 24, 2025
f8a02c5
refactor addons
punkwalker Jun 24, 2025
5af8122
add webhook url to backstage GH app
punkwalker Jun 24, 2025
ece6c2b
add backstage templates
punkwalker Jun 24, 2025
6a4e88a
fix backstage template location
punkwalker Jun 24, 2025
61e257e
add ARGOCD Password to backstage
punkwalker Jun 24, 2025
285a5af
add GH app for org and fix backstage skeleton
punkwalker Jun 24, 2025
391eeb6
add eksctl cluster creation
punkwalker Jun 24, 2025
a9181de
add eksctl cluster creation for auto mode
punkwalker Jun 24, 2025
bf11489
disable aws lbc for auto mode
punkwalker Jun 24, 2025
1eb4e70
remove reduntant directories
punkwalker Jun 24, 2025
1e2ca5f
remove sync wave from argocd ingress
punkwalker Jun 25, 2025
12a3aea
specify storageclass for keycloak pvc
punkwalker Jun 25, 2025
c6a9e35
specify storageclass for backstage pvc
punkwalker Jun 25, 2025
4cb016f
enable ServerSideDiff for crossplane-compositions
punkwalker Jun 25, 2025
4739bce
enable ServerSideDiff for crossplane-compositions
punkwalker Jun 25, 2025
d3dadb3
add sync wave for argocd ingress
punkwalker Jun 25, 2025
eb74c04
add sync wave for argocd ingress
punkwalker Jun 25, 2025
698834e
refactor scripts
punkwalker Jun 26, 2025
8c72161
refactor externalsecrets and add auto mode eksctl cluster config
punkwalker Jun 26, 2025
1b42897
fix terraform template
punkwalker Jun 26, 2025
7422935
fix terraform external secret IAM policy and config file
punkwalker Jun 26, 2025
d875290
fix config file
punkwalker Jun 26, 2025
0d9bdd3
fix config file
punkwalker Jun 26, 2025
3226caa
fix config file
punkwalker Jun 27, 2025
ed8951e
add note about path_routing value in config file
punkwalker Jun 27, 2025
c98cacb
fix argocd github app external secret
punkwalker Jun 27, 2025
a837395
add AWS LBC pod identity in terraform
punkwalker Jun 27, 2025
ef7c133
fix keycloak external secret
punkwalker Jun 27, 2025
4a9f5f3
fix backstage external secret
punkwalker Jun 27, 2025
7811daa
fix backstage external secret
punkwalker Jun 27, 2025
fd3b6f3
update cluster creation readme
punkwalker Jun 27, 2025
b13eb3f
update cluster creation readme
punkwalker Jun 27, 2025
9b0ff0a
update cluster creation readme
punkwalker Jun 27, 2025
7c06051
disable aws lbc for auto mode
punkwalker Jun 27, 2025
94c48ae
add gp3 ebs storagclass
punkwalker Jun 27, 2025
9b25724
dyanmic installation of AWS LBC based on cluster secret label for aut…
punkwalker Jun 27, 2025
31c0209
fix idpbuilder argocd addon values
punkwalker Jun 27, 2025
056f26a
fix argocd addon values
punkwalker Jun 27, 2025
1b34191
start main README
punkwalker Jun 27, 2025
ab9ad2c
start main README
punkwalker Jun 28, 2025
f31dc8b
start main README
punkwalker Jun 28, 2025
bd1d5f5
start main README
punkwalker Jun 28, 2025
e29a9cf
start main README
punkwalker Jun 28, 2025
d2d774d
fix idpbuilder argocd addon values
punkwalker Jun 28, 2025
b165776
add sync wave to gp3 ebs storagclass
punkwalker Jun 28, 2025
74339d8
fix utils.sh
punkwalker Jun 28, 2025
0e32889
temporarily switch to letsencrypt staging api
punkwalker Jun 28, 2025
be86c07
revert letsencrypt staging api
punkwalker Jun 28, 2025
1ffd23b
fix external-dns valuesObject
punkwalker Jul 1, 2025
677e607
allow external-dns filter zone based on ID
punkwalker Jul 1, 2025
1f1759e
update comments in config.yaml
punkwalker Jul 1, 2025
a959a60
disable ServerSideDiff for crossplane compositions
punkwalker Jul 1, 2025
58f9e97
enable ServerSideDiff for crossplane compositions
punkwalker Jul 1, 2025
6b0a350
fix backstage github integration secret
punkwalker Jul 1, 2025
985befd
fix backstage template for app with bucket
punkwalker Jul 1, 2025
b6e0302
update readme with getting started instructions
punkwalker Jul 2, 2025
31989ba
update readme with getting started instructions
punkwalker Jul 2, 2025
22ed190
update template location of backstage
punkwalker Jul 2, 2025
892e7c1
update template location of backstage
punkwalker Jul 2, 2025
02e2e0c
update readme with cleanup instructions
punkwalker Jul 2, 2025
b6c31d1
update readme with cleanup instructions
punkwalker Jul 2, 2025
ea6b055
update readme with cleanup instructions
punkwalker Jul 2, 2025
4aeb6bd
update eksctl readme
punkwalker Jul 2, 2025
5b02df6
update eksctl readme
punkwalker Jul 2, 2025
d036735
add installation flow readme
punkwalker Jul 2, 2025
6e40747
update troubleshooting guide
punkwalker Jul 2, 2025
e90986d
update readmes and scripts
punkwalker Jul 3, 2025
0d5b6ff
update readmes
punkwalker Jul 3, 2025
14764cb
move flow diagram to main Readme
punkwalker Jul 3, 2025
c5c9a07
reconcile boostrap logic and remove reduntant files
punkwalker Jul 3, 2025
2e4c9ad
reconcile boostrap logic and remove reduntant files
punkwalker Jul 3, 2025
97342da
reconcile boostrap logic and remove reduntant files
punkwalker Jul 3, 2025
c932de5
reconcile boostrap logic and remove reduntant files
punkwalker Jul 3, 2025
14e3cb3
reconcile boostrap logic and remove reduntant files
punkwalker Jul 3, 2025
5ef0469
reconcile boostrap logic and remove reduntant files
punkwalker Jul 3, 2025
c0e217e
clean values file
punkwalker Jul 18, 2025
28c8a23
minor updates
csantanapr Jul 21, 2025
7273cf0
add helm repo update
csantanapr Jul 21, 2025
993d15a
Merge pull request #4 from csantanapr-cnoe-demos/review-ref-impl-v2
punkwalker Jul 21, 2025
ae77c52
Review ref impl v2 (#5)
csantanapr Jul 21, 2025
e617663
add backstage official helm chart
punkwalker Jul 21, 2025
833cac7
add backstage official helm chart
punkwalker Jul 21, 2025
510607d
add backstage k8s-config secret
punkwalker Jul 21, 2025
464384d
fix backstage values file
punkwalker Jul 21, 2025
318fa33
fix backstage values file
punkwalker Jul 21, 2025
498c5a1
fix backstage values file
punkwalker Jul 21, 2025
cb75f27
fix backstage values for envs
punkwalker Jul 21, 2025
379683b
remove custom backstage-app chart
punkwalker Jul 21, 2025
3f8cde7
update main ReadMe and remove idpbuilder reference
punkwalker Jul 21, 2025
a16cc3f
update idpbuilder installation doc
punkwalker Jul 24, 2025
b6294f7
add installation seqeunce explaination
punkwalker Jul 24, 2025
b77610c
add create-cluster-eksctl.sh
punkwalker Jul 24, 2025
229d838
fix grammar
punkwalker Jul 24, 2025
a71de01
add auto mode support for terraform and add create-cluster.sh
punkwalker Jul 24, 2025
5e96d89
add s3 upbound provider compositions
punkwalker Jul 24, 2025
03f42bd
fix s3 compositions
punkwalker Jul 25, 2025
151cecc
fix s3 compositions
punkwalker Jul 25, 2025
c46f101
change values in config.yaml with placeholders
punkwalker Jul 25, 2025
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
Next Next commit
fix grammar
Signed-off-by: Pankaj Walke <[email protected]>
  • Loading branch information
punkwalker committed Jul 24, 2025
commit 229d838597c37c8b5942e030950a27c97bd179a4
62 changes: 31 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# CNOE AWS Reference Implementation

This project contains a [CNOE](https://cnoe.io) reference implementation for AWS. This project can bring up an Internal Developer Platform on EKS with all the tools configured and ready to use. It will install addons on an EKS cluster as Argo CD apps using GitOps Bridge App of ApplicationSets pattern. Check out [Getting Started](#getting-started) guide for installing this solution on EKS cluster.
This project contains a [CNOE](https://cnoe.io) reference implementation for AWS. This project can bring up an Internal Developer Platform on EKS with all the tools configured and ready to use. It will install addons on an EKS cluster as Argo CD apps using GitOps Bridge App of ApplicationSets pattern. Check out the [Getting Started](#getting-started) guide for installing this solution on an EKS cluster.

> [!NOTE]
> Applications deployed in this repository are not meant or configured for production.
Expand All @@ -18,8 +18,8 @@ All the addons are helm charts with static values configured in `packages/<addon
| Argo CD | argocd | Installation and management of addon Argo CD application | 8.0.14 | [Link](https://github.com/argoproj/argo-helm/tree/main/charts/argo-cd) |
| Argo Workflows | argo | Workflow tool for continuous integration tasks | 0.45.18 | [Link](https://github.com/argoproj/argo-helm/tree/main/charts/argo-workflows )|
| Backstage | backstage | Self-Service Web UI (Developer Portal) for developers | 2.6.0 | [Link](https://github.com/backstage/charts/tree/main/charts/backstage) |
| Cert Manager | cert-manager | Certificate managed for addons and developer applications using Lets Enctrypt | 1.17.2 | [Link](https://cert-manager.io/docs/installation/helm/) |
| Crossplane | crossplane-system | IaC controller for provisiong infrastructure | 1.20.0 | [Link](https://github.com/crossplane/crossplane/tree/main/cluster/charts/crossplane) |
| Cert Manager | cert-manager | Certificate manager for addons and developer applications using Let's Encrypt | 1.17.2 | [Link](https://cert-manager.io/docs/installation/helm/) |
| Crossplane | crossplane-system | IaC controller for provisioning infrastructure | 1.20.0 | [Link](https://github.com/crossplane/crossplane/tree/main/cluster/charts/crossplane) |
| External DNS | external-dns | Domain management using Route 53 | 1.16.1 | [Link](https://github.com/kubernetes-sigs/external-dns/tree/master/charts/external-dns) |
| External Secrets | external-secrets | Secret Management using AWS Secret Manager and AWS Systems Manager Parameter Store | Version | [Link](https://github.com/external-secrets/external-secrets/tree/main/deploy/charts/external-secrets) |
| Ingress NGINX | ingress-nginx | Ingress controller for L7 network traffic routing | 4.7.0 | [Link](https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx) |
Expand Down Expand Up @@ -97,12 +97,12 @@ flowchart TD

### Step 1. ☸️ Create EKS Cluster

The reference implementation can be installed on new EKS cluster which can be created with following tools:
The reference implementation can be installed on a new EKS cluster which can be created with the following tools:

+ **eksctl**: Follow the [instructions](cluster/eksctl)
+ **terraform**: Follow the [instructions](cluster/terraform/)

This will create all the pre-requisite AWS Resources required for the reference implementation. Which includes:
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:
Expand All @@ -119,26 +119,26 @@ This will create all the pre-requisite AWS Resources required for the reference
> [!NOTE]
> **Using Existing EKS Cluster**
>
> The reference implementation can be installed on existing EKS Cluster only if above pre-requisites are completed.
> The reference implementation can be installed on an existing EKS Cluster only if the above prerequisites are completed.

### Step 2. 🏢 Create GitHub Organization

Backstage and Argo CD in this reference implementation are integrated with GitHub. Both Backstage and ArgoCD, use Github Apps for authenticating with Github.
Backstage and Argo CD in this reference implementation are integrated with GitHub. Both Backstage and ArgoCD use Github Apps for authenticating with Github.

Therefore, a GitHub Organization should be created in order to create GitHub Apps for these integrations. Follow the instructions in [GitHub documentation](https://docs.github.com/en/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch) to create new organization or visit [here](https://github.com/account/organizations/new).

> [!NOTE]
> It is recommended to use Github Organization instead of personal github ID as backstage has certain [limitations](https://backstage.io/docs/integrations/github/github-apps/#caveats) for using personal account Github Apps for authenticating to Github. Also, the Github Organization is ***FREE***.
> It is recommended to use a Github Organization instead of a personal github ID as Backstage has certain [limitations](https://backstage.io/docs/integrations/github/github-apps/#caveats) for using personal account Github Apps for authenticating to Github. Also, the Github Organization is ***FREE***.

### Step 3. 🍴 Fork the Repository

Once the organization is created, fork this repository to the new GitHub Organization by following instructions in [GitHub documentation](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo).

### Step 4. 💻 Create GitHub Apps

There are two ways to create GitHub App. You can use the Backstage CLI `npx @backstage/cli create-github-app <github-org>` as per instructions in [Backstage documentation](https://backstage.io/docs/integrations/github/github-apps/#using-the-cli-public-github-only), or create it manually per these instructions in [GitHub documentation](https://backstage.io/docs/integrations/github/github-apps).
There are two ways to create a GitHub App. You can use the Backstage CLI `npx @backstage/cli create-github-app <github-org>` as per instructions in the [Backstage documentation](https://backstage.io/docs/integrations/github/github-apps/#using-the-cli-public-github-only), or create it manually per these instructions in the [GitHub documentation](https://backstage.io/docs/integrations/github/github-apps).

Create following apps and store it in corresponding file path.
Create the following apps and store them in the corresponding file path.

| App Name | Purpose | Required Permissions | File Path | Expected Content |
| -------- | ------- | -------------------- | --------- | ---------------- |
Expand All @@ -148,7 +148,7 @@ Create following apps and store it in corresponding file path.
Argo CD requires `url` and `installationId` of the GitHub app. The `url` is the GitHub URL of the organization. The `installationId` can be captured by navigating to the app installation page with URL `https://github.com/organizations/<Organization-name>/settings/installations/<ID>`. You can find more information [on this page](https://stackoverflow.com/questions/74462420/where-can-we-find-github-apps-installation-id).

> [!WARNING]
> **If the app is created using backstage CLI, it creates files in current working directory. These files contain credentials. Handle it with care. It is recommended to remove these files after copying the content over to files in `private` directory**
> **If the app is created using the Backstage CLI, it creates files in the current working directory. These files contain credentials. Handle them with care. It is recommended to remove these files after copying the content over to files in the `private` directory**

> [!NOTE]
> The rest of the installation process assumes the GitHub apps credentials are available in `private/backstage-github.yaml` and `private/argocd-github.yaml`
Expand All @@ -157,27 +157,27 @@ Argo CD requires `url` and `installationId` of the GitHub app. The `url` is the

#### 📦 Install Binaries

The installation requires following binaries in the local environment:
The installation requires the following binaries in the local environment:

+ [**AWS CLI**](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ [**kubectl**](https://kubernetes.io/docs/tasks/tools/)
+ [**yq**](https://mikefarah.gitbook.io/yq/v3.x)
+ [**helm**](https://helm.sh/docs/intro/install/)

#### 🔐 Configure AWS Credentials
Configure the AWS CLI with credentials of an IAM role which has access to the EKS cluster. Follow instructions in [AWS documentation](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html#getting-started-quickstart-new) to configure AWS CLI.
Configure the AWS CLI with credentials of an IAM role which has access to the EKS cluster. Follow the instructions in the [AWS documentation](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html#getting-started-quickstart-new) to configure the AWS CLI.

If the installation steps are being executed on EC2 instance, ensure that the EC2 IAM instance role has permissions to access EKS cluster or The AWS CLI is configured as mentioned above.
If the installation steps are being executed on an EC2 instance, ensure that the EC2 IAM instance role has permissions to access the EKS cluster or the AWS CLI is configured as mentioned above.

#### ⚙️ Configure Reference Implementation

The reference implementation uses **`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 following table and update all the values appropriately. All the values are required.
The reference implementation uses **`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.

| Parameter | Description | Type |
|-----------|-------------|------|
| `repo.url` | GitHub URL of the fork in Github Org | string |
| `repo.revision` | Branch or Tag which should be used for Argo CD Apps | string |
| `repo.basepath` | Directory in which configuration of addons is stored | string |
| `repo.url` | GitHub URL of the fork in the Github Org | string |
| `repo.revision` | Branch or tag which should be used for Argo CD Apps | string |
| `repo.basepath` | Directory in which the configuration of addons is stored | string |
| `cluster_name` | Name of the EKS cluster for reference implementation <br> **(The name should satisfy criteria of a valid [kubernetes resource name](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/))** | string |
| `auto_mode` | Set to "true" if EKS cluster is Auto Mode, otherwise "false" | string |
| `region` | AWS Region of the EKS cluster and config secret | string |
Expand All @@ -187,7 +187,7 @@ The reference implementation uses **`config.yaml`** file in the repository root
| `tags` | Arbitrary key-value pairs for AWS resource tagging | object |

> [!TIP]
> If these values are updated after installation. Ensure to run command in next step to update the values in AWS secret manager. Otherwise, the updated values will not reflect in the live installation.
> 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.

#### 🔒 Create Secrets in AWS Secret Manager

Expand All @@ -196,7 +196,7 @@ The values required for the installation are stored in AWS Secret Manager in two
1. **cnoe-ref-impl/config:** Stores values from **`config.yaml`** in JSON
2. **cnoe-ref-impl/github-app:** Stores GitHub App credentials with file name as key and content of the file as value from **private** directory.

Run below command to create new secrets or update the existing secrets if already exists.
Run the command below to create new secrets or update the existing secrets if they already exist.

```bash
./scripts/create-config-secrets.sh
Expand All @@ -207,36 +207,36 @@ Run below command to create new secrets or update the existing secrets if alread

### Step 6. 🚀 Installation
> [!NOTE]
> Before moving forward, Ensure that the kubectl context is set to EKS cluster and the configured AWS IAM role has access to the cluster.
> Before moving forward, ensure that the kubectl context is set to the EKS cluster and the configured AWS IAM role has access to the cluster.

#### ▶️ Start the Installation Process

All the addons are installed as Argo CD apps. At the start of the installation, Argo CD and External Secret Operator are installed on EKS cluster as helm chart. Once Argo CD on EKS is up, other addons are installed through it and finally the Argo CD on EKS also manages itself and External Secret Operator. Check out more details about the [installation flow](docs/installation_flow.md). Run following command to start the installation.
All the addons are installed as Argo CD apps. At the start of the installation, Argo CD and External Secret Operator are installed on the EKS cluster as a helm chart. Once Argo CD on EKS is up, other addons are installed through it and finally the Argo CD on EKS also manages itself and External Secret Operator. Check out more details about the [installation flow](docs/installation_flow.md). Run the following command to start the installation.
```bash
scripts/install.sh
```

#### 📊 Monitor Installation Process

The installation script will continue to run until all the Argo CD apps for Addons are healthy. To monitor the process, use below instructions to access instance of Argo CD running on EKS.
The installation script will continue to run until all the Argo CD apps for addons are healthy. To monitor the process, use the instructions below to access the instance of Argo CD running on EKS.

Check if the kubectl context is set to EKS cluster and it can access the EKS cluster. Then, Start the kubernetes port-forward session for Argo CD service and access the Argo CD UI in browser. In Argo CD UI, monitor the health of all Argo CD Apps
Check if the kubectl context is set to the EKS cluster and it can access the EKS cluster. Then, start the kubernetes port-forward session for the Argo CD service and access the Argo CD UI in a browser. In the Argo CD UI, monitor the health of all Argo CD Apps

```bash
kubectl port-forward -n argocd svc/argocd-server 8080:80
```

Depending upon the configuration, Argo CD will be accessible at http://localhost:8080 or http://localhost:8080/argocd.

Retrieve the credentials for Argo CD can be retrieved with following command:
The credentials for Argo CD can be retrieved with the following command:

```bash
kubectl get secrets -n argocd argocd-initial-admin-secret -oyaml | yq '.data.password' | base64 -d && echo
```

### Step 7. 🌐 Accessing the Platform

The addons with Web UI are exposed using the base domain configured in [Step 5](#️-configure-reference-implementation). The URLs can be retrieved by running following command:
The addons with Web UI are exposed using the base domain configured in [Step 5](#️-configure-reference-implementation). The URLs can be retrieved by running the following command:
```
scripts/get-urls.sh
```
Expand All @@ -248,25 +248,25 @@ The URL depends on the setting for `path_routing`. Refer to following table for
| Argo CD | https://[domain]/argocd | https://argocd.[domain] |
| Argo Workflows | https://[domain]/argo-workflows | https://argo-workflows.[domain] |

All the addons are configured with Keycloak SSO USER1 and the user password for it can be retrieved using following command:
All the addons are configured with Keycloak SSO USER1 and the user password for it can be retrieved using the following command:

```bash
kubectl get secret -n keycloak keycloak-config -o jsonpath='{.data.USER1_PASSWORD}' | base64 -d && echo
```
Once, all the Argo CD apps on EKS cluster are reporting healthy status, try out [examples](docs/examples/) to create new application through Backstage.
Once all the Argo CD apps on the EKS cluster are reporting healthy status, try out the [examples](docs/examples/) to create a new application through Backstage.
For troubleshooting, refer to the [troubleshooting guide](docs/troubleshooting.md).

## Cleanup
> [!WARNING]
> Before proceeding with the cleanup, ensure any Kubernetes resource created outside of the installation process such as Argo CD Apps, deployments, volume etc. are deleted.
> Before proceeding with the cleanup, ensure any Kubernetes resources created outside of the installation process such as Argo CD Apps, deployments, volumes etc. are deleted.

Run following command to remove all the addons created by this installation:
Run the following command to remove all the addons created by this installation:

```
scripts/uninstall.sh
```

This script will only remove resources other than CRDs from the EKS cluster so that the same cluster can used for re-installation which is useful during development. To remove CRDs, use following command:
This script will only remove resources other than CRDs from the EKS cluster so that the same cluster can be used for re-installation which is useful during development. To remove CRDs, use the following command:

```
scripts/cleanup-crds.sh
Expand Down
8 changes: 4 additions & 4 deletions cluster/eksctl/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This directory contains the configuration to create an EKS cluster with pod iden
- eksctl installed

## Create Cluster
Run following command and follow instructions:
Run the following command and follow the instructions:

```bash
export REPO_ROOT=$(git rev-parse --show-toplevel)
Expand All @@ -27,13 +27,13 @@ The cluster creation will provision the following AWS resources:
- EKS cluster security groups
- OIDC identity provider

### Managed Node Group _(For Non-Auto mode cluster)_
### Managed Node Group _(For Non-Auto Mode cluster)_
- Managed node group with 3-6 m5.large instances
- Desired capacity: 4 nodes
- 100GB EBS volumes per node
- Node IAM role with required policies

### EKS Addons _(For Non-Auto mode cluster)_
### EKS Addons _(For Non-Auto Mode cluster)_
- eks-pod-identity-agent
- aws-ebs-csi-driver with EBS CSI controller policies
- vpc-cni (default)
Expand Down Expand Up @@ -66,7 +66,7 @@ eksctl delete cluster --name $CLUSTER_NAME --region $AWS_REGION
aws iam delete-policy --policy-arn $CROSSPLANE_BOUNDARY_POLICY_ARN
```

This will automatically clean up:
This will automatically clean up the following:
- EKS cluster
- Managed node groups
- Pod identity associations
Expand Down
Loading