OpenKeel: the sovereign French Cloud solution of the inherent group, with a European reach Discover inherent

Architecture

Skyline: the OpenKeel additions

The Skyline console of OpenKeel is upstream skyline-console plus five patches and one server extension: delegated identity per customer domain, single sign-on per domain, EC2 credentials, cost and carbon footprint at build time, a FinOps / GreenOps dashboard and the metrics of the VMs.

What OpenKeel adds to the console

Domain identity for managers

One Keystone domain per customer, administered by its managers

Learn more

OIDC per domain

Each domain brings its own OpenID Connect identity provider

Learn more

User acceptance

Users coming from the IdP wait for a role; managers grant it or pre-authorize them

Learn more

EC2 credentials

Access and secret keys for the EC2 API, for users and administrators

Learn more

Cost and carbon at build time

FinOps and GreenOps figures in the creation forms and the quota popup

Learn more

FinOps / GreenOps and Metrics

A dashboard of the project's costs and footprint, and the metrics of its VMs

Learn more

Domain identity for the managers of a domain

Keystone delegates user management per domain: a user with the manager role on a domain creates its users, groups and projects and gives them manager, member or reader, never admin and never outside the domain. OpenKeel gives each customer a domain of its own.

WhatHowStatus
One domain per customerThe OpenKeelCustomer resource (Kubernetes, cluster-scoped) declares the domain, its managers and its first projects; the keystone-customers controller keeps them in Keystone and repairs manual changes every 10 minutesDone
Managersmanager role on the domain, inherited by its projects so that Skyline accepts their login; initial password in a Secret, never reset by the controllerDone
Login<user>@<domain> in the console's user field (alice@acme)Done
Keystone rules in SkylineThe 204 keystone:* rules of Keystone 2026.2, checked with a domain-scoped manager persona (1,866 rules × 8 personas identical)Done
Domain menu in the project consoleDomain > Single Sign-On for users holding manager or admin on the domainDone
Users, groups and projects of the domain from SkylineThe console's Identity pages stay reserved to system administrators: a manager uses ok or the API with a domain-scoped tokenTo do

Deleting a customer: deletionPolicy: Retain disables the domain and keeps it; Delete removes it with its users, groups and projects. Details: openkeel-keystone/docs/CUSTOMERS.md.

A custom OpenID Connect provider per domain

Domain > Single Sign-On, Identity Provider tab: the manager connects the domain to the company's IdP (Keycloak, Entra ID, Okta…). The settings go to the domain's OpenKeelCustomer; the controller writes the identity provider, a mapping generated by OpenKeel (never written by the customer) and the openid protocol into Keystone.

SettingRole
EnabledTurns the domain's single sign-on on or off
Issuer URLThe IdP's OpenID Connect issuer; its discovery document must be reachable
Client ID, Client SecretThe console's client at the IdP; the secret is write-only (kept when left empty) and stored in a Kubernetes Secret
User Name ClaimThe claim that names the user in the domain (default preferred_username)
Groups Claim, Group MappingIdP groups turned into memberships of the domain's groups (cloud-admins = admins), groups created when missing
Button labelText of the login button
Redirect URIShown by the page, to register in the IdP's client

Users created through the IdP are shadow users of the customer's domain only. Not done yet: one console host per customer, so the login page still offers the IdPs of Skyline's configuration.

Accepting the users of the domain

Domain > Single Sign-On, Users tab: nobody gets into the domain's projects without a manager's decision.

  1. 1

    First login

    A user authenticated by the IdP is created in the domain with no role: shown Pending

  2. 2

    Decision

    The manager chooses a role: member, manager (on the domain, inherited by its projects) or none

  3. 3

    Refusal

    none removes the roles and disables the user: Keystone revokes its tokens

  4. 4

    Pre-authorization

    Add User: identifier at the IdP, role and e-mail before the first login, which then finds the user and its role

EC2 credentials

The access and secret keys of OpenKeel's EC2 API (AWS CLI, boto3, Terraform), managed from the console under Keystone's ec2_* policies.

Every user's, for the administrator

Identity > EC2 Credentials: the credentials of every user with user and project names; created for a chosen user and project, or deleted.

The user's own

User menu, next to Application Credentials: the user creates credentials for one of their projects.

  • Secret key masked, with a copy button
  • A new credential is offered as an AWS CLI credentials file

Cost and carbon footprint when building a VM

The creation forms quote what is being built through openkeel-pricing (POST /v1/quotes), with the unit rates of the project's OpenKeelTenant: cost per month (€) and carbon footprint per year (kg CO₂e).

WhereWhat is shown
Instance formFlavor, count, root and data volumes (the flavor's root disk is left out when the instance boots from a volume)
Volume formSize and count
DNS zone, IPsec site connectionThe yearly cost and footprint of the zone or the VPN
Quota popup of the formsTwo cards under the gauges: the project's estimated cost per month and carbon footprint per year, over its usage plus what the form adds (vCPUs, memory, volume capacity)

Nothing is shown when the catalog has no pricing entry or no OpenKeelTenant sets the rates.

FinOps / GreenOps dashboard and Metrics

FinOps / GreenOps (Home)

  • CloudKitty: current month, end-of-month forecast with its trend, last month
  • Current month per service (donut), last vs current month (bars), the ten costliest resources, instances linked
  • openkeel-pricing: carbon footprint of the current usage per month and year, its split per resource, the cost of that usage and the unit rates
FinOps / GreenOps and CloudKitty

Metrics

  • CPU, memory and disk usage (%) and disk I/O of the project's instances, one curve per instance
  • Periods from the last hour to a year, or custom
  • The busiest instances first, filter, All / None; cards with the instances drawn, the current average and the period's peak
  • KubeVirt kubevirt_vmi_* series read from Prometheus by skyline-apiserver (GET /extension/server_metrics)
What reads Prometheus

How the additions are delivered

skyline-console stays upstream: the openkeel-skyline image fetches a pinned console commit and applies the patches of openkeel-skyline/console-patches in order before building it. The build fails when a patch no longer applies, so a new console version is never shipped without them. Every string is in every locale (German and Chinese translated).

The server side is openkeel-skyline, the Go rewrite of skyline-apiserver: it proxies the new catalog types (pricing, rating, customer) like the OpenStack APIs and adds GET /extension/server_metrics.