Parameters
The parent key for all of the following parameters is lieutenant
.
operator.common_labels
type |
dict |
default: |
app.kubernetes.io/name: 'lieutenant-operator'
app.kubernetes.io/part-of: 'project-syn'
Common labels to add to each resource of the Lieutenant Operator. Will be used as a label selector for pods.
operator.default_deletion_policy
type |
string |
default |
|
Sets what deletion policy for external resources (Git, Vault) should be used by default.
One of Archive
, Delete
, Retain
.
operator.deletion_protection
type |
bool |
default |
|
Defines whether the annotation to protect for accidental deletion should be set by default.
operator.default_global_git_repo
type |
string |
default |
`` |
URL of the default global configuration Git repository.
The value of this parameter will be used as the default value for .spec.globalGitRepoURL
on new tenant objects.
operator.env
type |
dict |
default |
|
example |
|
Additional environment variables that should be passed to the Lieutenant operator.
If a dict is given as the value, the component will render it as valueFrom:
.
Environment variables configured in this parameter have precedence over environment variables generated from other component parameters. |
operator.lieutenant_api_url
type |
string |
default |
Make the Lieutenant Operator aware of where the API is publicly reachable.
By default, the API ingress hostname is used, with a https://
prefix.
operator.vault.enabled
type |
bool |
default |
|
Whether to enable the Lieutenant Operator Vault integration.
If set to true, operator.vault.addr
and operator.vault.path
must be set to point to a valid Vault instance and a valid KV secret engine of that Vault instance.
operator.vault.auth_path
type |
string |
default |
|
The mount path of the Vault authentication method to use.
api.common_labels
type |
dict |
default: |
app.kubernetes.io/name: 'lieutenant-api'
app.kubernetes.io/part-of: 'project-syn'
Common labels to add to each resource of the Lieutenant API. Will be used as a label selector for pods.
api.env
type |
list |
default |
|
example |
|
Additional environment that should be passed to the Lieutenant API.
If a dict is given valueFrom:
is assumed.
api.ingress.host
type |
string |
default |
|
Defines the FQDN of the API ingress, should be overwritten on the cluster level.
api.ingress.annotations
type |
dict |
default |
{} |
The annotations added to the created ingress Needs to be set according to the deployed ingress controller.
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/cors-allow-credentials: 'true'
nginx.ingress.kubernetes.io/cors-allow-methods: GET, POST, DELETE
nginx.ingress.kubernetes.io/cors-allow-origin: http://localhost:8080
nginx.ingress.kubernetes.io/enable-cors: 'true'
api.ingress.tls
type |
bool |
default |
|
Whether to enable TLS for the ingress.
This requires either to set the correct cert-manager
annotations or to add the certificate manually to the secret lieutenant-api-cert
.
api.lieutenant_instance
type |
string |
default |
|
Sets the env variable LIEUTENANT_INSTANCE
to the value specified here. By default the value is set to the name of the namespace.
api.create_user_serviceaccount_secrets
type |
bool |
default |
|
This parameter controls whether the component creates a ServiceAccount token secret for each user with kind: ServiceAccount
listed in parameter api.users
.
This parameter should always be set to true
on Kubernetes 1.24+, because Kubernetes 1.24 and newer don’t automatically create a ServiceAccount token secret anymore.
api.users
type |
list |
default: |
users:
- kind: ServiceAccount
name: lieutenant-api-user
A list of users that have permission to access the API
These entries translate to Kubernetes subjects and can reference a Group
, User
, or ServiceAccount
.
For entries with type ServiceAccount
the component will create the corresponding service account object.
tenant_rbac
type |
dict |
default |
{} |
Role based access control to the created tenant (or cluster) resources.
Lieutenant creates a Role
for each tenant and cluster using the tenant or cluster ID as the role name.
The component will create a RoleBinding named custom-<key>
for each entry in the parameter.
The roleRef
for each RoleBinding will use the key in the parameter as the role name.
We prefix the RoleBinding name with custom-
, because Lieutenant already manages RoleBindings which use the tenant and cluster IDs as names.
tenant_rbac:
t-foo-324
- name: 'sa-bar'
kind: 'ServiceAccount'
- name: 'u-bar-1'
kind: 'User'
t-foo-1
- name: 'g-buzz'
kind: 'Group'
- name: 'u-bar-1'
kind: 'User'
c-bar-546:
- name: 'u-bar-1'
kind: 'User'
The example configuration above will create
-
a RoleBinding
custom-t-foo-324
which grants useru-bar-1
and service accountsa-bar
read access to all clusters owned by tenantt-foo-324
. -
a RoleBinding
custom-t-foo-1
which grants groupg-buzz
and useru-bar-1
read access to all clusters owned by tenantt-foo-1
. -
a RoleBinding
custom-c-bar-546
which grants useru-bar-1
read access to clusterc-bar-546
.
This can usually only be configured after the initial setup of Lieutenant.
githosts
type |
dict |
default |
{} |
A list of GitLab instances Lieutenant will be able to connect to for repository creation.
A GitLab token with api
scope need to be accessible through Vault.
See the setup githost how-to for further details.
githosts: gitlab-vshn: endpoint: https://git.vshn.net/ token: '?{vaultkv:${cluster:tenant}/${cluster:name}/lieutenant/githosts/gitlab-vshn/token}' host_keys: | git.vshn.net ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnE1dMkh+3uHWck+cTvQqeNUW0lj1uVcIC9JX2Tg6gmkKCYA73+o+I7vo4g6nPtSOAfITvYdHJLzwE9GwlSFsXHMR9q0ErWl2wC+w6FawLMz9//5XqiBi2qq/8WnWp3ecY16jDoGRW4eymT+USFHKJVi696XBy3WE/0BBapPZ58WPqkKN6A27qkIK6FehI80f+zN4ZqikdwWuCFs35fsimcmLnWqWPm8zbOkgCiB+ov4O/xmRNHwJWCk/qzU6X/M9YtMXzAa5mjwDvcHSAizFD3a3Fv68G1VsmRZ0THLrRKM/WOxrWNZoimSNgyjTzoCwiKeckvL5+hpNcNSW+eBPt git.vshn.net ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO9EkPcVdsz/oVTI2VJkBlq8Mv/dg3rhcbgzAEKyiwUG
auth_delegation
type |
dict |
default |
{} |
A list of subjects that will be allowed to review cluster tokens.
The component will create a ClusterRoleBinding that assigns the system:auth-delegator
ClusterRole to the given subjects.
This can be used to enable one or more subjects to authenticate to an externally running vault instance.
The example below will allow any service account in the lieutenant
namespace to authenticate to vault.
auth_delegation:
lieutenant-sa:
apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:serviceaccounts
namespace: lieutenant
Any listed subject will be able to create |
tenant_template
type |
dict |
default |
null |
This parameter allows users to deploy a TenantTemplate
object called default
.
If the parameter is null
, the TenantTemplate
object won’t be created.
The contents of the parameter are used for field spec
of the object without any processing or validation.
See TenantSpec
for supported fields.