blob: df86c62d6ccf9671b90c5339e44e799cf27916ca [file] [log] [blame] [edit]
# Copyright (c) 2022 VEXXHOST, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
_keystone_helm_values:
endpoints: "{{ openstack_helm_endpoints }}"
images:
tags: "{{ atmosphere_images | vexxhost.atmosphere.openstack_helm_image_tags('keystone') }}"
pod:
replicas:
api: 3
mounts:
keystone_api:
keystone_api:
volumeMounts: "{{ keystone_domains | vexxhost.atmosphere.keystone_domains_to_mounts + [{'name': 'ca-certificates', 'mountPath': '/etc/ssl/certs/ca-certificates.crt', 'readOnly': true}] }}"
volumes:
- name: keystone-openid-metadata
configMap:
name: keystone-openid-metadata
- name: ca-certificates
hostPath:
path: "{{ defaults_ca_certificates_path }}"
conf:
keystone:
DEFAULT:
log_config_append: null
auth:
methods: password,token,openid,application_credential
cors:
allowed_origins: "*"
database:
connection_recycle_time: 600
max_overflow: 50
max_pool_size: 5
pool_timeout: 30
openid:
remote_id_attribute: HTTP_OIDC_ISS
federation:
# TODO(mnaser): Lookup using openstack_helm_endpoints
trusted_dashboard:
type: multistring
values:
- "http://localhost:9990/auth/websso/"
- "https://{{ openstack_helm_endpoints_horizon_api_host }}/auth/websso/"
oslo_messaging_notifications:
driver: noop
wsgi_keystone: |
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
Listen 0.0.0.0:5000
TransferLog /dev/stdout
ErrorLog /dev/stderr
<VirtualHost *:5000>
# WSGI
WSGIDaemonProcess keystone-public processes=4 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /var/www/cgi-bin/keystone/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
# NOTE(mnaser): This is to by-pass large header limits for large tokens
LimitRequestFieldSize 16384
# OIDC
OIDCClaimPrefix "OIDC-"
OIDCMetadataDir /var/lib/apache2/oidc
OIDCSSLValidateServer "{{ keystone_oidc_ssl_validate_server }}"
OIDCCryptoPassphrase {{ keystone_oidc_crypto_passphrase }}
OIDCRedirectURI {{ keystone_oidc_redirect_uri }}
OIDCRedirectURLsAllowed {{ keystone_oidc_redirect_urls_allowed | join(' ') }}
# NOTE(mnaser): These are Atmosphere specific settings.
OIDCSessionType client-cookie:store_id_token
OIDCXForwardedHeaders X-Forwarded-Host X-Forwarded-Proto
<Location /v3/auth/OS-FEDERATION/identity_providers/redirect>
AuthType openid-connect
Require valid-user
</Location>
<Location /v3/auth/OS-FEDERATION/websso/openid>
Require valid-user
AuthType openid-connect
</Location>
{% for domain in keystone_domains %}
<Location /v3/OS-FEDERATION/identity_providers/{{ domain.name }}/protocols/openid/auth>
Require valid-user
AuthType oauth20
</Location>
<Location /v3/auth/OS-FEDERATION/identity_providers/{{ domain.name }}/protocols/openid/websso>
Require valid-user
AuthType openid-connect
OIDCDiscoverURL {{ keystone_oidc_redirect_uri }}?iss={{ domain | vexxhost.atmosphere.urlencoded_issuer_from_domain }}
</Location>
{% endfor %}
</VirtualHost>
ks_domains: "{{ keystone_domains | vexxhost.atmosphere.to_ks_domains }}"
manifests:
job_credential_cleanup: false
ingress_api: false
service_ingress_api: false