Skip to content
Merged
Show file tree
Hide file tree
Changes from 46 commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
12e370a
feat: first draft of ESO DA
vbontempi May 10, 2025
5609c9e
fix: removed temp file
vbontempi May 10, 2025
d6707fb
fix: removed temp content
vbontempi May 10, 2025
30f8706
Merge branch 'main' of https://github.com/terraform-ibm-modules/terra…
vbontempi May 12, 2025
91ba45e
Merge branch 'main' of https://github.com/terraform-ibm-modules/terra…
vbontempi May 13, 2025
fcd1f15
fix: fixed linter issues
vbontempi May 13, 2025
e37ec0b
feat: added doc as example to create secrets
vbontempi May 13, 2025
1feed92
feat: added catalog onboarding elements
vbontempi May 13, 2025
4885ec5
fix: fixed output
vbontempi May 13, 2025
4062b18
fix: cleaned up code
vbontempi May 13, 2025
ae6009b
feat: fixed catalog.json
vbontempi May 15, 2025
d13a1e8
fix: SKIP UPGRADE TEST fixed catalog.json
vbontempi May 19, 2025
9b5edf6
fix: SKIP UPGRADE TEST fixed catalog.json
vbontempi May 19, 2025
65d1cde
fix: fixed catalog.json
vbontempi May 19, 2025
d82b412
Update common-dev-assets
vbontempi May 23, 2025
dd40adc
fix: adding common-dev-assets to resolve conflict
vbontempi May 23, 2025
1fcfb2e
fix: removed description from architecture catalog json
vbontempi May 23, 2025
6b5ed84
Merge branch 'main' of https://github.com/terraform-ibm-modules/terra…
vbontempi May 26, 2025
7022a48
fix: reviewed catalog json
vbontempi May 26, 2025
239d503
feat: added links to doc
vbontempi May 26, 2025
59a61d8
feat: added links to doc
vbontempi May 26, 2025
a89be5f
feat: adjusted doc format
vbontempi May 26, 2025
28f52c7
feat: adjusted doc format and fixed main readme
vbontempi May 26, 2025
a99b689
feat: adjusted doc format
vbontempi May 26, 2025
faa6ce5
feat: adjusted doc and fixed diagram
vbontempi May 26, 2025
b51ecc9
Merge branch 'main' into da_task_11723
vbontempi May 26, 2025
b0cab5b
Merge branch 'main' into da_task_11723
vbontempi Jun 3, 2025
52ef45a
Merge branch 'main' into da_task_11723
vbontempi Jun 4, 2025
9829869
chore: updated catalog json
vbontempi Jun 6, 2025
5b27e5e
Merge branch 'main' into da_task_11723
vbontempi Jun 12, 2025
94204e9
fix: fixed typos
vbontempi Jun 12, 2025
fabb55c
Merge branch 'da_task_11723' of https://github.com/terraform-ibm-modu…
vbontempi Jun 12, 2025
45c69ca
fix: fixed link to doc
vbontempi Jun 12, 2025
613cbf4
fix: addressed review comments
vbontempi Jun 12, 2025
c10379c
fix: addressed PR comments
vbontempi Jun 13, 2025
547ebc4
fix: addressed PR comments
vbontempi Jun 16, 2025
e7c2a92
fix: fixed PR comments
vbontempi Jun 16, 2025
14275d9
fix: added check
vbontempi Jun 16, 2025
ff9b4fd
fix: switched RH version for workers
vbontempi Jun 17, 2025
63cf787
fix: reviewed PR for design standards
vbontempi Jun 18, 2025
0376441
Merge branch 'main' into da_task_11723
vbontempi Jun 20, 2025
612c7c0
Merge branch 'main' into da_task_11723
vbontempi Jun 23, 2025
9beb1d8
fix: removed test comment
vbontempi Jun 24, 2025
c0e8859
Merge branch 'main' into da_task_11723
ocofaigh Jun 27, 2025
29bd5fa
Update .releaserc
ocofaigh Jun 28, 2025
4a813da
Merge branch 'main' into da_task_11723
ocofaigh Jun 28, 2025
dbd5161
Merge branch 'main' into da_task_11723
vbontempi Jun 30, 2025
e9072e2
fix: addressed PR comments
vbontempi Jun 30, 2025
1974860
docs: moved secrets example in a dedicated md
vbontempi Jun 30, 2025
65ec6bb
fix: fixed branch in link
vbontempi Jun 30, 2025
6b92094
fix: fixed catalog validation
vbontempi Jun 30, 2025
a1e47da
fix: fixed catalog pre validation
vbontempi Jun 30, 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
13 changes: 13 additions & 0 deletions .catalog-onboard-pipeline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
apiVersion: v1
offerings:
- name: deploy-arch-ibm-eso
kind: solution
catalog_id: 7df1e4ca-d54c-4fd0-82ce-3d13247308cd
offering_id: 3745fd94-b05c-4720-9d0f-fc97e76d4850
variations:
- name: fully-configurable
mark_ready: true
install_type: fullstack
pre_validation: "tests/scripts/pre-validation-eso.sh"
post_validation: "tests/scripts/post-validation-eso.sh"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ Brewfile.lock.json
testpod*.yaml
precommit.txt

# drawio temporary files
**/.*.drawio.bkp

# VS Code state
.vscode/
*.code-workspace
3 changes: 3 additions & 0 deletions .releaserc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
}],
["@semantic-release/exec", {
"successCmd": "echo \"SEMVER_VERSION=${nextRelease.version}\" >> $GITHUB_ENV"
}],
["@semantic-release/exec", {
"publishCmd": "./ci/trigger-catalog-onboarding-pipeline.sh --version=v${nextRelease.version}"
}]
]
}
22 changes: 17 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ This module automates the installation and configuration of the [External Secret
<!-- END OVERVIEW HOOK -->

<!-- Match this heading to the name of the root level module (the repo name) -->
## external-secrets-operator-module
## External Secrets Operator module

External Secrets Operator synchronizes secrets in the Kubernetes cluster with secrets that are mapped in [Secrets Manager](https://cloud.ibm.com/docs/secrets-manager).

Expand Down Expand Up @@ -288,11 +288,11 @@ For more information about IAM Trusted profiles and ESO Multitenancy configurati
- [Setup of ESO as a Service from RedHat](https://cloud.redhat.com/blog/how-to-setup-external-secrets-operator-eso-as-a-service)
- [ESO Multitenancy configuration from ESO Docs](https://external-secrets.io/latest/guides/multi-tenancy/)

### _Important current limitation of ESO deployment_
### _Important current architectural limitation of ESO deployment_

The current ESO version doesn't allow to customise the default IAM endpoint (https://iam.cloud.ibm.com) it uses when authenticating through apikey (`api_key` authentication) for both ClusterSecretStore and SecretStore APIs.

As a direct effect of this limitation, for a standard OCP cluster topology as defined by GoldenEye design (3 workers zones `edge` `private` and `transit`), an ESO deployment with `api_key` authentication configuration needs to be performed on the workers pool with access to the public network (`dedicated: edge` label in GE usual topology) to work fine. If the ESO deployment is performed on a workers pool without access to public network (i.e. to https://iam.cloud.ibm.com) the apikey authentication is expected to fail.
As a direct effect of this limitation, for an OCP cluster topology designed with three different subnet layers `edge` `private` and `transit`, where only `edge` one has access to the public network, `private` is for business workload and `transit` for private networking, an ESO deployment with `api_key` authentication configuration needs to be performed on the workers pool with access to the public network (`dedicated: edge` label in GE usual topology) to work fine. If the ESO deployment is performed on a workers pool without access to public network (i.e. to https://iam.cloud.ibm.com) the apikey authentication is expected to fail, unless ESO is enrolled into RedHat Service Mesh (this module allows to add the expected resources annotations but the Mesh gateways configuration is out of the scope of the module) or a different networking solution is implemented.


### Pod Reloader
Expand Down Expand Up @@ -476,6 +476,18 @@ module "external_secrets_operator" {
}
```

## Required IAM access policies
You need the following permissions to run this module.

- Account Management
- IAM Services
- **Secrets Manager** service
- `Administrator` platform access
- `Manager` service access
- **Kubernetes** service
- `Administrator` platform access
- `Manager` service access

<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
### Requirements

Expand Down Expand Up @@ -509,9 +521,9 @@ module "external_secrets_operator" {
| <a name="input_eso_enroll_in_servicemesh"></a> [eso\_enroll\_in\_servicemesh](#input\_eso\_enroll\_in\_servicemesh) | Flag to enroll ESO into istio servicemesh | `bool` | `false` | no |
| <a name="input_eso_image"></a> [eso\_image](#input\_eso\_image) | The External Secrets Operator image in the format of `[registry-url]/[namespace]/[image]`. | `string` | `"ghcr.io/external-secrets/external-secrets"` | no |
| <a name="input_eso_image_version"></a> [eso\_image\_version](#input\_eso\_image\_version) | The version or digest for the external secrets image to deploy. If changing the value, ensure it is compatible with the chart version set in eso\_chart\_version. | `string` | `"v0.17.0-ubi@sha256:5c9f7750fb922fb09cfc3b430d5916923b85f17ba5099b244173344ab3046b53"` | no |
| <a name="input_eso_namespace"></a> [eso\_namespace](#input\_eso\_namespace) | Namespace to create and be used to install ESO components including helm releases. If eso\_store\_scope == cluster, this will also be used to deploy ClusterSecretStore/cluster\_store in it | `string` | `null` | no |
| <a name="input_eso_namespace"></a> [eso\_namespace](#input\_eso\_namespace) | Namespace to create and be used to install ESO components including helm releases. | `string` | `null` | no |
| <a name="input_eso_pod_configuration"></a> [eso\_pod\_configuration](#input\_eso\_pod\_configuration) | Configuration to use to customise ESO deployment on specific pods. Setting appropriate values will result in customising ESO helm release. Default value is {} to keep ESO standard deployment. Ignore the key if not required. | <pre>object({<br/> annotations = optional(object({<br/> # The annotations for external secret controller pods.<br/> external_secrets = optional(map(string), {})<br/> # The annotations for external secret cert controller pods.<br/> external_secrets_cert_controller = optional(map(string), {})<br/> # The annotations for external secret controller pods.<br/> external_secrets_webhook = optional(map(string), {})<br/> }), {})<br/><br/> labels = optional(object({<br/> # The labels for external secret controller pods.<br/> external_secrets = optional(map(string), {})<br/> # The labels for external secret cert controller pods.<br/> external_secrets_cert_controller = optional(map(string), {})<br/> # The labels for external secret controller pods.<br/> external_secrets_webhook = optional(map(string), {})<br/> }), {})<br/> })</pre> | `{}` | no |
| <a name="input_existing_eso_namespace"></a> [existing\_eso\_namespace](#input\_existing\_eso\_namespace) | Existing Namespace to be used to install ESO components including helm releases. If eso\_store\_scope == cluster, this will also be used to deploy ClusterSecretStore/cluster\_store in it | `string` | `null` | no |
| <a name="input_existing_eso_namespace"></a> [existing\_eso\_namespace](#input\_existing\_eso\_namespace) | Existing Namespace to be used to install ESO components including helm releases. | `string` | `null` | no |
| <a name="input_reloader_chart_location"></a> [reloader\_chart\_location](#input\_reloader\_chart\_location) | The location of the Reloader Helm chart. | `string` | `"https://stakater.github.io/stakater-charts"` | no |
| <a name="input_reloader_chart_version"></a> [reloader\_chart\_version](#input\_reloader\_chart\_version) | The version of the Reloader Helm chart. Ensure that the chart version is compatible with the image version specified in reloader\_image\_version. | `string` | `"2.1.4"` | no |
| <a name="input_reloader_custom_values"></a> [reloader\_custom\_values](#input\_reloader\_custom\_values) | String containing custom values to be used for reloader helm chart. See https://github.com/stakater/Reloader/blob/master/deployments/kubernetes/chart/reloader/values.yaml | `string` | `null` | no |
Expand Down
4 changes: 4 additions & 0 deletions deploy-arch-ibm-eso.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion examples/all-combined/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ locals {
machine_type = "bx2.4x16"
workers_per_zone = 1
labels = { "dedicated" : "default" }
operating_system = "REDHAT_8_64"
operating_system = "RHEL_9_64"
}
]

Expand Down
2 changes: 1 addition & 1 deletion examples/basic/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ locals {
machine_type = "bx2.4x16"
workers_per_zone = 1
labels = { "dedicated" : "default" }
operating_system = "REDHAT_8_64"
operating_system = "RHEL_9_64"
}
]

Expand Down
Loading