Class ServiceBindingPropertySource

java.lang.Object
org.apache.tomcat.util.digester.ServiceBindingPropertySource
All Implemented Interfaces:
IntrospectionUtils.PropertySource

public class ServiceBindingPropertySource extends Object implements IntrospectionUtils.PropertySource
A IntrospectionUtils.PropertySource that uses Kubernetes service bindings to resolve expressions.

The Kubernetes service binding specification can be found at https://servicebinding.io/.

Usage example:

Configure the certificate with a service binding.

When the service binding is constructed as follows:

   $SERVICE_BINDING_ROOT/
                        /custom-certificate/
                                           /keyFile
                                           /file
                                           /chainFile
                                           /keyPassword
  
    <SSLHostConfig>
          <Certificate certificateKeyFile="${custom-certificate.keyFile}"
                       certificateFile="${custom-certificate.file}"
                       certificateChainFile="${custom-certificate.chainFile}"
                       certificateKeyPassword="${chomp:custom-certificate.keyPassword}"
                       type="RSA" />
    </SSLHostConfig> 

The optional chomp: prefix will cause the ServiceBindingPropertySource to trim a single newline (\r\n, \r, or \n) from the end of the file, if it exists. This is a convenience for hand-edited files/values where removing a trailing newline is difficult, and trailing whitespace changes the meaning of the value.

How to configure:

  echo "org.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.ServiceBindingPropertySource" >> conf/catalina.properties
or add this to CATALINA_OPTS

  -Dorg.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.ServiceBindingPropertySource
NOTE: When configured the PropertySource for resolving expressions from system properties is still active.
See Also:
  • Constructor Details

    • ServiceBindingPropertySource

      public ServiceBindingPropertySource()
      Default constructor.
  • Method Details

    • getProperty

      public String getProperty(String key)
      Resolves a property key using Kubernetes service bindings.

      Keys are expected in the format <binding-name>.<key>, which maps to $SERVICE_BINDING_ROOT/<binding-name>/<key>. The optional chomp: prefix trims a trailing newline from the file content.

      Specified by:
      getProperty in interface IntrospectionUtils.PropertySource
      Parameters:
      key - the property key to resolve
      Returns:
      the resolved property value, or null if not found