From f942909e58ea49494902156f6fbd5ca5d25af0f7 Mon Sep 17 00:00:00 2001 From: Josef Harte Date: Thu, 29 Jan 2026 10:34:15 +0000 Subject: [PATCH 1/5] aiservice tenant operator --- .../113-ibm-aiservice/values.yaml | 6 --- .../templates/02-aiservice-sls-secret.yaml | 4 +- .../templates/06-aiservice-workspace.yaml | 4 +- ...iservice-tenant-operator-subscription.yaml | 40 +++++++++++++++++++ .../ibm-aiservice-instance-root/values.yaml | 3 -- .../ibm-aiservice-tenant-root/values.yaml | 4 -- 6 files changed, 44 insertions(+), 17 deletions(-) rename instance-applications/{113-ibm-aiservice => 115-ibm-aiservice-tenant}/templates/02-aiservice-sls-secret.yaml (66%) create mode 100644 instance-applications/115-ibm-aiservice-tenant/templates/09-aiservice-tenant-operator-subscription.yaml diff --git a/instance-applications/113-ibm-aiservice/values.yaml b/instance-applications/113-ibm-aiservice/values.yaml index 0d1d327da..86b26038c 100644 --- a/instance-applications/113-ibm-aiservice/values.yaml +++ b/instance-applications/113-ibm-aiservice/values.yaml @@ -26,10 +26,6 @@ mas_aiservice_storage_secretkey: "MAS_AISERVICE_STORAGE_SECRETKEY" mas_aiservice_storage_host: "true" mas_aiservice_storage_port: "true" -# SLS -mas_aiservice_sls_registration_key_secret: "sls-registration-key" - - mas_aiservice_db_host: "MAS_AISERVICE_DB_HOST" mas_aiservice_db_port: "MAS_AISERVICE_DB_PORT" mas_aiservice_db_secret_name: "MAS_AISERVICE_DB_SECRET_NAME" @@ -39,8 +35,6 @@ mas_aiservice_storage_pipelines_bucket: "MAS_AISERVICE_STORAGE_PIPELINES_BUCKET" mas_aiservice_storage_tenants_bucket: "MAS_AISERVICE_STORAGE_TENANTS_BUCKET" mas_aiservice_storage_templates_bucket: "MAS_AISERVICE_STORAGE_TEMPLATES_BUCKET" -slscfg_registration_key: "slscfg_registration_key" - # DRO mas_aiservice_dro_token_secret: "dro-token" mas_aiservice_dro_cacert_secret: "dro-certificates" diff --git a/instance-applications/113-ibm-aiservice/templates/02-aiservice-sls-secret.yaml b/instance-applications/115-ibm-aiservice-tenant/templates/02-aiservice-sls-secret.yaml similarity index 66% rename from instance-applications/113-ibm-aiservice/templates/02-aiservice-sls-secret.yaml rename to instance-applications/115-ibm-aiservice-tenant/templates/02-aiservice-sls-secret.yaml index fbbdb37ad..d5b2f47da 100644 --- a/instance-applications/113-ibm-aiservice/templates/02-aiservice-sls-secret.yaml +++ b/instance-applications/115-ibm-aiservice-tenant/templates/02-aiservice-sls-secret.yaml @@ -2,8 +2,8 @@ apiVersion: v1 kind: Secret metadata: - name: "{{ .Values.aiservice_sls_registration_key_secret }}" - namespace: "{{ .Values.aiservice_namespace }}" + name: "{{ .Values.tenantNamespace }}----sls-secret" + namespace: "{{ .Values.tenantNamespace }}" annotations: argocd.argoproj.io/sync-wave: "141" type: Opaque diff --git a/instance-applications/115-ibm-aiservice-tenant/templates/06-aiservice-workspace.yaml b/instance-applications/115-ibm-aiservice-tenant/templates/06-aiservice-workspace.yaml index e8b78c57d..e0f386c73 100644 --- a/instance-applications/115-ibm-aiservice-tenant/templates/06-aiservice-workspace.yaml +++ b/instance-applications/115-ibm-aiservice-tenant/templates/06-aiservice-workspace.yaml @@ -3,7 +3,7 @@ apiVersion: aiservice.ibm.com/v1 kind: AIServiceTenant metadata: name: "{{ .Values.tenantNamespace }}" - namespace: "{{ .Values.aiservice_namespace }}" + namespace: "{{ .Values.tenantNamespace }}" annotations: argocd.argoproj.io/sync-wave: "307" ansible.sdk.operatorframework.io/verbosity: "{{ .Values.aiservice_operator_log_level }}" @@ -43,4 +43,4 @@ spec: entitlement: type: "{{ .Values.tenant_entitlement_type }}" startDate: "{{ .Values.tenant_entitlement_start_date }}" - endDate: "{{ .Values.tenant_entitlement_end_date }}" \ No newline at end of file + endDate: "{{ .Values.tenant_entitlement_end_date }}" diff --git a/instance-applications/115-ibm-aiservice-tenant/templates/09-aiservice-tenant-operator-subscription.yaml b/instance-applications/115-ibm-aiservice-tenant/templates/09-aiservice-tenant-operator-subscription.yaml new file mode 100644 index 000000000..d3d7b724b --- /dev/null +++ b/instance-applications/115-ibm-aiservice-tenant/templates/09-aiservice-tenant-operator-subscription.yaml @@ -0,0 +1,40 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: ibm-entitlement + namespace: "{{ .Values.tenantNamespace }}" + annotations: + argocd.argoproj.io/sync-wave: "308" +type: kubernetes.io/dockerconfigjson +data: + .dockerconfigjson: "{{ .Values.artifactory_token}}" + +--- +apiVersion: operators.coreos.com/v1 +kind: OperatorGroup +metadata: + name: "{{ .Values.tenantNamespace }}" + namespace: "{{ .Values.tenantNamespace }}" + annotations: + argocd.argoproj.io/sync-wave: "308" + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true +spec: + targetNamespaces: + - "{{ .Values.tenantNamespace }}" + +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: Subscription +metadata: + name: ibm-aiservice-tenant + namespace: "{{ .Values.tenantNamespace }}" + annotations: + argocd.argoproj.io/sync-wave: "308" + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true +spec: + channel: "{{ .Values.aiservice_channel }}" + installPlanApproval: Automatic + name: ibm-aiservice-tenant + source: "{{ .Values.mas_catalog_source }}" + sourceNamespace: openshift-marketplace diff --git a/root-applications/ibm-aiservice-instance-root/values.yaml b/root-applications/ibm-aiservice-instance-root/values.yaml index baab575e8..b1ec892c2 100644 --- a/root-applications/ibm-aiservice-instance-root/values.yaml +++ b/root-applications/ibm-aiservice-instance-root/values.yaml @@ -193,9 +193,6 @@ ibm_aiservice: mas_aiservice_storage_host: "true" mas_aiservice_storage_port: "true" - # SLS - mas_aiservice_sls_registration_key_secret: "sls-registration-key" - mas_aiservice_db_host: "mas_aiservice_db_host" mas_aiservice_db_port: "mas_aiservice_db_port" mas_aiservice_db_secret_name: "mas_aiservice_db_secret_name" diff --git a/root-applications/ibm-aiservice-tenant-root/values.yaml b/root-applications/ibm-aiservice-tenant-root/values.yaml index cd2db235e..1a7c0818a 100644 --- a/root-applications/ibm-aiservice-tenant-root/values.yaml +++ b/root-applications/ibm-aiservice-tenant-root/values.yaml @@ -190,9 +190,6 @@ ibm_aiservice: mas_aiservice_storage_host: "true" mas_aiservice_storage_port: "true" - # SLS - mas_aiservice_sls_registration_key_secret: "sls-registration-key" - mas_aiservice_db_host: "mas_aiservice_db_host" mas_aiservice_db_port: "mas_aiservice_db_port" mas_aiservice_db_secret_name: "mas_aiservice_db_secret_name" @@ -300,7 +297,6 @@ ibm_aiservice_tenant: mas_aiservice_watsonxai_project_id: MAS_AISERVICE_WATSONXAI_PROJECT_ID # SLS - #mas_aiservice_sls_registration_key_secret: "sls-registration-key" mas_aiservice_sls_subscription_id: "001" # S3 From a1a9acf04bc4247754d8a9a7aeb1df5044a93e59 Mon Sep 17 00:00:00 2001 From: Josef Harte Date: Thu, 5 Feb 2026 14:24:56 +0000 Subject: [PATCH 2/5] add channel and source --- .../templates/100-ibm-aiservice-tenant-app.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml b/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml index 32e061f39..aae2a116f 100644 --- a/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml +++ b/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml @@ -35,6 +35,10 @@ spec: env: - name: {{ .Values.avp.values_varname }} value: | + # These values are taken from main AI Service config and are not tenant-specific + aiservice_channel: "{{ .Values.ibm_aiservice.aiservice_channel }}" + mas_catalog_source: "{{ .Values.ibm_aiservice.mas_catalog_source }}" + tenant_id: "{{ .Values.ibm_aiservice_tenant.tenant_id }}" aiservice_instance_id: "{{ .Values.ibm_aiservice_tenant.aiservice_instance_id }}" aiservice_namespace: "{{ .Values.ibm_aiservice_tenant.aiservice_namespace }}" From d508af3d478af9c2340f19acd3fd656e1e5b245f Mon Sep 17 00:00:00 2001 From: Josef Harte Date: Thu, 5 Feb 2026 14:37:38 +0000 Subject: [PATCH 3/5] fix app namespace --- .../templates/100-ibm-aiservice-tenant-app.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml b/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml index aae2a116f..787f7688d 100644 --- a/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml +++ b/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml @@ -25,7 +25,7 @@ spec: project: "{{ .Values.argo.projects.apps }}" destination: server: {{ .Values.cluster.url }} - namespace: "{{ .Values.ibm_aiservice_tenant.aiservice_namespace }}" + namespace: "{{ .Values.ibm_aiservice_tenant.tenantNamespace }}" source: repoURL: "{{ .Values.source.repo_url }}" path: instance-applications/115-ibm-aiservice-tenant From 477f81e0e3b431614e1eae1b1097db66dd6aed39 Mon Sep 17 00:00:00 2001 From: Josef Harte Date: Thu, 5 Feb 2026 14:56:51 +0000 Subject: [PATCH 4/5] add new config generator --- .../templates/070-aiservice-tenant-appset.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/root-applications/ibm-aiservice-instance-root/templates/070-aiservice-tenant-appset.yaml b/root-applications/ibm-aiservice-instance-root/templates/070-aiservice-tenant-appset.yaml index a7c440c3a..4aec99221 100644 --- a/root-applications/ibm-aiservice-instance-root/templates/070-aiservice-tenant-appset.yaml +++ b/root-applications/ibm-aiservice-instance-root/templates/070-aiservice-tenant-appset.yaml @@ -29,6 +29,11 @@ spec: revision: "{{ .Values.generator.revision }}" files: - path: "{{ .Values.account.id }}/{{ .Values.cluster.id }}/{{ .Values.instance.id }}/*/ibm-aiservice-tenant-base.yaml" + - git: + repoURL: "{{ .Values.generator.repo_url }}" + revision: "{{ .Values.generator.revision }}" + files: + - path: "{{ .Values.account.id }}/{{ .Values.cluster.id }}/{{ .Values.instance.id }}/ibm-aiservice.yaml" - git: repoURL: "{{ .Values.generator.repo_url }}" revision: "{{ .Values.generator.revision }}" From b8539b9f2221b5c44a00f71901d7dbda4f545b0f Mon Sep 17 00:00:00 2001 From: Josef Harte Date: Mon, 9 Feb 2026 10:38:38 +0000 Subject: [PATCH 5/5] clean up --- .../templates/070-aiservice-tenant-appset.yaml | 5 ----- .../templates/100-ibm-aiservice-tenant-app.yaml | 9 +++++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/root-applications/ibm-aiservice-instance-root/templates/070-aiservice-tenant-appset.yaml b/root-applications/ibm-aiservice-instance-root/templates/070-aiservice-tenant-appset.yaml index 4aec99221..a7c440c3a 100644 --- a/root-applications/ibm-aiservice-instance-root/templates/070-aiservice-tenant-appset.yaml +++ b/root-applications/ibm-aiservice-instance-root/templates/070-aiservice-tenant-appset.yaml @@ -29,11 +29,6 @@ spec: revision: "{{ .Values.generator.revision }}" files: - path: "{{ .Values.account.id }}/{{ .Values.cluster.id }}/{{ .Values.instance.id }}/*/ibm-aiservice-tenant-base.yaml" - - git: - repoURL: "{{ .Values.generator.repo_url }}" - revision: "{{ .Values.generator.revision }}" - files: - - path: "{{ .Values.account.id }}/{{ .Values.cluster.id }}/{{ .Values.instance.id }}/ibm-aiservice.yaml" - git: repoURL: "{{ .Values.generator.repo_url }}" revision: "{{ .Values.generator.revision }}" diff --git a/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml b/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml index 787f7688d..b5fff8eb6 100644 --- a/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml +++ b/root-applications/ibm-aiservice-tenant-root/templates/100-ibm-aiservice-tenant-app.yaml @@ -35,16 +35,17 @@ spec: env: - name: {{ .Values.avp.values_varname }} value: | - # These values are taken from main AI Service config and are not tenant-specific - aiservice_channel: "{{ .Values.ibm_aiservice.aiservice_channel }}" - mas_catalog_source: "{{ .Values.ibm_aiservice.mas_catalog_source }}" - + mas_catalog_source: "{{ .Values.ibm_aiservice_tenant.mas_catalog_source }}" + tenant_id: "{{ .Values.ibm_aiservice_tenant.tenant_id }}" aiservice_instance_id: "{{ .Values.ibm_aiservice_tenant.aiservice_instance_id }}" aiservice_namespace: "{{ .Values.ibm_aiservice_tenant.aiservice_namespace }}" + aiservice_channel: "{{ .Values.ibm_aiservice_tenant.aiservice_channel }}" + account_id: "{{ .Values.account.id }}" region_id: "{{ .Values.region.id }}" cluster_id: "{{ .Values.cluster.id }}" + # SAAS aiservice_saas_apikey: "{{ .Values.ibm_aiservice_tenant.aiservice_saas_apikey }}" mas_aiservice_saas: "{{ .Values.ibm_aiservice_tenant.mas_aiservice_saas }}"