diff --git a/environments/kind/values.fm.yaml b/environments/kind/values.fm.yaml deleted file mode 100644 index 189cde663651d24376a26f281c49c817f6c6c80d..0000000000000000000000000000000000000000 --- a/environments/kind/values.fm.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# ==================================================================== -# Kind-specific overrides for the Federation Manager subchart -# ==================================================================== -# Used by deploy-on-kind.sh: -# helm install federation-manager ./oop-platform-chart/charts/federation-manager \ -# -f values.fm.kind.yaml -# -# Note: keys are at root level because this targets the subchart directly, -# not through the umbrella chart (where they would be under federationManager:). -# ==================================================================== - -mongodb: - persistence: - storageClass: manual - hostPath: /mnt/data/mongodb_fm - -keycloak: - service: - type: NodePort - nodePort: 30081 - -federationManager: - service: - type: NodePort - nodePort: 30989 diff --git a/environments/kind/values.yaml b/environments/kind/values.yaml index 20920ea14e6f16a1021e8c87e78917c36d338a10..fbaea644ee0a801263d60ebb73ebf0a951fa9840 100644 --- a/environments/kind/values.yaml +++ b/environments/kind/values.yaml @@ -2,7 +2,7 @@ # Kind-specific overrides for the OOP umbrella chart (SRM + OEG) # ==================================================================== # Used by deploy-on-kind.sh: -# helm install oop-platform ./oop-platform-chart -f values.kind.yaml +# helm install oop-platform ./oop-platform-chart -f environments/kind/values.yaml # # For other environments supply your own values file. # ==================================================================== @@ -15,14 +15,24 @@ srm: enabled: true path: /mnt/data/mongodb_srm createPV: true + image: + pullPolicy: IfNotPresent srmcontroller: service: type: NodePort nodePort: 32415 + image: + pullPolicy: IfNotPresent + env: + networkAdapterName: open5gs + networkAdapterBaseUrl: http://open5gs-webui:3000 + scsAsId: "" artifactManager: service: type: NodePort nodePort: 30080 + image: + pullPolicy: IfNotPresent oeg: mongodb: @@ -32,7 +42,40 @@ oeg: enabled: true path: /mnt/data/mongodb_oeg createPV: true + image: + pullPolicy: IfNotPresent oegcontroller: service: type: NodePort nodePort: 32263 + image: + pullPolicy: IfNotPresent + +federationManager: + federationManager: + config: + partner_op: + host: "127.0.0.1" + server: "/operatorplatform/federation/v1" + port: "8992" + service: + type: NodePort + nodePort: 30989 + image: + pullPolicy: IfNotPresent + + mongodb: + persistence: + storageClass: manual + hostPath: + enabled: true + path: /mnt/data/mongodb_fm + image: + pullPolicy: IfNotPresent + + keycloak: + service: + type: NodePort + nodePort: 30081 + image: + pullPolicy: IfNotPresent diff --git a/oop-platform-chart/charts/federation-manager/templates/federation-manager-configmap.yaml b/oop-platform-chart/charts/federation-manager/templates/federation-manager-configmap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f0e2e54d5e069c69437bd2da7ca22dc959564ca0 --- /dev/null +++ b/oop-platform-chart/charts/federation-manager/templates/federation-manager-configmap.yaml @@ -0,0 +1,76 @@ +{{- if .Values.federationManager.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: federation-manager-config + namespace: {{ include "federation-manager.namespace" . }} + labels: + {{- include "federation-manager.fm.labels" . | nindent 4 }} + {{- with .Values.commonAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +data: + config.cfg: | + [keycloak] + client1_id = {{ .Values.federationManager.config.keycloak.client1_id }} + client1_secret = ${CLIENT1_SECRET} + client2_id = {{ .Values.federationManager.config.keycloak.client2_id }} + client2_secret = ${CLIENT2_SECRET} + scope = {{ .Values.federationManager.config.keycloak.scope }} + host = {{ .Values.federationManager.config.keycloak.host }} + port = {{ .Values.federationManager.config.keycloak.port }} + realm = {{ .Values.federationManager.config.keycloak.realm }} + + [server] + host = {{ .Values.federationManager.config.server.host }} + port = {{ .Values.federationManager.config.server.port }} + prefix = {{ .Values.federationManager.config.server.prefix }} + version = {{ .Values.federationManager.config.server.version }} + protocol = {{ .Values.federationManager.config.server.protocol }} + + [mongodb] + host = {{ .Values.federationManager.config.mongodb.host }} + port = {{ .Values.federationManager.config.mongodb.port }} + + [i2edge] + host = {{ .Values.federationManager.config.i2edge.host }} + port = {{ .Values.federationManager.config.i2edge.port }} + + [edge_cloud_platform] + host = {{ .Values.federationManager.config.edgeCloudPlatform.host }} + port = {{ .Values.federationManager.config.edgeCloudPlatform.port }} + client_name = {{ .Values.federationManager.config.edgeCloudPlatform.client_name }} + flavour_id = {{ .Values.federationManager.config.edgeCloudPlatform.flavour_id }} + + [artefact_manager] + host = {{ .Values.federationManager.config.artefactManager.host }} + port = {{ .Values.federationManager.config.artefactManager.port }} + enabled = {{ .Values.federationManager.config.artefactManager.enabled }} + dst_registry = {{ .Values.federationManager.config.artefactManager.dst_registry }} + dst_username = {{ .Values.federationManager.config.artefactManager.dst_username }} + dst_password = {{ .Values.federationManager.config.artefactManager.dst_password }} + dst_token = {{ .Values.federationManager.config.artefactManager.dst_token }} + + [op_data] + partnerOPFederationId = {{ .Values.federationManager.config.op_data.partnerOPFederationId }} + partnerOPCountryCode = {{ .Values.federationManager.config.op_data.partnerOPCountryCode }} + partnerOPMobileNetworkCode_MCC = {{ .Values.federationManager.config.op_data.partnerOPMobileNetworkCode_MCC }} + partnerOPMobileNetworkCode_MNC = {{ .Values.federationManager.config.op_data.partnerOPMobileNetworkCode_MNC }} + partnerOPFixedNetworkCode = {{ .Values.federationManager.config.op_data.partnerOPFixedNetworkCode }} + platformCaps = {{ .Values.federationManager.config.op_data.platformCaps }} + edgeDiscoveryServiceEndPoint_port = {{ .Values.federationManager.config.op_data.edgeDiscoveryServiceEndPoint_port }} + edgeDiscoveryServiceEndPoint_fqdn = {{ .Values.federationManager.config.op_data.edgeDiscoveryServiceEndPoint_fqdn }} + edgeDiscoveryServiceEndPoint_ipv4Addresses = {{ .Values.federationManager.config.op_data.edgeDiscoveryServiceEndPoint_ipv4Addresses }} + edgeDiscoveryServiceEndPoint_ipv6Addresses = {{ .Values.federationManager.config.op_data.edgeDiscoveryServiceEndPoint_ipv6Addresses }} + lcmServiceEndPoint_port = {{ .Values.federationManager.config.op_data.lcmServiceEndPoint_port }} + lcmServiceEndPoint_fqdn = {{ .Values.federationManager.config.op_data.lcmServiceEndPoint_fqdn }} + lcmServiceEndPoint_ipv4Addresses = {{ .Values.federationManager.config.op_data.lcmServiceEndPoint_ipv4Addresses }} + lcmServiceEndPoint_ipv6Addresses = {{ .Values.federationManager.config.op_data.lcmServiceEndPoint_ipv6Addresses }} + + [partner_op] + partner_op_host = {{ .Values.federationManager.config.partner_op.host }} + partner_op_server = {{ .Values.federationManager.config.partner_op.server }} + partner_op_port = {{ .Values.federationManager.config.partner_op.port }} + role = {{ .Values.federationManager.config.partner_op.role }} +{{- end }} diff --git a/oop-platform-chart/charts/federation-manager/templates/federation-manager-deployment.yaml b/oop-platform-chart/charts/federation-manager/templates/federation-manager-deployment.yaml index f84be3b16fa82e5a56ea834404e70a2da0c5472a..8eaa7113dddf75e4a6fdc4472f5026010647dc5a 100644 --- a/oop-platform-chart/charts/federation-manager/templates/federation-manager-deployment.yaml +++ b/oop-platform-chart/charts/federation-manager/templates/federation-manager-deployment.yaml @@ -25,6 +25,35 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} + initContainers: + - name: config-merge + image: busybox:stable + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + args: + - | + sed "s|\${CLIENT1_SECRET}|$CLIENT1_SECRET|g; s|\${CLIENT2_SECRET}|$CLIENT2_SECRET|g" \ + /configmap/config.cfg > /work/config.cfg + env: + - name: CLIENT1_SECRET + valueFrom: + secretKeyRef: + name: federation-manager-secrets + key: client1_secret + - name: CLIENT2_SECRET + valueFrom: + secretKeyRef: + name: federation-manager-secrets + key: client2_secret + volumeMounts: + - name: configmap + mountPath: /configmap + readOnly: true + - name: config + mountPath: /work + containers: ##################################################################### @@ -44,7 +73,7 @@ spec: - name: KC_IMPORT value: /opt/keycloak/data/import/realm-import.json ports: - - name: http + - name: keycloak-http containerPort: 8080 protocol: TCP volumeMounts: @@ -63,7 +92,7 @@ spec: protocol: TCP volumeMounts: - name: config - readOnly: false + readOnly: true mountPath: /usr/app/src/conf/ resources: {{- toYaml .Values.federationManager.resources | nindent 12 }} @@ -119,10 +148,17 @@ spec: # VOLUME DEFINITIONS ####################################################################### volumes: - # Mount federation-manager config.yml - name: config + emptyDir: {} + + - name: configmap + configMap: + name: federation-manager-config + defaultMode: 420 + + - name: secrets secret: - secretName: federation-manager-config + secretName: federation-manager-secrets defaultMode: 420 # Keycloak realm import ConfigMap diff --git a/oop-platform-chart/charts/federation-manager/templates/federation-manager-secret.yaml b/oop-platform-chart/charts/federation-manager/templates/federation-manager-secret.yaml index 7eab9f9a2e8349bf5142add7b04b298328edce54..fd2c2e46f7d75e11e0fcfde266b51ac12e4fc535 100644 --- a/oop-platform-chart/charts/federation-manager/templates/federation-manager-secret.yaml +++ b/oop-platform-chart/charts/federation-manager/templates/federation-manager-secret.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Secret metadata: - name: federation-manager-config + name: federation-manager-secrets namespace: {{ include "federation-manager.namespace" . }} labels: {{- include "federation-manager.fm.labels" . | nindent 4 }} @@ -12,5 +12,6 @@ metadata: {{- end }} type: Opaque data: - config.cfg: {{ printf "[keycloak]\nclient1_id = %s\nclient1_secret = %s\nclient2_id = %s\nclient2_secret = %s\nscope = %s\n\n[server]\nhost = %s\nport = %s\nprefix = %s\nversion = %s\nprotocol = %s\n\n[mongodb]\nhost = %s\nport = %s\n\n[i2edge]\nhost = %s\nport = %s\n\n[op_data]\npartnerOPFederationId = %s\npartnerOPCountryCode = %s\npartnerOPMobileNetworkCode_MCC = %s\npartnerOPMobileNetworkCode_MNC = %s\npartnerOPFixedNetworkCode = %s\nplatformCaps = %s\nedgeDiscoveryServiceEndPoint_port = %s\nedgeDiscoveryServiceEndPoint_fqdn = %s\nedgeDiscoveryServiceEndPoint_ipv4Addresses = %s\nedgeDiscoveryServiceEndPoint_ipv6Addresses = %s\nlcmServiceEndPoint_port = %s\nlcmServiceEndPoint_fqdn = %s\nlcmServiceEndPoint_ipv4Addresses = %s\nlcmServiceEndPoint_ipv6Addresses = %s\n\n[partner_op]\npartner_op_host = %s\npartner_op_server = %s\npartner_op_port = %s\nrole = %s\n" .Values.federationManager.config.keycloak.client1_id .Values.federationManager.config.keycloak.client1_secret .Values.federationManager.config.keycloak.client2_id .Values.federationManager.config.keycloak.client2_secret .Values.federationManager.config.keycloak.scope .Values.federationManager.config.server.host .Values.federationManager.config.server.port .Values.federationManager.config.server.prefix .Values.federationManager.config.server.version .Values.federationManager.config.server.protocol .Values.federationManager.config.mongodb.host .Values.federationManager.config.mongodb.port .Values.federationManager.config.i2edge.host .Values.federationManager.config.i2edge.port .Values.federationManager.config.op_data.partnerOPFederationId .Values.federationManager.config.op_data.partnerOPCountryCode .Values.federationManager.config.op_data.partnerOPMobileNetworkCode_MCC .Values.federationManager.config.op_data.partnerOPMobileNetworkCode_MNC .Values.federationManager.config.op_data.partnerOPFixedNetworkCode .Values.federationManager.config.op_data.platformCaps .Values.federationManager.config.op_data.edgeDiscoveryServiceEndPoint_port .Values.federationManager.config.op_data.edgeDiscoveryServiceEndPoint_fqdn .Values.federationManager.config.op_data.edgeDiscoveryServiceEndPoint_ipv4Addresses .Values.federationManager.config.op_data.edgeDiscoveryServiceEndPoint_ipv6Addresses .Values.federationManager.config.op_data.lcmServiceEndPoint_port .Values.federationManager.config.op_data.lcmServiceEndPoint_fqdn .Values.federationManager.config.op_data.lcmServiceEndPoint_ipv4Addresses .Values.federationManager.config.op_data.lcmServiceEndPoint_ipv6Addresses .Values.federationManager.config.partner_op.host .Values.federationManager.config.partner_op.server .Values.federationManager.config.partner_op.port .Values.federationManager.config.partner_op.role | b64enc }} + client1_secret: {{ .Values.federationManager.config.keycloak.client1_secret | b64enc }} + client2_secret: {{ .Values.federationManager.config.keycloak.client2_secret | b64enc }} {{- end }} diff --git a/oop-platform-chart/charts/federation-manager/templates/mongodb-pv.yaml b/oop-platform-chart/charts/federation-manager/templates/mongodb-pv.yaml index 6ebc6b770b0d7301a829e6aefb5cbb00cadbe1ab..be3260429fe997152bad894d72b0a4eb101932e9 100644 --- a/oop-platform-chart/charts/federation-manager/templates/mongodb-pv.yaml +++ b/oop-platform-chart/charts/federation-manager/templates/mongodb-pv.yaml @@ -13,6 +13,6 @@ spec: persistentVolumeReclaimPolicy: Retain storageClassName: {{ .Values.mongodb.persistence.storageClass | default "mongodb-fm-storage" }} hostPath: - path: {{ .Values.mongodb.persistence.hostPath | default "/mnt/data/mongodb_fm" }} + path: {{ default "/mnt/data/mongodb_fm" .Values.mongodb.persistence.hostPath.path }} type: DirectoryOrCreate {{- end }} diff --git a/oop-platform-chart/charts/federation-manager/values.yaml b/oop-platform-chart/charts/federation-manager/values.yaml index 87fd831091369b3e39597377157916231e548fe9..0142fff770adcb3231ce69692cdf398d6f4b982a 100644 --- a/oop-platform-chart/charts/federation-manager/values.yaml +++ b/oop-platform-chart/charts/federation-manager/values.yaml @@ -95,7 +95,9 @@ mongodb: accessMode: ReadWriteOnce size: 1Gi storageClass: "mongodb-fm-storage" - hostPath: /mnt/data/mongodb_fm + hostPath: + enabled: true + path: /mnt/data/mongodb_fm resources: limits: @@ -140,6 +142,9 @@ federationManager: client2_id: "originating-op-2" client2_secret: "2mhznERfWclLDuVojY77Lp4Qd2r4e8Ms" scope: "fed-mgmt" + host: "keycloak" + port: "8080" + realm: "federation" server: host: "127.0.0.1" @@ -157,6 +162,21 @@ federationManager: host: "192.168.123.237" port: "30760" + edgeCloudPlatform: + host: "127.0.0.1" + port: "30499" + client_name: "federation-manager" + flavour_id: "flavour1" + + artefactManager: + host: "127.0.0.1" + port: "30499" + enabled: "true" + dst_registry: "" + dst_username: "" + dst_password: "" + dst_token: "" + op_data: partnerOPFederationId: "i2cat" partnerOPCountryCode: "ES" diff --git a/oop-platform-chart/values.yaml b/oop-platform-chart/values.yaml index 5eb028f43b58171dd6a20d4e1f3edc868687f0bd..b0444e4f3afdb5a8f9aa1388ea07d4fb685ddcb1 100644 --- a/oop-platform-chart/values.yaml +++ b/oop-platform-chart/values.yaml @@ -139,12 +139,12 @@ oeg: federationManagerHost: "http://federation-manager:8989/api/v1" # ==================================================================== -# Federation Manager — OWN NAMESPACE +# Federation Manager — in OOP namespace # ==================================================================== federationManager: enabled: true global: - namespace: federation-manager + namespace: oop # --- MongoDB FOR FM (THIS WAS MISSING!) mongodb: @@ -153,6 +153,7 @@ federationManager: image: repository: mongo tag: latest + pullPolicy: IfNotPresent service: type: ClusterIP port: 27017 @@ -170,6 +171,8 @@ federationManager: admin: username: admin password: admin + image: + pullPolicy: IfNotPresent service: nodePort: "" @@ -183,6 +186,12 @@ federationManager: port: "27017" partner_op: role: originating_op + image: + pullPolicy: IfNotPresent + + federationManager: + image: + pullPolicy: IfNotPresent openvpn: enabled: false diff --git a/scripts/helm-deploy.sh b/scripts/helm-deploy.sh index 0582f8e2007e4a11f4f1a706d9c0f54227a173bb..2d43f5d0a0a7fc741172df80aa363ba674041492 100755 --- a/scripts/helm-deploy.sh +++ b/scripts/helm-deploy.sh @@ -12,7 +12,6 @@ REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" CHART_DIR="$REPO_ROOT/oop-platform-chart" OOP_NS="oop" -FM_NS="federation-manager" OOP_RELEASE="oop-platform" echo "OOP Platform — Helm Deploy" @@ -44,12 +43,7 @@ helm upgrade --install $OOP_RELEASE "$CHART_DIR" \ --create-namespace \ -f "$REPO_ROOT/environments/kind/values.yaml" \ --set srm.srmcontroller.env.kubernetesMasterToken="$TOKEN" \ - --set federationManager.enabled=false - -helm upgrade --install federation-manager "$CHART_DIR/charts/federation-manager" \ - -n $FM_NS \ - --create-namespace \ - -f "$REPO_ROOT/environments/kind/values.fm.yaml" + --set federationManager.enabled=true echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" @@ -66,9 +60,7 @@ echo " Federation Manager: http://localhost:30989" echo "" echo "Useful commands:" echo " kubectl get pods -n $OOP_NS" -echo " kubectl get pods -n $FM_NS" echo " kubectl logs -f deployment/srmcontroller -n $OOP_NS" -echo " helm uninstall $OOP_RELEASE -n $OOP_NS # Remove SRM + OEG" -echo " helm uninstall federation-manager -n $FM_NS # Remove Federation Manager" +echo " helm uninstall $OOP_RELEASE -n $OOP_NS # Remove all components" echo " kind delete cluster --name oop-cluster # Tear down cluster" echo "" diff --git a/scripts/kind-bootstrap.sh b/scripts/kind-bootstrap.sh index dcabbd9ecf69a1a5ae292e8a9dd0f7272ec445cc..72f5743dbc5f362a945f974782dd9313ddde7286 100755 --- a/scripts/kind-bootstrap.sh +++ b/scripts/kind-bootstrap.sh @@ -69,7 +69,6 @@ echo "Step 4/4: Waiting for cluster and setting up namespaces + RBAC..." kubectl wait --for=condition=Ready nodes --all --timeout=120s kubectl create namespace $OOP_NS 2>/dev/null || echo " Namespace $OOP_NS already exists" -kubectl create namespace $FM_NS 2>/dev/null || echo " Namespace $FM_NS already exists" kubectl create serviceaccount oop-user -n $OOP_NS 2>/dev/null || echo " Service account already exists" kubectl create clusterrolebinding oop-user-binding \