Loading environments/kind/values.yaml +7 −0 Changes for environments/kind/values.yaml: 7 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -73,6 +73,13 @@ oeg: tag: "1.1" pullPolicy: IfNotPresent federation-manager: federationManager: service: type: NodePort nodePort: 30989 allowInsecurePartnerEndpoints: true postgresql: persistence: storageClass: standard Loading oop-platform-chart/charts/federation-manager/Chart.yaml +1 −2 Changes for oop-platform-chart/charts/federation-manager/Chart.yaml: 1 added line, 2 removed lines. Original line number Diff line number Diff line apiVersion: v2 name: federation-manager description: Federation Manager with Keycloak for Open Operator Platform description: Federation Manager 2.0 (GSMA OPG.04 E/WBI) type: application version: 1.0.0 appVersion: "0.0.1" keywords: - federation-manager - keycloak - oop - federation Loading oop-platform-chart/charts/federation-manager/templates/_helpers.tpl +75 −0 Changes for oop-platform-chart/charts/federation-manager/templates/_helpers.tpl: 75 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -81,3 +81,78 @@ Namespace {{- define "federation-manager.namespace" -}} {{- .Release.Namespace }} {{- end }} {{- define "federation-manager.scheme" -}} {{- dig "scheme" "http" (.Values.global | default dict) -}} {{- end }} {{- define "federation-manager.publicHost" -}} {{- $host := dig "publicHost" "" (.Values.global | default dict) -}} {{- if not $host -}} {{- $nodes := lookup "v1" "Node" "" "" -}} {{- if and $nodes $nodes.items -}} {{- $addresses := (index $nodes.items 0).status.addresses -}} {{- range $addresses }}{{ if and (not $host) (eq .type "ExternalIP") }}{{ $host = .address }}{{ end }}{{ end -}} {{- range $addresses }}{{ if and (not $host) (eq .type "InternalIP") }}{{ $host = .address }}{{ end }}{{ end -}} {{- end -}} {{- end -}} {{- $host | default "localhost" -}} {{- end }} {{- define "federation-manager.publicUrl" -}} {{- $c := .Values.federationManager -}} {{- if $c.publicUrl -}} {{- trimSuffix "/" $c.publicUrl -}} {{- else if and (eq $c.service.type "NodePort") $c.service.nodePort -}} {{- printf "%s://%s:%v" (include "federation-manager.scheme" .) (include "federation-manager.publicHost" .) $c.service.nodePort -}} {{- else -}} {{- printf "%s://%s" (include "federation-manager.scheme" .) (include "federation-manager.publicHost" .) -}} {{- end -}} {{- end }} {{- define "federation-manager.partnerStatusLink" -}} {{- .Values.federationManager.partnerStatusLink | default (printf "%s/operatorplatform/federation/v1/callbacks/partner-status" (include "federation-manager.publicUrl" .)) -}} {{- end }} {{- define "federation-manager.instanceStatusLink" -}} {{- .Values.federationManager.instanceStatusLink | default (printf "%s/operatorplatform/federation/v1/callbacks/instance-status" (include "federation-manager.publicUrl" .)) -}} {{- end }} {{- define "federation-manager.keycloak.publicUrl" -}} {{- $port := dig "nodePorts" "keycloak" 30081 (.Values.global | default dict) -}} {{- printf "%s://%s:%v" (include "federation-manager.scheme" .) (include "federation-manager.publicHost" .) $port -}} {{- end }} {{- define "federation-manager.keycloak.internalUrl" -}} {{- $kc := (.Values.global | default dict).keycloak | default dict -}} {{- printf "http://%s:%v" ($kc.host | default "keycloak") ($kc.port | default 8080) -}} {{- end }} {{- define "federation-manager.keycloakIssuer" -}} {{- $kc := .Values.federationManager.keycloak -}} {{- if $kc.issuer -}} {{- trimSuffix "/" $kc.issuer -}} {{- else -}} {{- printf "%s/realms/%s" (include "federation-manager.keycloak.publicUrl" .) $kc.realm -}} {{- end -}} {{- end }} {{- define "federation-manager.keycloakJwksUrl" -}} {{- printf "%s/realms/%s/protocol/openid-connect/certs" (include "federation-manager.keycloak.internalUrl" .) .Values.federationManager.keycloak.realm -}} {{- end }} {{- define "federation-manager.db.host" -}} {{- .Values.federationManager.database.host | default (dig "postgresql" "host" "postgres" (.Values.global | default dict)) -}} {{- end }} {{- define "federation-manager.db.port" -}} {{- .Values.federationManager.database.port | default (dig "postgresql" "port" 5432 (.Values.global | default dict)) -}} {{- end }} {{- define "federation-manager.db.secretName" -}} {{- .Values.federationManager.database.existingSecret | default (dig "postgresql" "secretName" "postgres-credentials" (.Values.global | default dict)) -}} {{- end }} {{- define "federation-manager.db.waitImage" -}} {{- dig "images" "postgres" "postgres:18.6-alpine" (.Values.global | default dict) -}} {{- end }} oop-platform-chart/charts/federation-manager/templates/federation-manager-deployment.yaml +101 −11 Changes for oop-platform-chart/charts/federation-manager/templates/federation-manager-deployment.yaml: 101 added lines, 11 removed lines. Original line number Diff line number Diff line {{- if and .Values.federationManager.enabled (include "federation-manager.authEnabled" .) }} {{- $c := .Values.federationManager }} apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Values.federationManager.name }} name: {{ $c.name }} namespace: {{ include "federation-manager.namespace" . }} labels: {{- include "federation-manager.fm.labels" . | nindent 4 }} Loading @@ -11,7 +12,7 @@ metadata: {{- toYaml . | nindent 4 }} {{- end }} spec: replicas: {{ .Values.federationManager.replicaCount }} replicas: {{ $c.replicaCount }} selector: matchLabels: {{- include "federation-manager.fm.selectorLabels" . | nindent 6 }} Loading @@ -19,23 +20,112 @@ spec: metadata: labels: {{- include "federation-manager.fm.selectorLabels" . | nindent 8 }} postgres-client: "true" {{- with .Values.commonAnnotations }} annotations: {{- toYaml . | nindent 8 }} {{- end }} spec: {{- with .Values.federationManager.imagePullSecrets }} {{- with $c.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} initContainers: - name: wait-for-database image: {{ include "federation-manager.db.waitImage" . | quote }} imagePullPolicy: IfNotPresent env: - name: PGPASSWORD valueFrom: secretKeyRef: name: {{ include "federation-manager.db.secretName" . }} key: {{ $c.database.passwordKey }} command: ["/bin/sh", "-c"] args: - | until psql -h {{ include "federation-manager.db.host" . }} -p {{ include "federation-manager.db.port" . }} -U {{ $c.database.user }} -d {{ $c.database.name }} -c 'SELECT 1' >/dev/null 2>&1; do echo "waiting for database {{ $c.database.name }} at {{ include "federation-manager.db.host" . }}:{{ include "federation-manager.db.port" . }}" sleep 3 done containers: - name: federation-manager image: "{{ .Values.federationManager.image.repository }}:{{ .Values.federationManager.image.tag }}" imagePullPolicy: {{ .Values.federationManager.image.pullPolicy }} env: - name: NATS_URL value: {{ .Values.federationManager.config.nats.url | quote }} image: "{{ $c.image.repository }}:{{ $c.image.tag }}" imagePullPolicy: {{ $c.image.pullPolicy }} securityContext: runAsNonRoot: true runAsUser: 10001 ports: - name: http containerPort: {{ .Values.federationManager.service.targetPort }} containerPort: {{ $c.service.targetPort }} protocol: TCP env: - name: DB_PASSWORD valueFrom: secretKeyRef: name: {{ include "federation-manager.db.secretName" . }} key: {{ $c.database.passwordKey }} - name: FM_POSTGRES_URL value: "postgresql+asyncpg://{{ $c.database.user }}:$(DB_PASSWORD)@{{ include "federation-manager.db.host" . }}:{{ include "federation-manager.db.port" . }}/{{ $c.database.name }}" - name: FM_POSTGRES_ECHO value: {{ $c.database.echo | toString | quote }} - name: FM_NATS_URL value: {{ $c.nats.url | quote }} - name: FM_EVENT_CONSUMER_DURABLE value: {{ $c.nats.eventConsumerDurable | quote }} - name: FM_SRM_INTERNAL_URL value: {{ $c.srm.url | quote }} - name: FM_KEYCLOAK_ISSUER value: {{ include "federation-manager.keycloakIssuer" . | quote }} - name: FM_KEYCLOAK_JWKS_URL value: {{ include "federation-manager.keycloakJwksUrl" . | quote }} - name: FM_FEDERATION_ID value: {{ $c.identity.federationId | quote }} - name: FM_COUNTRY_CODE value: {{ $c.identity.countryCode | quote }} - name: FM_MCC value: {{ $c.identity.mcc | toString | quote }} - name: FM_MNCS value: {{ $c.identity.mncs | toJson | quote }} - name: FM_PLATFORM_CAPS value: {{ $c.identity.platformCaps | toJson | quote }} - name: FM_PARTNER_STATUS_LINK value: {{ include "federation-manager.partnerStatusLink" . | quote }} - name: FM_INSTANCE_STATUS_LINK value: {{ include "federation-manager.instanceStatusLink" . | quote }} {{- with $c.availZoneNotifLink }} - name: FM_AVAIL_ZONE_NOTIF_LINK value: {{ . | quote }} {{- end }} - name: FM_BOOTSTRAP_FEDERATION value: {{ $c.bootstrapFederation | toString | quote }} - name: FM_ALLOW_INSECURE_PARTNER_ENDPOINTS value: {{ $c.allowInsecurePartnerEndpoints | toString | quote }} - name: FM_LOG_LEVEL value: {{ $c.logLevel | quote }} livenessProbe: httpGet: path: /healthz port: http periodSeconds: 10 readinessProbe: httpGet: path: /readyz port: http periodSeconds: 5 {{- if $c.partnerSecrets.existingSecret }} volumeMounts: - name: partner-secrets mountPath: {{ $c.partnerSecrets.mountPath }} readOnly: true {{- end }} {{- with $c.resources }} resources: {{- toYaml .Values.federationManager.resources | nindent 12 }} {{- toYaml . | nindent 12 }} {{- end }} {{- if $c.partnerSecrets.existingSecret }} volumes: - name: partner-secrets secret: secretName: {{ $c.partnerSecrets.existingSecret }} {{- end }} {{- end }} oop-platform-chart/charts/federation-manager/templates/federation-manager-service.yaml +7 −6 Changes for oop-platform-chart/charts/federation-manager/templates/federation-manager-service.yaml: 7 added lines, 6 removed lines. Original line number Diff line number Diff line {{- if and .Values.federationManager.enabled (include "federation-manager.authEnabled" .) }} {{- $s := .Values.federationManager.service }} apiVersion: v1 kind: Service metadata: name: {{ .Values.federationManager.service.name }} name: {{ $s.name }} namespace: {{ include "federation-manager.namespace" . }} labels: {{- include "federation-manager.fm.labels" . | nindent 4 }} Loading @@ -11,14 +12,14 @@ metadata: {{- toYaml . | nindent 4 }} {{- end }} spec: type: {{ .Values.federationManager.service.type }} type: {{ $s.type }} ports: - name: http protocol: TCP port: {{ .Values.federationManager.service.port }} targetPort: {{ .Values.federationManager.service.targetPort }} {{- if and (eq .Values.federationManager.service.type "NodePort") .Values.federationManager.service.nodePort }} nodePort: {{ .Values.federationManager.service.nodePort }} port: {{ $s.port }} targetPort: {{ $s.targetPort }} {{- if and (eq $s.type "NodePort") $s.nodePort }} nodePort: {{ $s.nodePort }} {{- end }} selector: {{- include "federation-manager.fm.selectorLabels" . | nindent 4 }} Loading Loading
environments/kind/values.yaml +7 −0 Changes for environments/kind/values.yaml: 7 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -73,6 +73,13 @@ oeg: tag: "1.1" pullPolicy: IfNotPresent federation-manager: federationManager: service: type: NodePort nodePort: 30989 allowInsecurePartnerEndpoints: true postgresql: persistence: storageClass: standard Loading
oop-platform-chart/charts/federation-manager/Chart.yaml +1 −2 Changes for oop-platform-chart/charts/federation-manager/Chart.yaml: 1 added line, 2 removed lines. Original line number Diff line number Diff line apiVersion: v2 name: federation-manager description: Federation Manager with Keycloak for Open Operator Platform description: Federation Manager 2.0 (GSMA OPG.04 E/WBI) type: application version: 1.0.0 appVersion: "0.0.1" keywords: - federation-manager - keycloak - oop - federation Loading
oop-platform-chart/charts/federation-manager/templates/_helpers.tpl +75 −0 Changes for oop-platform-chart/charts/federation-manager/templates/_helpers.tpl: 75 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -81,3 +81,78 @@ Namespace {{- define "federation-manager.namespace" -}} {{- .Release.Namespace }} {{- end }} {{- define "federation-manager.scheme" -}} {{- dig "scheme" "http" (.Values.global | default dict) -}} {{- end }} {{- define "federation-manager.publicHost" -}} {{- $host := dig "publicHost" "" (.Values.global | default dict) -}} {{- if not $host -}} {{- $nodes := lookup "v1" "Node" "" "" -}} {{- if and $nodes $nodes.items -}} {{- $addresses := (index $nodes.items 0).status.addresses -}} {{- range $addresses }}{{ if and (not $host) (eq .type "ExternalIP") }}{{ $host = .address }}{{ end }}{{ end -}} {{- range $addresses }}{{ if and (not $host) (eq .type "InternalIP") }}{{ $host = .address }}{{ end }}{{ end -}} {{- end -}} {{- end -}} {{- $host | default "localhost" -}} {{- end }} {{- define "federation-manager.publicUrl" -}} {{- $c := .Values.federationManager -}} {{- if $c.publicUrl -}} {{- trimSuffix "/" $c.publicUrl -}} {{- else if and (eq $c.service.type "NodePort") $c.service.nodePort -}} {{- printf "%s://%s:%v" (include "federation-manager.scheme" .) (include "federation-manager.publicHost" .) $c.service.nodePort -}} {{- else -}} {{- printf "%s://%s" (include "federation-manager.scheme" .) (include "federation-manager.publicHost" .) -}} {{- end -}} {{- end }} {{- define "federation-manager.partnerStatusLink" -}} {{- .Values.federationManager.partnerStatusLink | default (printf "%s/operatorplatform/federation/v1/callbacks/partner-status" (include "federation-manager.publicUrl" .)) -}} {{- end }} {{- define "federation-manager.instanceStatusLink" -}} {{- .Values.federationManager.instanceStatusLink | default (printf "%s/operatorplatform/federation/v1/callbacks/instance-status" (include "federation-manager.publicUrl" .)) -}} {{- end }} {{- define "federation-manager.keycloak.publicUrl" -}} {{- $port := dig "nodePorts" "keycloak" 30081 (.Values.global | default dict) -}} {{- printf "%s://%s:%v" (include "federation-manager.scheme" .) (include "federation-manager.publicHost" .) $port -}} {{- end }} {{- define "federation-manager.keycloak.internalUrl" -}} {{- $kc := (.Values.global | default dict).keycloak | default dict -}} {{- printf "http://%s:%v" ($kc.host | default "keycloak") ($kc.port | default 8080) -}} {{- end }} {{- define "federation-manager.keycloakIssuer" -}} {{- $kc := .Values.federationManager.keycloak -}} {{- if $kc.issuer -}} {{- trimSuffix "/" $kc.issuer -}} {{- else -}} {{- printf "%s/realms/%s" (include "federation-manager.keycloak.publicUrl" .) $kc.realm -}} {{- end -}} {{- end }} {{- define "federation-manager.keycloakJwksUrl" -}} {{- printf "%s/realms/%s/protocol/openid-connect/certs" (include "federation-manager.keycloak.internalUrl" .) .Values.federationManager.keycloak.realm -}} {{- end }} {{- define "federation-manager.db.host" -}} {{- .Values.federationManager.database.host | default (dig "postgresql" "host" "postgres" (.Values.global | default dict)) -}} {{- end }} {{- define "federation-manager.db.port" -}} {{- .Values.federationManager.database.port | default (dig "postgresql" "port" 5432 (.Values.global | default dict)) -}} {{- end }} {{- define "federation-manager.db.secretName" -}} {{- .Values.federationManager.database.existingSecret | default (dig "postgresql" "secretName" "postgres-credentials" (.Values.global | default dict)) -}} {{- end }} {{- define "federation-manager.db.waitImage" -}} {{- dig "images" "postgres" "postgres:18.6-alpine" (.Values.global | default dict) -}} {{- end }}
oop-platform-chart/charts/federation-manager/templates/federation-manager-deployment.yaml +101 −11 Changes for oop-platform-chart/charts/federation-manager/templates/federation-manager-deployment.yaml: 101 added lines, 11 removed lines. Original line number Diff line number Diff line {{- if and .Values.federationManager.enabled (include "federation-manager.authEnabled" .) }} {{- $c := .Values.federationManager }} apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Values.federationManager.name }} name: {{ $c.name }} namespace: {{ include "federation-manager.namespace" . }} labels: {{- include "federation-manager.fm.labels" . | nindent 4 }} Loading @@ -11,7 +12,7 @@ metadata: {{- toYaml . | nindent 4 }} {{- end }} spec: replicas: {{ .Values.federationManager.replicaCount }} replicas: {{ $c.replicaCount }} selector: matchLabels: {{- include "federation-manager.fm.selectorLabels" . | nindent 6 }} Loading @@ -19,23 +20,112 @@ spec: metadata: labels: {{- include "federation-manager.fm.selectorLabels" . | nindent 8 }} postgres-client: "true" {{- with .Values.commonAnnotations }} annotations: {{- toYaml . | nindent 8 }} {{- end }} spec: {{- with .Values.federationManager.imagePullSecrets }} {{- with $c.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} initContainers: - name: wait-for-database image: {{ include "federation-manager.db.waitImage" . | quote }} imagePullPolicy: IfNotPresent env: - name: PGPASSWORD valueFrom: secretKeyRef: name: {{ include "federation-manager.db.secretName" . }} key: {{ $c.database.passwordKey }} command: ["/bin/sh", "-c"] args: - | until psql -h {{ include "federation-manager.db.host" . }} -p {{ include "federation-manager.db.port" . }} -U {{ $c.database.user }} -d {{ $c.database.name }} -c 'SELECT 1' >/dev/null 2>&1; do echo "waiting for database {{ $c.database.name }} at {{ include "federation-manager.db.host" . }}:{{ include "federation-manager.db.port" . }}" sleep 3 done containers: - name: federation-manager image: "{{ .Values.federationManager.image.repository }}:{{ .Values.federationManager.image.tag }}" imagePullPolicy: {{ .Values.federationManager.image.pullPolicy }} env: - name: NATS_URL value: {{ .Values.federationManager.config.nats.url | quote }} image: "{{ $c.image.repository }}:{{ $c.image.tag }}" imagePullPolicy: {{ $c.image.pullPolicy }} securityContext: runAsNonRoot: true runAsUser: 10001 ports: - name: http containerPort: {{ .Values.federationManager.service.targetPort }} containerPort: {{ $c.service.targetPort }} protocol: TCP env: - name: DB_PASSWORD valueFrom: secretKeyRef: name: {{ include "federation-manager.db.secretName" . }} key: {{ $c.database.passwordKey }} - name: FM_POSTGRES_URL value: "postgresql+asyncpg://{{ $c.database.user }}:$(DB_PASSWORD)@{{ include "federation-manager.db.host" . }}:{{ include "federation-manager.db.port" . }}/{{ $c.database.name }}" - name: FM_POSTGRES_ECHO value: {{ $c.database.echo | toString | quote }} - name: FM_NATS_URL value: {{ $c.nats.url | quote }} - name: FM_EVENT_CONSUMER_DURABLE value: {{ $c.nats.eventConsumerDurable | quote }} - name: FM_SRM_INTERNAL_URL value: {{ $c.srm.url | quote }} - name: FM_KEYCLOAK_ISSUER value: {{ include "federation-manager.keycloakIssuer" . | quote }} - name: FM_KEYCLOAK_JWKS_URL value: {{ include "federation-manager.keycloakJwksUrl" . | quote }} - name: FM_FEDERATION_ID value: {{ $c.identity.federationId | quote }} - name: FM_COUNTRY_CODE value: {{ $c.identity.countryCode | quote }} - name: FM_MCC value: {{ $c.identity.mcc | toString | quote }} - name: FM_MNCS value: {{ $c.identity.mncs | toJson | quote }} - name: FM_PLATFORM_CAPS value: {{ $c.identity.platformCaps | toJson | quote }} - name: FM_PARTNER_STATUS_LINK value: {{ include "federation-manager.partnerStatusLink" . | quote }} - name: FM_INSTANCE_STATUS_LINK value: {{ include "federation-manager.instanceStatusLink" . | quote }} {{- with $c.availZoneNotifLink }} - name: FM_AVAIL_ZONE_NOTIF_LINK value: {{ . | quote }} {{- end }} - name: FM_BOOTSTRAP_FEDERATION value: {{ $c.bootstrapFederation | toString | quote }} - name: FM_ALLOW_INSECURE_PARTNER_ENDPOINTS value: {{ $c.allowInsecurePartnerEndpoints | toString | quote }} - name: FM_LOG_LEVEL value: {{ $c.logLevel | quote }} livenessProbe: httpGet: path: /healthz port: http periodSeconds: 10 readinessProbe: httpGet: path: /readyz port: http periodSeconds: 5 {{- if $c.partnerSecrets.existingSecret }} volumeMounts: - name: partner-secrets mountPath: {{ $c.partnerSecrets.mountPath }} readOnly: true {{- end }} {{- with $c.resources }} resources: {{- toYaml .Values.federationManager.resources | nindent 12 }} {{- toYaml . | nindent 12 }} {{- end }} {{- if $c.partnerSecrets.existingSecret }} volumes: - name: partner-secrets secret: secretName: {{ $c.partnerSecrets.existingSecret }} {{- end }} {{- end }}
oop-platform-chart/charts/federation-manager/templates/federation-manager-service.yaml +7 −6 Changes for oop-platform-chart/charts/federation-manager/templates/federation-manager-service.yaml: 7 added lines, 6 removed lines. Original line number Diff line number Diff line {{- if and .Values.federationManager.enabled (include "federation-manager.authEnabled" .) }} {{- $s := .Values.federationManager.service }} apiVersion: v1 kind: Service metadata: name: {{ .Values.federationManager.service.name }} name: {{ $s.name }} namespace: {{ include "federation-manager.namespace" . }} labels: {{- include "federation-manager.fm.labels" . | nindent 4 }} Loading @@ -11,14 +12,14 @@ metadata: {{- toYaml . | nindent 4 }} {{- end }} spec: type: {{ .Values.federationManager.service.type }} type: {{ $s.type }} ports: - name: http protocol: TCP port: {{ .Values.federationManager.service.port }} targetPort: {{ .Values.federationManager.service.targetPort }} {{- if and (eq .Values.federationManager.service.type "NodePort") .Values.federationManager.service.nodePort }} nodePort: {{ .Values.federationManager.service.nodePort }} port: {{ $s.port }} targetPort: {{ $s.targetPort }} {{- if and (eq $s.type "NodePort") $s.nodePort }} nodePort: {{ $s.nodePort }} {{- end }} selector: {{- include "federation-manager.fm.selectorLabels" . | nindent 4 }} Loading