Customizing kn

You can customize your kn CLI setup by creating a config.yaml configuration file. You can provide this configuration by using the --config flag, otherwise the configuration is picked up from a default location. The default configuration location conforms to the XDG Base Directory Specification, and is different for Unix systems and Windows systems.

  • If the XDG_CONFIG_HOME environment variable is set, the default configuration location that kn looks for is $XDG_CONFIG_HOME/kn.
  • If the XDG_CONFIG_HOME environment variable is not set, kn looks for the configuration in the home directory of the user at $HOME/.config/kn/config.yaml.
  • For Windows systems, the default kn configuration location is %APPDATA%\kn.

Example configuration file

  1. # Plugins related configuration
  2. plugins:
  3. # Whether to lookup configuration in the execution path (default: true). This option is deprecated and will be removed in a future version where path lookup will be enabled unconditionally
  4. path-lookup: true
  5. # Directory from where plugins with the prefix "kn-" are looked up. (default: "$base_dir/plugins"
  6. # where "$base_dir" is the directory where this configuration file is stored)
  7. directory: ~/.config/kn/plugins
  8. # Eventing related configuration
  9. eventing:
  10. # List of sink mappings that allow custom prefixes wherever a sink
  11. # specification is used (like for the --sink option of a broker)
  12. sink-mappings:
  13. # Prefix as used in the command (e.g. "--sink svc:myservice")
  14. - prefix: svc
  15. # Api group of the mapped resource
  16. group: core
  17. # Api version of the mapped resource
  18. version: v1
  19. # Resource name (lowercased plural form of the 'kind')
  20. resource: services
  21. # Channel mappings that you can use in --channel options
  22. channel-type-mappings:
  23. # Alias that can be used as a type for a channel option (e.g. "kn create channel mychannel --type Kafka")
  24. - alias: Kafka
  25. # Api group of the mapped resource
  26. group: messaging.knative.dev
  27. # Api version of the mapped resource
  28. version: v1beta1
  29. # Kind of the resource
  30. kind: KafkaChannel

Where

  • path-lookup specifies whether kn should look for plugins in the PATH environment variable. This is a boolean configuration option (default: true). Note: the path-lookup option has been deprecated and will be removed in a future version where path lookup will be enabled unconditionally.
  • directory specifies the directory where kn will look for plugins. The default path depends on the operating system, as described earlier. This can be any directory that is visible to the user (default: $base_dir/plugins, where $base_dir is the directory where this configuration file is stored).
  • sink-mappings defines the Kubernetes Addressable resource that is used when you use the --sink flag with a kn CLI command.
    • prefix: The prefix you want to use to describe your sink. Service, svc, channel, and broker are predefined prefixes in kn.
    • group: The API group of the Kubernetes resource.
    • version: The version of the Kubernetes resource.
    • resource: The lowercased, plural name of the Kubernetes resource type. For example, services or brokers.
  • channel-type-mappings can be used to define aliases for custom channel types that can be used wherever a channel type is required (as in kn channel create --type). This configuration section defines an array of entries with the following fields:
  • alias: The name that can be used as the type
  • group: The APIGroup of the channel CRD.
  • version: The version of the channel CRD.
  • kind: Kind of the channel CRD (e.g. KafkaChannel)