
This change adds SAML2 support through the use of a new keystone SAML integrator charm (keystone-saml-k8s). Needed changes have also been made in the keystone charm to make use of the new relation. A new option has also been added to keystone-k8s through which a secret can be specified which should contain the x509 certificate an the corresponding key from which it was derived, used to generate the keystone SP metadata file. Change-Id: Id9b6ab2a51891ac378a2cb406dbe3a456bc24fc4 Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
241 lines
6.0 KiB
YAML
241 lines
6.0 KiB
YAML
type: charm
|
|
name: keystone-k8s
|
|
summary: OpenStack identity service
|
|
description: |
|
|
Keystone is an OpenStack project that provides Identity, Token, Catalog and
|
|
Policy services for use specifically by projects in the OpenStack family. It
|
|
implements OpenStack's Identity API.
|
|
assumes:
|
|
- k8s-api
|
|
- juju >= 3.1
|
|
links:
|
|
source:
|
|
- https://opendev.org/openstack/charm-keystone-k8s
|
|
issues:
|
|
- https://bugs.launchpad.net/charm-keystone-k8s
|
|
|
|
base: ubuntu@24.04
|
|
platforms:
|
|
amd64:
|
|
|
|
config:
|
|
options:
|
|
debug:
|
|
default: false
|
|
description: Enable debug logging.
|
|
type: boolean
|
|
log-level:
|
|
default: WARNING
|
|
type: string
|
|
description: Log level (WARNING, INFO, DEBUG, ERROR)
|
|
region:
|
|
default: RegionOne
|
|
description: Name of the OpenStack region
|
|
type: string
|
|
catalog-cache-expiration:
|
|
type: int
|
|
default: 60
|
|
description: Amount of time (in seconds) the catalog should be cached for.
|
|
dogpile-cache-expiration:
|
|
type: int
|
|
default: 60
|
|
description: |
|
|
Amount of time (in seconds) to cache items in the dogpile.cache. This only applies
|
|
to cached methods that do not have an explicitly defined cache expiration time.
|
|
identity-backend:
|
|
type: string
|
|
default: sql
|
|
description: |
|
|
Keystone identity backend, valid options are sql and pam
|
|
enable-telemetry-notifications:
|
|
type: boolean
|
|
default: false
|
|
description: Enable notifications to send to telemetry.
|
|
saml-x509-keypair:
|
|
type: secret
|
|
default: !!null ""
|
|
description: |
|
|
The SAML2 x509 certificates. This certificate is used by SAML2 for two purposes:
|
|
* Sign messages between the SP and the IDP
|
|
* Encrypt messages. This is rarely used as in the majority of cases, SAML2 traffic is
|
|
sent over https.
|
|
This certificate will be part of the SAML2 metadata.
|
|
The secret is expected to have two keys:
|
|
|
|
{
|
|
"certificate": "contents of the certificate",
|
|
"key": "contents of the key"
|
|
}
|
|
|
|
You can upload the secrets by running:
|
|
|
|
juju add-secret saml-secret \
|
|
certificate#file=/path/to/cert.pem \
|
|
key#file=/path/to/corresponding/key
|
|
juju grant-secret saml-secret keystone
|
|
|
|
actions:
|
|
get-admin-password:
|
|
description: Get the password for the Keystone Admin user
|
|
get-admin-account:
|
|
description: Get full access details for the Keystone Admin user
|
|
get-service-account:
|
|
description: Create/get details for a new/existing service account.
|
|
params:
|
|
username:
|
|
type: string
|
|
description: The username for the service account.
|
|
required:
|
|
- username
|
|
additionalProperties: false
|
|
regenerate-password:
|
|
description: |
|
|
Regenerate password for the given user.
|
|
params:
|
|
username:
|
|
type: string
|
|
description: The username for the account.
|
|
required:
|
|
- username
|
|
additionalProperties: false
|
|
add-ca-certs:
|
|
description: |
|
|
Add CA certs for transfer
|
|
params:
|
|
name:
|
|
type: string
|
|
description: Name of CA certs bundle
|
|
ca:
|
|
type: string
|
|
description: Base64 encoded CA certificate
|
|
chain:
|
|
type: string
|
|
description: Base64 encoded CA Chain
|
|
required:
|
|
- name
|
|
- ca
|
|
additionalProperties: false
|
|
remove-ca-certs:
|
|
description: |
|
|
Remove CA certs
|
|
params:
|
|
name:
|
|
type: string
|
|
description: Name of CA certs bundle
|
|
required:
|
|
- name
|
|
additionalProperties: false
|
|
list-ca-certs:
|
|
description: |
|
|
List CA certs uploaded for transfer.
|
|
Certificate names with `.` will be replace with `-`.
|
|
|
|
containers:
|
|
keystone:
|
|
resource: keystone-image
|
|
mounts:
|
|
- storage: fernet-keys
|
|
location: /etc/keystone/fernet-keys/
|
|
- storage: credential-keys
|
|
location: /etc/keystone/credential-keys/
|
|
|
|
resources:
|
|
keystone-image:
|
|
type: oci-image
|
|
description: OCI image for OpenStack Keystone
|
|
upstream-source: ghcr.io/canonical/keystone:2025.1
|
|
|
|
storage:
|
|
fernet-keys:
|
|
type: filesystem
|
|
description: |
|
|
Persistent storage for the location of fernet keys
|
|
minimum-size: 5M
|
|
credential-keys:
|
|
type: filesystem
|
|
description: |
|
|
Persistent storage for the location of credential keys
|
|
minimum-size: 5M
|
|
|
|
requires:
|
|
database:
|
|
interface: mysql_client
|
|
limit: 1
|
|
ingress-internal:
|
|
interface: ingress
|
|
limit: 1
|
|
ingress-public:
|
|
interface: ingress
|
|
optional: true
|
|
limit: 1
|
|
amqp:
|
|
interface: rabbitmq
|
|
optional: true
|
|
domain-config:
|
|
interface: keystone-domain-config
|
|
optional: true
|
|
logging:
|
|
interface: loki_push_api
|
|
optional: true
|
|
tracing:
|
|
interface: tracing
|
|
optional: true
|
|
limit: 1
|
|
oauth:
|
|
interface: oauth
|
|
optional: true
|
|
receive-ca-cert:
|
|
interface: certificate_transfer
|
|
optional: true
|
|
trusted-dashboard:
|
|
interface: trusted-dashboard
|
|
optional: true
|
|
external-idp:
|
|
interface: external_provider
|
|
optional: true
|
|
keystone-saml:
|
|
interface: keystone_saml
|
|
optional: true
|
|
|
|
provides:
|
|
identity-service:
|
|
interface: keystone
|
|
identity-credentials:
|
|
interface: keystone-credentials
|
|
identity-ops:
|
|
interface: keystone-resources
|
|
send-ca-cert:
|
|
interface: certificate_transfer
|
|
|
|
peers:
|
|
peers:
|
|
interface: keystone-peer
|
|
|
|
parts:
|
|
update-certificates:
|
|
plugin: nil
|
|
override-build: |
|
|
apt update
|
|
apt install -y ca-certificates
|
|
update-ca-certificates
|
|
charm:
|
|
after:
|
|
- update-certificates
|
|
build-packages:
|
|
- git
|
|
- libffi-dev
|
|
- libssl-dev
|
|
- pkg-config
|
|
- rustc-1.80
|
|
- cargo-1.80
|
|
charm-binary-python-packages:
|
|
- cryptography
|
|
- jsonschema
|
|
- pydantic
|
|
- jinja2
|
|
build-snaps: [astral-uv]
|
|
override-build: |
|
|
uv export --frozen --no-hashes --format=requirements-txt -o requirements.txt
|
|
craftctl default
|
|
charm-requirements: [requirements.txt]
|