Charmed Kubeflow is a Juju bundle consisting of several charms integrated using Juju relations. See Kubeflow bundle for more details.
Below is an overview of all cryptographic processes handled by the charms integrated in the Kubeflow bundle.
The charms within the Kubeflow bundle that are not mentioned in this guide do not involve any cryptography in their logic.
admission-webhook
This charm is responsible for applying Kubeflow PodDefaults to newly created pods, and thus creates a MutatingWebhookConfiguration object for registering a webhook.
The charm code generates a self-signed X.509 certificate, so that the Kubernetes API server can confirm the workload container identity.
dex-auth
This charm is an operator for Dex, which provides authentication to Charmed Kubeflow. If the Dex builtin connector is used, the user password in the static_password
field is hashed with the bcrypt
library before being stored in the Dex configuration.
Additionally, the stored charm state is salted with bcrypt
to prevent reverse engineering.
istio-pilot
Charmed Kubeflow uses the Istio service mesh to enable end-to-end authentication and access control. The workload container of istio-pilot
is responsible for distributing an X.509 certificate using sha25withRSAEncryption
to every sidecar container in the following path: /var/run/secrets/istio/root-cerm.pem
.
When a workload container, i.e., the client, sends a request to another workload container, i.e., the server:
- Istio reroutes the outbound traffic to the client’s sidecar.
- The client’s sidecar starts an mTLS handshake with the server’s sidecar.
- The two sidecars establish an mTLS connection, and Istio forwards the traffic from the client to the server.
- The server sidecar authorises the request, and forwards the traffic to the backend service through local TCP connections.
The minimum required version of TLS is TLSv1_2
.
See Istio Mutual TLS authentication for more details.
Additionally, the charm uses the cert-handler library to generate an X.509 certificate for the Istio Gateway
object.
katib-controller
This charm creates a MutatingWebhookConfiguration
object that calls a webhook whenever a new Kubeflow experiment is created or updated.
Similar to the other charms that create MutatingWebhookConfiguration
objects, katib-controller
generates a self-signed X.509 certificate so that the Kubernetes API server can confirm the workload container identity.
kfp-persistence
This charm creates a service account token that is used to verify requests to the Kubeflow Pipelines service.
kserve-controller
This charm creates a MutatingWebhookConfiguration
object that calls a webhook whenever a new KServe InferenceService is created or updated.
Similar to the other charms that create MutatingWebhookConfiguration
objects, this charm generates a self-signed X.509 certificate so that the Kubernetes API server can confirm the workload container identity.
minio
This charm is an operator for MinIO, which provides S3 object storage. It uses a field in the object-storage
interface named secret-key
. Its value is created from a randomly generated 30-character string.
Additionally, the charm adds a randomly generated salt to its configuration before it is hashed with SHA-256, to prevent reverse engineering the secret-key
field.
oidc-gatekeeper
This charm uses the client-name
and client-secret
configuration options for the OpenID Connect client. Similarly to minio
, the value of secret-key
is created from a randomly generated 30-character string.
pvc-viewer
This charm creates a MutatingWebhookConfiguration
object that calls a webhook whenever a new PVCViewer is created or updated.
Similar to the other charms that create MutatingWebhookConfiguration
objects, this charm generates a self-signed X.509 certificate so that the Kubernetes API server can confirm the workload container identity.
Charm libraries
Some charms used in the Kubeflow bundle make use of the Grafana, Loki, and Prometheus libraries. These libraries are developed for the Canonical Observability Stack (COS). See COS-Lite cryptographic documentation for more details.