spec.owner
is a valid Console groupApplicationInstance
metadata.application
is a valid application.spec.cluster
is a valid Console cluster technical Id.spec.cluster
is immutable (can’t be updated after creation).spec.serviceAccount
(optional). If already used by another AppInstance on the the same spec.cluster
, it can’t be set.spec.applicationManagedServiceAccount
(optional), default is false
. If set to true
, the service account ACLs will be managed by the application owners directly instead of being synchronized by the ApplicationInstance. Find out more about managed service account.spec.topicPolicyRef
(optional), if defined, has to be a valid list of TopicPolicy.spec.policyRef
(optional), if set, has to be a valid list of ResourcePolicy.spec.defaultCatalogVisibility
(optional), default is PUBLIC
. Can be PUBLIC
or PRIVATE
.spec.resources[].type
can be TOPIC
, CONSUMER_GROUP
, SUBJECT
or CONNECTOR
:
spec.resources[].connectCluster
is only mandatory when type
is CONNECTOR
;spec.resources[].connectCluster
is a valid Connect cluster linked to the Kafka cluster spec.cluster
.spec.resources[].patternType
can be PREFIXED
or LITERAL
.spec.resources[].name
has to not overlap with any other ApplicationInstance on the same cluster. I.e.: if there’s already an owner for click
, this is forbidden:
click.orders.
: resource is a child-resource of click
cli
: resource is a parent-resource of click
spec.resources[].ownershipMode
(optional), default is ALL
. Can be ALL
or LIMITED
.ownershipMode
set to ALL
: ApplicationInstance is given all permissions in the UI and the CLI over the owned resources.ownershipMode
set to LIMITED
: ApplicationInstance is restricted the create/update/delete permissions in the UI and the CLI over the owned resources:
apply
commandREAD
, WRITE
and DESCRIBE_CONFIGS
READ
spec
is immutable:
spec.resource.type
can be TOPIC
.spec.resource.patternType
can be PREFIXED
or LITERAL
.spec.resource.name
has to reference any ‘sub-resource’ of metadata.appInstance
. For example, if you’re the owner of the click.
prefix, you can grant READ
or WRITE
access to:
click.
prefix,click.orders.
,click.orders.france
.spec.userPermission
can be READ
, WRITE
or NONE
.spec.serviceAccountPermission
can be READ
, WRITE
or NONE
.spec.userPermission
can be READ
or WRITE
.spec.serviceAccountPermission
can be READ
or WRITE
.spec.grantedTo
has to be an ApplicationInstance on the same Kafka cluster as metadata.appInstance
.grantedTo
ApplicationInstance are given the associated permissions (Read
/Write
) in the UI over the resources.grantedTo
ApplicationInstance is granted to the following ACLs over the resource
, depending on the spec.permission
:
READ
: READ, DESCRIBE_CONFIGSWRITE
: READ, WRITE, DESCRIBE_CONFIGSRead
access in production environment,
spec.permissions[].appInstance
has to be an application instance associated with this application (metadata.application
).spec.permissions[].resourceType
can be TOPIC
, SUBJECT
, CONSUMER_GROUP
or CONNECTOR
. When set to CONNECTOR
, an additional field spec.permissions[].connectCluster
is mandatory and has to be a valid KafkaConnectCluster name.spec.permissions[].patternType
can be PREFIXED
or LITERAL
.spec.permissions[].name
has to reference any ‘sub-resource’ of metadata.appInstance
or any subscribed topic. Use *
to include to all owned and subscribed resources associated to this appInstance.spec.permissions[].permissions
are valid permissions.spec.members
has to be an email addresses of members that you want to add to this group.spec.externalGroups
a list of LDAP or OIDC groups to sync with this Console group. Members added this way will not appear in spec.members
list.ApplicationInstance
level.
Instead, the central platform team decides to delegate this responsibility to the application team, which needs to declare their own service account(s) and associated ACLs within the limits of what the ApplicationInstance
is allowed to do.
Describe
, DescribeConfigs
, Read
, Write
.Describe
and Read
.Describe
and DescribeConfigs
.ApplicationInstance
level. Typical use cases include:
spec.topicPolicyRef
.spec.policies
require YAML paths that are paths to the topic resource YAML. For example:
metadata.name
to create constraints on topic namemetadata.labels.<key>
to create constraints on topic label <key>
spec.partitions
to create constraints on partitions numberspec.replicationFactor
to create constraints on replication factorspec.configs.<key>
to create constraints on topic config <key>
spec.policies.<key>.constraint
can be Range
, OneOf
or Match
Range
validates a range of numbersOneOf
validates against a list of predefined optionsNoneOf
rejects a value if it matches any item in the listMatch
validates using a regex (regular expression)AllowedKeys
limits a set of keys in the dictionariesdelete
compact
delete, compact
(valid in Kafka but not allowed by policy)deleet
(typo)wikipedia.links.avro
wikipedia.products.json
notwikipedia.products.avro2
: ^
and $
prevents anything before and after the patternwikipedia.all-products.avro
: (?<event>[a-z0-9]+)
prevents anything else than lowercase letters and digitsspec.configs
and metadata.labels
.
min.insync.replicas
is not an allowed key in spec.configs
):
insync.replicas
:
ApplicationInstance
level. Typical use case include:
spec.policyRef
.spec.targetKind
can be Topic
, Connector
, Subject
or ApplicationGroup
.spec.rules[].condition
is a valid CEL expression and will be evaluated against the resource.spec.rules[].errorMessage
is a string that will be displayed when the condition is not met.ResourcePolicy
, here’s how you can transform the different policies:
int(string(spec.configs["retention.ms"]))
.
.
or dashes -
, you have to access them with the []
operator: metadata.labels["data-criticality"]
.
has(metadata.labels.criticality) && {your condition}
. If the field has a dot or dash, use "retention.ms" in spec.configs && {your condition}
.