Pulp Operator Secrets¶
Pulp Operator creates k8s Secrets
based on the configuration defined in Pulp CR
.
Some Secrets
are not reconciled, which means, any modification in their content will not
get synchronized with the CR
definition. This is to avoid losing any custom data added to the Secret
.
Restore the default values¶
To restore the default values defined by the Operator it is possible to remove the secret and let the Operator recreate it:
Warning
This is a disruptive action. Any change made directly into the Secret
will be lost.
We recommend to make a backup of the Secret
before removing it.
-
make a copy of the
Secret
$ kubectl get secret -oyaml > my_secret.yaml
-
delete the secret (the Operator will create a new one with the default values)
$ kubectl delete secret <secret name>
Note
Any modifications to the Secrets
will not be replicated to the running pods.
To update the Pods
with the new Secret
contents just delete the Pod
(the new Pod
provisioned by the controller will mount the updated Secret
).
List of Secrets deployed by the Operator¶
The following Secrets
are created by the operator in case they are not provided through Pulp CR
.
The name of the Secrets
can be different depending on the Pulp's CR
name.
Note
For the sake of simplicity, we are considering that the Operator .metadata.name
is "pulp",
so all of the following Secrets
will be prefixed with pulp-
.
pulp-server¶
Will be used to populate /etc/pulp/settings.py
configuration file.
Warning
Do not modify this Secret
, the content will get overwritten by the operator.
Any modification in Pulp CR
that impact changing the content of this
Secret
will trigger a redeploy of pulp-api
and pulp-content
pods.
Here is an example of a Secret
created by the Operator:
DB_ENCRYPTION_KEY = "/etc/pulp/keys/database_fields.symmetric.key"
GALAXY_COLLECTION_SIGNING_SERVICE = "ansible-default"
GALAXY_CONTAINER_SIGNING_SERVICE = "container-default"
ANSIBLE_API_HOSTNAME = "http://pulp-web-svc.pulp.svc.cluster.local:24880"
ANSIBLE_CERTS_DIR = "/etc/pulp/keys/"
CONTENT_ORIGIN = "http://pulp-web-svc.pulp.svc.cluster.local:24880"
DATABASES = {
'default': {
'HOST': 'postgres.db.svc.cluster.local',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'pulp',
'USER': 'pulp-admin',
'PASSWORD': 'password',
'PORT': '5432',
'CONN_MAX_AGE': 0,
'OPTIONS': { 'sslmode': 'prefer' },
}
}
GALAXY_FEATURE_FLAGS = {
'execution_environments': 'True',
}
PRIVATE_KEY_PATH = "/etc/pulp/keys/container_auth_private_key.pem"
PUBLIC_KEY_PATH = "/etc/pulp/keys/container_auth_public_key.pem"
STATIC_ROOT = "/var/lib/operator/static/"
TOKEN_AUTH_DISABLED = "False"
TOKEN_SERVER = "http://pulp-api-svc.pulp.svc.cluster.local:24817/token/"
TOKEN_SIGNATURE_ALGORITHM = "ES256"
API_ROOT = "/pulp/"
CACHE_ENABLED = "True"
REDIS_HOST = "pulp-redis-svc.pulp"
REDIS_PORT = "6379"
REDIS_PASSWORD = ""
REDIS_DB = ""
For more information about Pulp Settings config file see Pulpcore doc.
For more information about how to configure settings.py
file using Pulp
Operator see Pulp Settings.
pulp-db-fields-encryption¶
Symmetric key used to encrypt the data stored in the database.
The current version of Operator does not provide a way to modify this key yet.
pulp-admin-password¶
To define the password from Pulp admin user, create a Secret
with a password
key and set admin_password_secret
with the name of the Secret
created.
- in this example we are creating a secret called "my-admin-password" and the "password" key has "MySuperSecretPassword" as value
$ kubectl create secret generic my-admin-password --from-literal=password=MySuperSecretPassword
- now we need to set the
admin_password_secret
field in the CR... spec: admin_password_secret: my-admin-password ...
If the admin_password_secret
field is not defined with the name of a Secret
the Operator will create one (called pulp-admin-password) with a random string.
This field is immutable, i.e., it is not possible to modify the name of the Secret
that the Operator will use to define the admin password. In case of a need to update the admin password, the Secret
content should be updated instead.
pulp-container-auth¶
Contains the keys which are going to be used for the signing and validation of tokens.
It is managed by container_token_secret
field in Pulp CR
. The Secret
name is immutable (an attempt to change its name in Pulp CR
will reconcile it), any update should be done in the existing Secret
content.
pulp-secret-key¶
Name of the Kubernetes Secret
with Django SECRET_KEY
.
From Django doc: "A secret key for a particular Django installation. This is used to provide cryptographic signing, and should be set to a unique, unpredictable value."
The Secret.data.key
must be named secret_key.
- in this example we are creating a secret called "my-django-secret-key" and the "secret_key" key has "MySuperSecretPassword" as value
$ kubectl create secret generic my-django-secret-key --from-literal=secret_key=MySuperSecretPassword
- now we need to set the
pulp_secret_key
field in the CR... spec: pulp_secret_key: my-django-secret-key ...
If the pulp_secret_key
field is not defined with the name of a Secret
the Operator will create one (called pulp-secret-key) with a random string.
This field is immutable, i.e., it is not possible to modify the name of the Secret
that the Operator will use to define the Django SECRET_KEY
. In case of a need to update it, the Secret
content should be updated instead.