You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is the standard way to provision a region. A central AWS account hosts CodePipelines that automatically provision Regional and Management Clusters when configuration is committed to Git.
For manual provisioning using `make` targets and local `.tfvars` files, see [Local Region Provisioning](docs/full-region-provisioning.md). For all available `make` targets, run `make help`.
44
38
45
-
# Provision complete management cluster environment based on the .tfvars file
46
-
make provision-management
47
-
```
39
+
## CI
48
40
49
-
### Available Make Targets
41
+
CI is managed through the [OpenShift CI](https://docs.ci.openshift.org/) system (Prow + ci-operator). The job configuration lives in [openshift/release](https://github.com/openshift/release/tree/master/ci-operator/config/openshift-online/rosa-regional-platform).
50
42
51
-
For all `make` targets, see `make help`.
43
+
For the list of jobs, how to trigger them, AWS credentials setup, and local execution, see [ci/README.md](ci/README.md).
Copy file name to clipboardExpand all lines: argocd/README.md
+2-13Lines changed: 2 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -119,17 +119,6 @@ The ApplicationSet will automatically discover and deploy new charts. Run `./scr
119
119
120
120
## How It Works
121
121
122
-
ArgoCD uses a **Matrix Generator** pattern with two generators:
122
+
ArgoCD uses a **Matrix Generator** pattern combining a Git Generator (discovers Helm charts) with a Cluster Generator (reads cluster identity). Charts are sourced from either a pinned commit hash or the current git revision, while rendered values always come from the latest revision.
123
123
124
-
- **Git Generator**: Discovers Helm charts by scanning `argocd/config/{cluster_type}/*` and `argocd/config/shared/*`
125
-
- **Cluster Generator**: Uses cluster secrets created during EKS provisioning (contains cluster identity: cluster_type, environment, region)
126
-
127
-
The Git Generator gets either:
128
-
129
-
- **Pinned commit hash** (when `config_revision` specified) for snapshotted charts
130
-
- **Current git_revision** (when no `config_revision`) for live charts
131
-
132
-
**Application Sources:**
133
-
134
-
- **Charts & Default Values**: From `argocd/config/` at pinned commit OR current git_revision
135
-
- **Rendered Values**: From `deploy/<env>/<region_deployment>/argocd/` at current git_revision (always latest environment config)
124
+
For the full architecture, alternatives considered, and implementation details, see [GitOps Cluster Configuration](../docs/design/gitops-cluster-configuration.md).
Before deploying HyperFleet in production mode, provision AWS infrastructure using Terraform:
161
+
Before deploying HyperFleet, provision the underlying AWS infrastructure (RDS, Amazon MQ, Secrets Manager, IAM roles) using Terraform. See the [HyperFleet Infrastructure module](../../../../terraform/modules/hyperfleet-infrastructure/README.md) for full details on resources created, configuration options, cost estimates, and troubleshooting.
164
162
165
163
```bash
166
164
cd terraform/config/regional-cluster
167
-
168
-
# Apply HyperFleet infrastructure module
169
165
terraform apply
170
166
```
171
167
172
-
This creates:
173
-
174
-
- **Amazon RDS PostgreSQL** (db.t4g.micro for dev, configurable)
175
-
- **Amazon MQ RabbitMQ** (mq.t3.micro for dev, configurable)
- Set up CloudWatch alarms for critical thresholds
391
-
392
-
6. **Configure Resource Limits** based on observed usage:
393
-
394
-
```yaml
395
-
hyperfleetApi:
396
-
resources:
397
-
limits:
398
-
cpu: 1000m
399
-
memory: 1Gi
400
-
requests:
401
-
cpu: 500m
402
-
memory: 512Mi
403
-
```
404
-
405
-
7. **Secure Network Access**:
406
-
- RDS and Amazon MQ are VPC-only (no public access)
407
-
- Security groups restrict access to EKS cluster only
408
-
- TLS/SSL enforced for all connections (RDS: `sslMode=require`, MQ: AMQPS port 5671)
259
+
1. **Provision AWS Infrastructure** with production-tier settings — see [HyperFleet Infrastructure module](../../../../terraform/modules/hyperfleet-infrastructure/README.md) for recommended instance sizes, Multi-AZ, and monitoring setup
260
+
2. **Configure Pod Identity Role ARNs** in `config.yaml` for your region deployment (role ARNs come from Terraform outputs)
261
+
3. **Use specific image tags** (not `latest`)
262
+
4. **Configure resource limits** based on observed usage
Copy file name to clipboardExpand all lines: ci/README.md
+19-9Lines changed: 19 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,25 @@
1
1
# CI
2
2
3
+
CI is managed through the [OpenShift CI](https://docs.ci.openshift.org/) system (Prow + ci-operator). The job configuration lives in [openshift/release](https://github.com/openshift/release/tree/master/ci-operator/config/openshift-online/rosa-regional-platform).
|[`check-rendered-files`](https://prow.ci.openshift.org/job-history/gs/test-platform-results/pr-logs/directory/pull-ci-openshift-online-rosa-regional-platform-main-check-rendered-files)| Pre-submit | Verifies rendered deploy files are up to date |
12
+
|[`on-demand-e2e`](https://prow.ci.openshift.org/job-history/gs/test-platform-results/pr-logs/directory/pull-ci-openshift-online-rosa-regional-platform-main-on-demand-e2e)| Pre-submit (manual) | Full e2e: provisions ephemeral environment, runs tests, tears down. Trigger with `/test on-demand-e2e` on a PR |
13
+
|[`nightly`](https://prow.ci.openshift.org/job-history/gs/test-platform-results/logs/periodic-ci-openshift-online-rosa-regional-platform-main-nightly)| Daily at 07:00 UTC | End-to-end provisioning and test suite against `main`|
The CI image is built from [ci/Containerfile](ci/Containerfile) and includes all required tools (Terraform, Helm, AWS CLI, Python/uv, etc.).
19
+
3
20
## Pre-merge / Ephemeral Environment
4
21
5
-
The `ci/pre-merge.py` script manages ephemeral environments for CI testing. It supports two modes — provision and teardown — designed to run as separate CI steps with tests in between.
22
+
The [ci/pre-merge.py](ci/pre-merge.py) script manages ephemeral environments for CI testing. It supports two modes — provision and teardown — designed to run as separate CI steps with tests in between.
6
23
7
24
1. Creates a CI-owned git branch from the source repo/branch
8
25
2. Bootstraps the pipeline-provisioner pointing at the CI branch
@@ -69,15 +86,12 @@ Logs are saved to `codebuild-logs-<ci-prefix>/`. The same download logic is used
69
86
The e2e job uses three sets of AWS credentials (central, regional, and management accounts).
70
87
71
88
Credentials are stored in Vault at `kv/selfservice/cluster-secrets-rosa-regional-platform-int/nightly-static-aws-credentials` and mounted at `/var/run/rosa-credentials/` with keys:
89
+
72
90
-`ci_access_key`, `ci_secret_key`, `ci_assume_role_arn` — Central account (base credentials + AssumeRole)
The e2e tests create AWS resources across multiple accounts. Teardown relies on `terraform destroy`, which can fail and leak resources. The **nightly-resources-janitor** job is a weekly fallback that purges everything except resources we need to keep between tests using [aws-nuke](https://github.com/ekristen/aws-nuke).
@@ -97,7 +111,3 @@ See `./ci/aws-nuke-config.yaml`.
97
111
```
98
112
99
113
The script uses whatever AWS credentials are active in your environment. The account must be in the allowlist in `purge-aws-account.sh`.
100
-
101
-
## Test Results
102
-
103
-
Results are available on the [OpenShift CI Prow dashboard](https://prow.ci.openshift.org/?job=periodic-ci-openshift-online-rosa-regional-platform-main-nightly).
0 commit comments