This topic tells you how to use Namespace Provisioner to customize namespaces in controller mode in Tanzu Application Platform (commonly known as TAP).
When managing multiple developer namespaces in a cluster, it is often necessary to customize each namespace individually. To customize a namespace in controller mode, add parameters to a namespace through labels and annotations using either the default prefix or a custom-defined prefix.
In GitOps mode, you can configure these parameters in the GitOps file. For more information, see Customize the label and annotation prefixes that controller watches.
CautionIf a parameter is initially created through annotations and later a label with the same key is used, the annotation is overwritten.
<prefix>/<parameter-key>=<parameter-value>
.kye1.inner-key1.inner-key3.inner-key4
. This is translated into a structured format in the values.[]
to define lists and {}
to define objectsadditional_sources
from data.values
.Examples:
To define a list of tools used by the namespace:
kubectl annotate ns dev param.nsp.tap/project.tools='["git", "maven"]'
The desired-namespaces
ConfigMap will look like:
#@data/values
---
namespaces:
- name: dev
project:
tools:
- git
- maven
To add a list of objects:
kubectl annotate ns dev param.nsp.tap/volume.claims='[{"name": "logs", "mountPath": "/var/logs/app"}, {"name": "truststore", "mountPath": "/opt/app/ssl"}]
The desired-namespaces
ConfigMap will look like:
#@data/values
---
namespaces:
- name: dev
volume:
claims:
- name: logs
mountPath: /var/logs/app
- name: truststore
mountPath: /opt/app/ssl
Simple key-value:
kubectl annotate ns dev param.nsp.tap/scanpolicy=relaxed
The desired-namespaces
ConfigMap will look like:
#@data/values
---
namespaces:
- name: dev
scanpolicy: relaxed
Object as value:
kubectl annotate ns dev param.nsp.tap/maven.values='{"username":"user", "password":"my-pass","repo":"myrepo","version":"0.1.1-alpha.0"}'
The desired-namespaces
ConfigMap will look like:
#@data/values
---
namespaces:
- name: dev
maven:
values:
username: user
password: my-pass
repo: myrepo
Version: 0.1.1-alpha.0
Namespace Provisioner reserves certain parameters for its use. The following is a list of parameters used by the Namespace Provisioner, which apply to both the default_parameters
in tap-values.yaml
and the namespace parameters through labels and annotations:
limits
(object): Use to configure the LimitRange. For more information, see Customize Limit Range defaults.skip_limit_range
(boolean): Use to determine if the LimitRange should be created. For more information, see Customize Limit Range defaults.skip_grype
(boolean): Use to determine if Grype scanner resources are going to be created. For more information, see Deactivate Grype install.supply_chain_service_account
(object): Contains the secrets and imagePullSecrets to be added to the Supply Chain ServiceAccount. For more information, see Customize service accounts.delivery_service_account
(object): Contains the secrets and imagePullSecrets to be added to the delivery ServiceAccount. For more information, see Customize service accounts.