Skip to content

Commit c9c7dd3

Browse files
authored
feat: added DA for IBM Cloud catalog (#108)
1 parent 51affa7 commit c9c7dd3

32 files changed

+2380
-44
lines changed

.catalog-onboard-pipeline.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
apiVersion: v1
3+
offerings:
4+
- name: deploy-arch-ibm-eso
5+
kind: solution
6+
catalog_id: 7df1e4ca-d54c-4fd0-82ce-3d13247308cd
7+
offering_id: 3745fd94-b05c-4720-9d0f-fc97e76d4850
8+
variations:
9+
- name: fully-configurable
10+
mark_ready: true
11+
install_type: fullstack
12+
pre_validation: "tests/scripts/pre-validation-eso.sh"
13+
post_validation: "tests/scripts/post-validation-eso.sh"

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ Brewfile.lock.json
5555
testpod*.yaml
5656
precommit.txt
5757

58+
# drawio temporary files
59+
**/.*.drawio.bkp
60+
5861
# VS Code state
5962
.vscode/
6063
*.code-workspace

.releaserc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
}],
1111
["@semantic-release/exec", {
1212
"successCmd": "echo \"SEMVER_VERSION=${nextRelease.version}\" >> $GITHUB_ENV"
13+
}],
14+
["@semantic-release/exec", {
15+
"publishCmd": "./ci/trigger-catalog-onboarding-pipeline.sh --version=v${nextRelease.version}"
1316
}]
1417
]
1518
}

README.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ This module automates the installation and configuration of the [External Secret
2626
<!-- END OVERVIEW HOOK -->
2727

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

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

@@ -288,11 +288,11 @@ For more information about IAM Trusted profiles and ESO Multitenancy configurati
288288
- [Setup of ESO as a Service from RedHat](https://cloud.redhat.com/blog/how-to-setup-external-secrets-operator-eso-as-a-service)
289289
- [ESO Multitenancy configuration from ESO Docs](https://external-secrets.io/latest/guides/multi-tenancy/)
290290
291-
### _Important current limitation of ESO deployment_
291+
### _Important current architectural limitation of ESO deployment_
292292
293293
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.
294294
295-
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.
295+
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.
296296
297297
298298
### Pod Reloader
@@ -476,6 +476,18 @@ module "external_secrets_operator" {
476476
}
477477
```
478478
479+
## Required IAM access policies
480+
You need the following permissions to run this module.
481+
482+
- Account Management
483+
- IAM Services
484+
- **Secrets Manager** service
485+
- `Administrator` platform access
486+
- `Manager` service access
487+
- **Kubernetes** service
488+
- `Administrator` platform access
489+
- `Manager` service access
490+
479491
<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
480492
### Requirements
481493
@@ -509,9 +521,9 @@ module "external_secrets_operator" {
509521
| <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 |
510522
| <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 |
511523
| <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 |
512-
| <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 |
524+
| <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 |
513525
| <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 |
514-
| <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 |
526+
| <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 |
515527
| <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 |
516528
| <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 |
517529
| <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 |

deploy-arch-ibm-eso.svg

Lines changed: 4 additions & 0 deletions
Loading

examples/all-combined/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ locals {
5252
machine_type = "bx2.4x16"
5353
workers_per_zone = 1
5454
labels = { "dedicated" : "default" }
55-
operating_system = "REDHAT_8_64"
55+
operating_system = "RHEL_9_64"
5656
}
5757
]
5858

examples/basic/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ locals {
6464
machine_type = "bx2.4x16"
6565
workers_per_zone = 1
6666
labels = { "dedicated" : "default" }
67-
operating_system = "REDHAT_8_64"
67+
operating_system = "RHEL_9_64"
6868
}
6969
]
7070

0 commit comments

Comments
 (0)