@@ -134,16 +134,6 @@ pod:
134134 timeoutSeconds : 15
135135 mounts :
136136 keystone_api :
137- init_container :
138- - name : oidc-gen-providers
139- mountPath : /scripts
140- readOnly : true
141- - name : oidc-gen-output
142- mountPath : /srv/generated
143- # - name: custom-config-generator
144- # image: ghcr.io/rackerlabs/understack/keystone:2025.2
145- # command: ["python3", "/scripts/generate_configs.py"]
146- # volumeMounts:
147137 keystone_api :
148138 volumeMounts :
149139 - name : keystone-sso
@@ -152,24 +142,19 @@ pod:
152142 - name : oidc-secret
153143 mountPath : /etc/oidc-secret
154144 readOnly : true
155- - name : oidc-gen-providers
156- mountPath : /scripts
145+ - name : oidc-metadata
157146 readOnly : true
158- - name : oidc-gen-output
159- mountPath : /etc/mod_auth_openidc/metadata
160147 volumes :
161148 - name : keystone-sso
162149 secret :
163150 secretName : keystone-sso
164151 - name : oidc-secret
165152 secret :
166153 secretName : sso-passphrase
167- - name : oidc-gen-output
154+ - name : oidc-metadata
168155 configMap :
169- name : keystone-gen- oidc-metadata
156+ name : keystone-oidc-metadata
170157 defaultMode : 0555
171- - name : oidc-gen-providers
172- emptyDir : {}
173158 keystone_bootstrap :
174159 keystone_bootstrap :
175160 volumeMounts :
@@ -423,53 +408,12 @@ annotations:
423408 # relies on services to be up so it can remain post
424409 argocd.argoproj.io/hook-delete-policy : BeforeHookCreation
425410 argocd.argoproj.io/sync-options : Force=true
411+
426412extraObjects :
427413 - apiVersion : v1
428414 kind : ConfigMap
429415 metadata :
430- name : keystone-gen- oidc-metadata
416+ name : keystone-oidc-metadata
431417 namespace : openstack
432418 data :
433- generate_configs.py : |
434- #!/usr/bin/env python3
435-
436- import json
437- import ssl
438- import urllib.parse
439- import urllib.request
440- from pathlib import Path
441-
442- METADATA_DIR = Path("/srv/generated")
443- CLIENT_ID = "https://kubernetes.default.svc.cluster.local"
444-
445- CLUSTERS = {
446- "rax-dev-iad3-dev": "https://uc-iad.dev.undercloud.rackspace.net:6443",
447- "rax-dev-global": "https://uc-dev-global.k8s-api.pvceng.rax.io:443",
448- }
449-
450- METADATA_DIR.mkdir(parents=True, exist_ok=True)
451-
452- # Skip TLS verification — replace with a real SSLContext if you have the CA bundles
453- ctx = ssl._create_unverified_context()
454-
455- for site, issuer in CLUSTERS.items():
456- encoded = urllib.parse.quote(issuer, safe="")
457- base = METADATA_DIR / encoded
458-
459- print(f"Generating metadata for {site} ({issuer})")
460-
461- discovery_url = f"{issuer}/.well-known/openid-configuration"
462- with urllib.request.urlopen(discovery_url, context=ctx) as resp:
463- provider_metadata = json.load(resp)
464-
465- (base.with_suffix(".provider")).write_text(json.dumps(provider_metadata, indent=2))
466-
467- (base.with_suffix(".client")).write_text(json.dumps({
468- "client_id": CLIENT_ID,
469- "client_secret": "not-used",
470- }, indent=2))
471-
472- (base.with_suffix(".conf")).write_text(json.dumps({
473- "response_type": "id_token",
474- "scope": "openid",
475- }, indent=2))
419+ # Define your OIDC providers metadata in deploy repo
0 commit comments