From ade3981b6d67fd116349d53a75467554de280c91 Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Tue, 27 Nov 2018 11:32:27 -0500 Subject: [PATCH] Sync docs from vGreenwich.M3 to gh-pages --- ...ompendium_of_configuration_properties.html | 2 +- Greenwich.M3/multi/multi__building.html | 47 ++ .../multi__configmap_propertysource.html | 105 +++ Greenwich.M3/multi/multi__contributing.html | 28 + ...multi__discoveryclient_for_kubernetes.html | 20 + Greenwich.M3/multi/multi__examples_2.html | 3 + .../multi/multi__kubernetes_awareness.html | 9 + ..._kubernetes_profile_autoconfiguration.html | 5 + ...rnetes_propertysource_implementations.html | 6 + .../multi/multi__leader_election.html | 3 + Greenwich.M3/multi/multi__namespace.html | 8 + .../multi/multi__other_resources.html | 3 + .../multi/multi__pod_health_indicator.html | 4 + .../multi/multi__propertysource_reload.html | 49 ++ ...multi__ribbon_discovery_in_kubernetes.html | 21 + .../multi/multi__secrets_propertysource.html | 58 ++ ...rity_configurations_inside_kubernetes.html | 3 + .../multi__serverless_platform_adapters.html | 4 +- .../multi/multi__service_account.html | 4 + .../multi/multi__spring_cloud_kubernetes.html | 3 + ...y_do_you_need_spring_cloud_kubernetes.html | 4 + Greenwich.M3/multi/multi_spring-cloud.html | 2 +- Greenwich.M3/single/spring-cloud.html | 330 +++++++- Greenwich.M3/spring-cloud.xml | 783 ++++++++++++++++++ 24 files changed, 1498 insertions(+), 6 deletions(-) create mode 100644 Greenwich.M3/multi/multi__building.html create mode 100644 Greenwich.M3/multi/multi__configmap_propertysource.html create mode 100644 Greenwich.M3/multi/multi__contributing.html create mode 100644 Greenwich.M3/multi/multi__discoveryclient_for_kubernetes.html create mode 100644 Greenwich.M3/multi/multi__examples_2.html create mode 100644 Greenwich.M3/multi/multi__kubernetes_awareness.html create mode 100644 Greenwich.M3/multi/multi__kubernetes_profile_autoconfiguration.html create mode 100644 Greenwich.M3/multi/multi__kubernetes_propertysource_implementations.html create mode 100644 Greenwich.M3/multi/multi__leader_election.html create mode 100644 Greenwich.M3/multi/multi__namespace.html create mode 100644 Greenwich.M3/multi/multi__other_resources.html create mode 100644 Greenwich.M3/multi/multi__pod_health_indicator.html create mode 100644 Greenwich.M3/multi/multi__propertysource_reload.html create mode 100644 Greenwich.M3/multi/multi__ribbon_discovery_in_kubernetes.html create mode 100644 Greenwich.M3/multi/multi__secrets_propertysource.html create mode 100644 Greenwich.M3/multi/multi__security_configurations_inside_kubernetes.html create mode 100644 Greenwich.M3/multi/multi__service_account.html create mode 100644 Greenwich.M3/multi/multi__spring_cloud_kubernetes.html create mode 100644 Greenwich.M3/multi/multi__why_do_you_need_spring_cloud_kubernetes.html diff --git a/Greenwich.M3/multi/multi__appendix_compendium_of_configuration_properties.html b/Greenwich.M3/multi/multi__appendix_compendium_of_configuration_properties.html index bd06da74..2181b873 100644 --- a/Greenwich.M3/multi/multi__appendix_compendium_of_configuration_properties.html +++ b/Greenwich.M3/multi/multi__appendix_compendium_of_configuration_properties.html @@ -1,3 +1,3 @@ - Part XVII. Appendix: Compendium of Configuration Properties

Part XVII. Appendix: Compendium of Configuration Properties

Name

Default

Description

aws.paramstore.default-context

application

 

aws.paramstore.enabled

true

Is AWS Parameter Store support enabled.

aws.paramstore.fail-fast

true

Throw exceptions during config lookup if true, otherwise, log warnings.

aws.paramstore.name

 

Alternative to spring.application.name to use in looking up values in AWS Parameter Store.

aws.paramstore.prefix

/config

Prefix indicating first level for every property. Value must start with a forward slash followed by a valid path segment or be empty. Defaults to "/config".

aws.paramstore.profile-separator

_

 

encrypt.fail-on-error

true

Flag to say that a process should fail if there is an encryption or decryption error.

encrypt.key

 

A symmetric key. As a stronger alternative, consider using a keystore.

encrypt.key-store.alias

 

Alias for a key in the store.

encrypt.key-store.location

 

Location of the key store file, e.g. classpath:/keystore.jks.

encrypt.key-store.password

 

Password that locks the keystore.

encrypt.key-store.secret

 

Secret protecting the key (defaults to the same as the password).

encrypt.rsa.algorithm

 

The RSA algorithm to use (DEFAULT or OEAP). Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.rsa.salt

deadbeef

Salt for the random secret used to encrypt cipher text. Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.rsa.strong

false

Flag to indicate that "strong" AES encryption should be used internally. If true, then the GCM algorithm is applied to the AES encrypted bytes. Default is false (in which case "standard" CBC is used instead). Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.salt

deadbeef

A salt for the symmetric key, in the form of a hex-encoded byte array. As a stronger alternative, consider using a keystore.

endpoints.zookeeper.enabled

true

Enable the /zookeeper endpoint to inspect the state of zookeeper.

eureka.client.healthcheck.enabled

true

Enables the Eureka health check handler.

health.config.enabled

false

Flag to indicate that the config server health indicator should be installed.

health.config.time-to-live

0

Time to live for cached result, in milliseconds. Default 300000 (5 min).

hystrix.metrics.enabled

true

Enable Hystrix metrics polling. Defaults to true.

hystrix.metrics.polling-interval-ms

2000

Interval between subsequent polling of metrics. Defaults to 2000 ms.

hystrix.shareSecurityContext

false

Enables auto-configuration of the Hystrix concurrency strategy plugin hook who will transfer the SecurityContext from your main thread to the one used by the Hystrix command.

management.endpoint.bindings.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.bindings.enabled

true

Whether to enable the bindings endpoint.

management.endpoint.bus-env.enabled

true

Whether to enable the bus-env endpoint.

management.endpoint.bus-refresh.enabled

true

Whether to enable the bus-refresh endpoint.

management.endpoint.channels.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.channels.enabled

true

Whether to enable the channels endpoint.

management.endpoint.consul.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.consul.enabled

true

Whether to enable the consul endpoint.

management.endpoint.env.post.enabled

true

Enable changing the Environment through a POST to /env.

management.endpoint.features.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.features.enabled

true

Whether to enable the features endpoint.

management.endpoint.gateway.enabled

true

Whether to enable the gateway endpoint.

management.endpoint.hystrix.config

 

Hystrix settings. These are traditionally set using servlet parameters. Refer to the documentation of Hystrix for more details.

management.endpoint.hystrix.stream.enabled

true

Whether to enable the hystrix.stream endpoint.

management.endpoint.pause.enabled

true

Enable the /pause endpoint (to send Lifecycle.stop()).

management.endpoint.refresh.enabled

true

Enable the /refresh endpoint to refresh configuration and re-initialize refresh scoped beans.

management.endpoint.restart.enabled

true

Enable the /restart endpoint to restart the application context.

management.endpoint.resume.enabled

true

Enable the /resume endpoint (to send Lifecycle.start()).

management.endpoint.service-registry.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.service-registry.enabled

true

Whether to enable the service-registry endpoint.

management.health.refresh.enabled

true

Enable the health endpoint for the refresh scope.

management.health.zookeeper.enabled

true

Enable the health endpoint for zookeeper.

management.metrics.binders.hystrix.enabled

true

Enables creation of OK Http Client factory beans.

maven.checksum-policy

  

maven.connect-timeout

  

maven.local-repository

  

maven.offline

  

maven.proxy

  

maven.remote-repositories

  

maven.request-timeout

  

maven.resolve-pom

  

maven.update-policy

  

proxy.auth.load-balanced

false

 

proxy.auth.routes

 

Authentication strategy per route.

ribbon.eager-load.clients

  

ribbon.eager-load.enabled

false

 

ribbon.http.client.enabled

false

Deprecated property to enable Ribbon RestClient.

ribbon.okhttp.enabled

false

Enables the use of the OK HTTP Client with Ribbon.

ribbon.restclient.enabled

false

Enables the use of the deprecated Ribbon RestClient.

ribbon.secure-ports

  

spring.cloud.bus.ack.destination-service

 

Service that wants to listen to acks. By default null (meaning all services).

spring.cloud.bus.ack.enabled

true

Flag to switch off acks (default on).

spring.cloud.bus.destination

springCloudBus

Name of Spring Cloud Stream destination for messages.

spring.cloud.bus.enabled

true

Flag to indicate that the bus is enabled.

spring.cloud.bus.env.enabled

true

Flag to switch off environment change events (default on).

spring.cloud.bus.id

application

The identifier for this application instance.

spring.cloud.bus.refresh.enabled

true

Flag to switch off refresh events (default on).

spring.cloud.bus.trace.enabled

false

Flag to switch on tracing of acks (default off).

spring.cloud.cloudfoundry.discovery.default-server-port

80

Port to use when no port is defined by ribbon.

spring.cloud.cloudfoundry.discovery.enabled

true

Flag to indicate that discovery is enabled.

spring.cloud.cloudfoundry.discovery.heartbeat-frequency

5000

Frequency in milliseconds of poll for heart beat. The client will poll on this frequency and broadcast a list of service ids.

spring.cloud.cloudfoundry.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.cloudfoundry.org

 

Organization name to initially target.

spring.cloud.cloudfoundry.password

 

Password for user to authenticate and obtain token.

spring.cloud.cloudfoundry.skip-ssl-validation

false

 

spring.cloud.cloudfoundry.space

 

Space name to initially target.

spring.cloud.cloudfoundry.url

 

URL of Cloud Foundry API (Cloud Controller).

spring.cloud.cloudfoundry.username

 

Username to authenticate (usually an email address).

spring.cloud.compatibility-verifier.compatible-boot-versions

2.1.x

Default accepted versions for the Spring Boot dependency. You can set {@code x} for the patch version if you don’t want to specify a concrete value. Example: {@code 3.4.x}

spring.cloud.compatibility-verifier.enabled

false

Enables creation of Spring Cloud compatibility verification.

spring.cloud.config.allow-override

true

Flag to indicate that {@link #isOverrideSystemProperties() systemPropertiesOverride} can be used. Set to false to prevent users from changing the default accidentally. Default true.

spring.cloud.config.discovery.enabled

false

Flag to indicate that config server discovery is enabled (config server URL will be looked up via discovery).

spring.cloud.config.discovery.service-id

configserver

Service id to locate config server.

spring.cloud.config.enabled

true

Flag to say that remote configuration is enabled. Default true;

spring.cloud.config.fail-fast

false

Flag to indicate that failure to connect to the server is fatal (default false).

spring.cloud.config.headers

 

Additional headers used to create the client request.

spring.cloud.config.label

 

The label name to use to pull remote configuration properties. The default is set on the server (generally "master" for a git based server).

spring.cloud.config.name

 

Name of application used to fetch remote properties.

spring.cloud.config.override-none

false

Flag to indicate that when {@link #setAllowOverride(boolean) allowOverride} is true, external properties should take lowest priority and should not override any existing property sources (including local config files). Default false.

spring.cloud.config.override-system-properties

true

Flag to indicate that the external properties should override system properties. Default true.

spring.cloud.config.password

 

The password to use (HTTP Basic) when contacting the remote server.

spring.cloud.config.profile

default

The default profile to use when fetching remote configuration (comma-separated). Default is "default".

spring.cloud.config.request-read-timeout

0

timeout on waiting to read data from the Config Server.

spring.cloud.config.retry.initial-interval

1000

Initial retry interval in milliseconds.

spring.cloud.config.retry.max-attempts

6

Maximum number of attempts.

spring.cloud.config.retry.max-interval

2000

Maximum interval for backoff.

spring.cloud.config.retry.multiplier

1.1

Multiplier for next interval.

spring.cloud.config.send-state

true

Flag to indicate whether to send state. Default true.

spring.cloud.config.server.accept-empty

true

Flag to indicate that If HTTP 404 needs to be sent if Application is not Found

spring.cloud.config.server.bootstrap

false

Flag indicating that the config server should initialize its own Environment with properties from the remote repository. Off by default because it delays startup but can be useful when embedding the server in another application.

spring.cloud.config.server.default-application-name

application

Default application name when incoming requests do not have a specific one.

spring.cloud.config.server.default-label

 

Default repository label when incoming requests do not have a specific label.

spring.cloud.config.server.default-profile

default

Default application profile when incoming requests do not have a specific one.

spring.cloud.config.server.encrypt.enabled

true

Enable decryption of environment properties before sending to client.

spring.cloud.config.server.git.basedir

 

Base directory for local working copy of repository.

spring.cloud.config.server.git.clone-on-start

false

Flag to indicate that the repository should be cloned on startup (not on demand). Generally leads to slower startup but faster first query.

spring.cloud.config.server.git.default-label

 

The default label to be used with the remore repository

spring.cloud.config.server.git.delete-untracked-branches

false

Flag to indicate that the branch should be deleted locally if it’s origin tracked branch was removed.

spring.cloud.config.server.git.force-pull

false

Flag to indicate that the repository should force pull. If true discard any local changes and take from remote repository.

spring.cloud.config.server.git.host-key

 

Valid SSH host key. Must be set if hostKeyAlgorithm is also set.

spring.cloud.config.server.git.host-key-algorithm

 

One of ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, or ecdsa-sha2-nistp521. Must be set if hostKey is also set.

spring.cloud.config.server.git.ignore-local-ssh-settings

false

If true, use property-based instead of file-based SSH config.

spring.cloud.config.server.git.known-hosts-file

 

Location of custom .known_hosts file.

spring.cloud.config.server.git.order

 

The order of the environment repository.

spring.cloud.config.server.git.passphrase

 

Passphrase for unlocking your ssh private key.

spring.cloud.config.server.git.password

 

Password for authentication with remote repository.

spring.cloud.config.server.git.preferred-authentications

 

Override server authentication method order. This should allow for evading login prompts if server has keyboard-interactive authentication before the publickey method.

spring.cloud.config.server.git.private-key

 

Valid SSH private key. Must be set if ignoreLocalSshSettings is true and Git URI is SSH format.

spring.cloud.config.server.git.proxy

 

HTTP proxy configuration.

spring.cloud.config.server.git.refresh-rate

0

Time (in seconds) between refresh of the git repository

spring.cloud.config.server.git.repos

 

Map of repository identifier to location and other properties.

spring.cloud.config.server.git.search-paths

 

Search paths to use within local working copy. By default searches only the root.

spring.cloud.config.server.git.skip-ssl-validation

false

Flag to indicate that SSL certificate validation should be bypassed when communicating with a repository served over an HTTPS connection.

spring.cloud.config.server.git.strict-host-key-checking

true

If false, ignore errors with host key

spring.cloud.config.server.git.timeout

5

Timeout (in seconds) for obtaining HTTP or SSH connection (if applicable), defaults to 5 seconds.

spring.cloud.config.server.git.uri

 

URI of remote repository.

spring.cloud.config.server.git.username

 

Username for authentication with remote repository.

spring.cloud.config.server.health.repositories

  

spring.cloud.config.server.jdbc.order

0

 

spring.cloud.config.server.jdbc.sql

SELECT KEY, VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?

SQL used to query database for keys and values

spring.cloud.config.server.native.add-label-locations

true

Flag to determine whether label locations should be added.

spring.cloud.config.server.native.default-label

master

 

spring.cloud.config.server.native.fail-on-error

false

Flag to determine how to handle exceptions during decryption (default false).

spring.cloud.config.server.native.order

  

spring.cloud.config.server.native.search-locations

[]

Locations to search for configuration files. Defaults to the same as a Spring Boot app so [classpath:/,classpath:/config/,file:./,file:./config/].

spring.cloud.config.server.native.version

 

Version string to be reported for native repository

spring.cloud.config.server.overrides

 

Extra map for a property source to be sent to all clients unconditionally.

spring.cloud.config.server.prefix

 

Prefix for configuration resource paths (default is empty). Useful when embedding in another application when you don’t want to change the context path or servlet path.

spring.cloud.config.server.strip-document-from-yaml

true

Flag to indicate that YAML documents that are text or collections (not a map) should be returned in "native" form.

spring.cloud.config.server.svn.basedir

 

Base directory for local working copy of repository.

spring.cloud.config.server.svn.default-label

 

The default label to be used with the remore repository

spring.cloud.config.server.svn.order

 

The order of the environment repository.

spring.cloud.config.server.svn.passphrase

 

Passphrase for unlocking your ssh private key.

spring.cloud.config.server.svn.password

 

Password for authentication with remote repository.

spring.cloud.config.server.svn.search-paths

 

Search paths to use within local working copy. By default searches only the root.

spring.cloud.config.server.svn.strict-host-key-checking

true

Reject incoming SSH host keys from remote servers not in the known host list.

spring.cloud.config.server.svn.uri

 

URI of remote repository.

spring.cloud.config.server.svn.username

 

Username for authentication with remote repository.

spring.cloud.config.server.vault.backend

secret

Vault backend. Defaults to secret.

spring.cloud.config.server.vault.default-key

application

The key in vault shared by all applications. Defaults to application. Set to empty to disable.

spring.cloud.config.server.vault.host

127.0.0.1

Vault host. Defaults to 127.0.0.1.

spring.cloud.config.server.vault.kv-version

1

Value to indicate which version of Vault kv backend is used. Defaults to 1.

spring.cloud.config.server.vault.order

  

spring.cloud.config.server.vault.port

8200

Vault port. Defaults to 8200.

spring.cloud.config.server.vault.profile-separator

,

Vault profile separator. Defaults to comma.

spring.cloud.config.server.vault.proxy

 

HTTP proxy configuration.

spring.cloud.config.server.vault.scheme

http

Vault scheme. Defaults to http.

spring.cloud.config.server.vault.skip-ssl-validation

false

Flag to indicate that SSL certificate validation should be bypassed when communicating with a repository served over an HTTPS connection.

spring.cloud.config.server.vault.timeout

5

Timeout (in seconds) for obtaining HTTP connection, defaults to 5 seconds.

spring.cloud.config.token

 

Security Token passed thru to underlying environment repository.

spring.cloud.config.uri

[http://localhost:8888]

The URI of the remote server (default http://localhost:8888).

spring.cloud.config.username

 

The username to use (HTTP Basic) when contacting the remote server.

spring.cloud.consul.config.acl-token

  

spring.cloud.consul.config.data-key

data

If format is Format.PROPERTIES or Format.YAML then the following field is used as key to look up consul for configuration.

spring.cloud.consul.config.default-context

application

 

spring.cloud.consul.config.enabled

true

 

spring.cloud.consul.config.fail-fast

true

Throw exceptions during config lookup if true, otherwise, log warnings.

spring.cloud.consul.config.format

  

spring.cloud.consul.config.name

 

Alternative to spring.application.name to use in looking up values in consul KV.

spring.cloud.consul.config.prefix

config

 

spring.cloud.consul.config.profile-separator

,

 

spring.cloud.consul.config.watch.delay

1000

The value of the fixed delay for the watch in millis. Defaults to 1000.

spring.cloud.consul.config.watch.enabled

true

If the watch is enabled. Defaults to true.

spring.cloud.consul.config.watch.wait-time

55

The number of seconds to wait (or block) for watch query, defaults to 55. Needs to be less than default ConsulClient (defaults to 60). To increase ConsulClient timeout create a ConsulClient bean with a custom ConsulRawClient with a custom HttpClient.

spring.cloud.consul.discovery.acl-token

  

spring.cloud.consul.discovery.catalog-services-watch-delay

1000

The delay between calls to watch consul catalog in millis, default is 1000.

spring.cloud.consul.discovery.catalog-services-watch-timeout

2

The number of seconds to block while watching consul catalog, default is 2.

spring.cloud.consul.discovery.datacenters

 

Map of serviceId’s → datacenter to query for in server list. This allows looking up services in another datacenters.

spring.cloud.consul.discovery.default-query-tag

 

Tag to query for in service list if one is not listed in serverListQueryTags.

spring.cloud.consul.discovery.default-zone-metadata-name

zone

Service instance zone comes from metadata. This allows changing the metadata tag name.

spring.cloud.consul.discovery.deregister

true

Disable automatic de-registration of service in consul.

spring.cloud.consul.discovery.enabled

true

Is service discovery enabled?

spring.cloud.consul.discovery.fail-fast

true

Throw exceptions during service registration if true, otherwise, log warnings (defaults to true).

spring.cloud.consul.discovery.health-check-critical-timeout

 

Timeout to deregister services critical for longer than timeout (e.g. 30m). Requires consul version 7.x or higher.

spring.cloud.consul.discovery.health-check-headers

 

Headers to be applied to the Health Check calls

spring.cloud.consul.discovery.health-check-interval

10s

How often to perform the health check (e.g. 10s), defaults to 10s.

spring.cloud.consul.discovery.health-check-path

/actuator/health

Alternate server path to invoke for health checking

spring.cloud.consul.discovery.health-check-timeout

 

Timeout for health check (e.g. 10s).

spring.cloud.consul.discovery.health-check-tls-skip-verify

 

Skips certificate verification during service checks if true, otherwise runs certificate verification.

spring.cloud.consul.discovery.health-check-url

 

Custom health check url to override default

spring.cloud.consul.discovery.heartbeat.enabled

false

 

spring.cloud.consul.discovery.heartbeat.interval-ratio

  

spring.cloud.consul.discovery.heartbeat.ttl-unit

s

 

spring.cloud.consul.discovery.heartbeat.ttl-value

30

 

spring.cloud.consul.discovery.hostname

 

Hostname to use when accessing server

spring.cloud.consul.discovery.instance-group

 

Service instance group

spring.cloud.consul.discovery.instance-id

 

Unique service instance id

spring.cloud.consul.discovery.instance-zone

 

Service instance zone

spring.cloud.consul.discovery.ip-address

 

IP address to use when accessing service (must also set preferIpAddress to use)

spring.cloud.consul.discovery.lifecycle.enabled

true

 

spring.cloud.consul.discovery.management-port

 

Port to register the management service under (defaults to management port)

spring.cloud.consul.discovery.management-suffix

management

Suffix to use when registering management service

spring.cloud.consul.discovery.management-tags

 

Tags to use when registering management service

spring.cloud.consul.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.consul.discovery.port

 

Port to register the service under (defaults to listening port)

spring.cloud.consul.discovery.prefer-agent-address

false

Source of how we will determine the address to use

spring.cloud.consul.discovery.prefer-ip-address

false

Use ip address rather than hostname during registration

spring.cloud.consul.discovery.query-passing

false

Add the 'passing` parameter to /v1/health/service/serviceName. This pushes health check passing to the server.

spring.cloud.consul.discovery.register

true

Register as a service in consul.

spring.cloud.consul.discovery.register-health-check

true

Register health check in consul. Useful during development of a service.

spring.cloud.consul.discovery.scheme

http

Whether to register an http or https service

spring.cloud.consul.discovery.server-list-query-tags

 

Map of serviceId’s → tag to query for in server list. This allows filtering services by a single tag.

spring.cloud.consul.discovery.service-name

 

Service name

spring.cloud.consul.discovery.tags

 

Tags to use when registering service

spring.cloud.consul.enabled

true

Is spring cloud consul enabled

spring.cloud.consul.host

localhost

Consul agent hostname. Defaults to 'localhost'.

spring.cloud.consul.port

8500

Consul agent port. Defaults to '8500'.

spring.cloud.consul.retry.initial-interval

1000

Initial retry interval in milliseconds.

spring.cloud.consul.retry.max-attempts

6

Maximum number of attempts.

spring.cloud.consul.retry.max-interval

2000

Maximum interval for backoff.

spring.cloud.consul.retry.multiplier

1.1

Multiplier for next interval.

spring.cloud.consul.scheme

 

Consul agent scheme (HTTP/HTTPS). If there is no scheme in address - client will use HTTP.

spring.cloud.consul.tls.certificate-password

 

Password to open the certificate.

spring.cloud.consul.tls.certificate-path

 

File path to the certificate.

spring.cloud.consul.tls.key-store-instance-type

 

Type of key framework to use.

spring.cloud.consul.tls.key-store-password

 

Password to an external keystore

spring.cloud.consul.tls.key-store-path

 

Path to an external keystore

spring.cloud.discovery.client.cloudfoundry.order

  

spring.cloud.discovery.client.composite-indicator.enabled

true

Enables discovery client composite health indicator.

spring.cloud.discovery.client.health-indicator.enabled

true

 

spring.cloud.discovery.client.health-indicator.include-description

false

 

spring.cloud.discovery.client.simple.instances

  

spring.cloud.discovery.client.simple.local.instance-id

 

The unique identifier or name for the service instance.

spring.cloud.discovery.client.simple.local.metadata

 

Metadata for the service instance. Can be used by discovery clients to modify their behaviour per instance, e.g. when load balancing.

spring.cloud.discovery.client.simple.local.service-id

 

The identifier or name for the service. Multiple instances might share the same service ID.

spring.cloud.discovery.client.simple.local.uri

 

The URI of the service instance. Will be parsed to extract the scheme, host, and port.

spring.cloud.discovery.client.simple.order

  

spring.cloud.discovery.enabled

true

Enables discovery client health indicators.

spring.cloud.features.enabled

true

Enables the features endpoint.

spring.cloud.function.compile

 

Configuration for function bodies, which will be compiled. The key in the map is the function name and the value is a map containing a key "lambda" which is the body to compile, and optionally a "type" (defaults to "function"). Can also contain "inputType" and "outputType" in case it is ambiguous.

spring.cloud.function.imports

 

Configuration for a set of files containing function bodies, which will be imported and compiled. The key in the map is the function name and the value is another map, containing a "location" of the file to compile and (optionally) a "type" (defaults to "function").

spring.cloud.function.task.consumer

  

spring.cloud.function.task.function

  

spring.cloud.function.task.supplier

  

spring.cloud.function.web.path

 

Path to web resources for functions (should start with / if not empty).

spring.cloud.function.web.supplier.auto-startup

true

 

spring.cloud.function.web.supplier.debug

true

 

spring.cloud.function.web.supplier.enabled

false

 

spring.cloud.function.web.supplier.headers

  

spring.cloud.function.web.supplier.name

  

spring.cloud.function.web.supplier.template-url

  

spring.cloud.gateway.default-filters

 

List of filter definitions that are applied to every route.

spring.cloud.gateway.discovery.locator.enabled

false

Flag that enables DiscoveryClient gateway integration

spring.cloud.gateway.discovery.locator.filters

  

spring.cloud.gateway.discovery.locator.include-expression

true

SpEL expression that will evaluate whether to include a service in gateway integration or not, defaults to: true

spring.cloud.gateway.discovery.locator.lower-case-service-id

false

Option to lower case serviceId in predicates and filters, defaults to false. Useful with eureka when it automatically uppercases serviceId. so MYSERIVCE, would match /myservice/**

spring.cloud.gateway.discovery.locator.predicates

  

spring.cloud.gateway.discovery.locator.route-id-prefix

 

The prefix for the routeId, defaults to discoveryClient.getClass().getSimpleName() + "_". Service Id will be appended to create the routeId.

spring.cloud.gateway.discovery.locator.url-expression

'lb://'+serviceId

SpEL expression that create the uri for each route, defaults to: 'lb://'+serviceId

spring.cloud.gateway.enabled

true

Enables gateway functionality.

spring.cloud.gateway.filter.remove-hop-by-hop.headers

  

spring.cloud.gateway.filter.remove-hop-by-hop.order

  

spring.cloud.gateway.filter.secure-headers.content-security-policy

default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline'

 

spring.cloud.gateway.filter.secure-headers.content-type-options

nosniff

 

spring.cloud.gateway.filter.secure-headers.download-options

noopen

 

spring.cloud.gateway.filter.secure-headers.frame-options

DENY

 

spring.cloud.gateway.filter.secure-headers.permitted-cross-domain-policies

none

 

spring.cloud.gateway.filter.secure-headers.referrer-policy

no-referrer

 

spring.cloud.gateway.filter.secure-headers.strict-transport-security

max-age=631138519

 

spring.cloud.gateway.filter.secure-headers.xss-protection-header

1 ; mode=block

 

spring.cloud.gateway.forwarded.enabled

true

Enables the ForwardedHeadersFilter.

spring.cloud.gateway.globalcors.cors-configurations

  

spring.cloud.gateway.httpclient.connect-timeout

 

The connect timeout in millis, the default is 45s.

spring.cloud.gateway.httpclient.pool.acquire-timeout

 

Only for type FIXED, the maximum time in millis to wait for aquiring.

spring.cloud.gateway.httpclient.pool.max-connections

 

Only for type FIXED, the maximum number of connections before starting pending acquisition on existing ones.

spring.cloud.gateway.httpclient.pool.name

proxy

The channel pool map name, defaults to proxy.

spring.cloud.gateway.httpclient.pool.type

 

Type of pool for HttpClient to use, defaults to ELASTIC.

spring.cloud.gateway.httpclient.proxy.host

 

Hostname for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.non-proxy-hosts-pattern

 

Regular expression (Java) for a configured list of hosts that should be reached directly, bypassing the proxy

spring.cloud.gateway.httpclient.proxy.password

 

Password for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.port

 

Port for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.username

 

Username for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.response-timeout

 

The response timeout.

spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout

3000ms

SSL close_notify flush timeout. Default to 3000 ms.

spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout

 

SSL close_notify read timeout. Default to 0 ms.

spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.default-configuration-type

 

The default ssl configuration type. Defaults to TCP.

spring.cloud.gateway.httpclient.ssl.handshake-timeout

10000ms

SSL handshake timeout. Default to 10000 ms

spring.cloud.gateway.httpclient.ssl.handshake-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.trusted-x509-certificates

 

Trusted certificates for verifying the remote endpoint’s certificate.

spring.cloud.gateway.httpclient.ssl.use-insecure-trust-manager

false

Installs the netty InsecureTrustManagerFactory. This is insecure and not suitable for production.

spring.cloud.gateway.metrics.enabled

false

Enables the collection of metrics data.

spring.cloud.gateway.proxy.headers

 

Fixed header values that will be added to all downstream requests.

spring.cloud.gateway.proxy.sensitive

 

A set of sensitive header names that will not be sent downstream by default.

spring.cloud.gateway.redis-rate-limiter.burst-capacity-header

X-RateLimit-Burst-Capacity

The name of the header that returns the burst capacity configuration.

spring.cloud.gateway.redis-rate-limiter.config

  

spring.cloud.gateway.redis-rate-limiter.include-headers

true

Whether or not to include headers containing rate limiter information, defaults to true.

spring.cloud.gateway.redis-rate-limiter.remaining-header

X-RateLimit-Remaining

The name of the header that returns number of remaining requests during the current second.

spring.cloud.gateway.redis-rate-limiter.replenish-rate-header

X-RateLimit-Replenish-Rate

The name of the header that returns the replenish rate configuration.

spring.cloud.gateway.routes

 

List of Routes

spring.cloud.gateway.streaming-media-types

  

spring.cloud.gateway.x-forwarded.enabled

true

If the XForwardedHeadersFilter is enabled.

spring.cloud.gateway.x-forwarded.for-append

true

If appending X-Forwarded-For as a list is enabled.

spring.cloud.gateway.x-forwarded.for-enabled

true

If X-Forwarded-For is enabled.

spring.cloud.gateway.x-forwarded.host-append

true

If appending X-Forwarded-Host as a list is enabled.

spring.cloud.gateway.x-forwarded.host-enabled

true

If X-Forwarded-Host is enabled.

spring.cloud.gateway.x-forwarded.order

0

The order of the XForwardedHeadersFilter.

spring.cloud.gateway.x-forwarded.port-append

true

If appending X-Forwarded-Port as a list is enabled.

spring.cloud.gateway.x-forwarded.port-enabled

true

If X-Forwarded-Port is enabled.

spring.cloud.gateway.x-forwarded.prefix-append

true

If appending X-Forwarded-Prefix as a list is enabled.

spring.cloud.gateway.x-forwarded.prefix-enabled

true

If X-Forwarded-Prefix is enabled.

spring.cloud.gateway.x-forwarded.proto-append

true

If appending X-Forwarded-Proto as a list is enabled.

spring.cloud.gateway.x-forwarded.proto-enabled

true

If X-Forwarded-Proto is enabled.

spring.cloud.httpclientfactories.apache.enabled

true

Enables creation of Apache Http Client factory beans.

spring.cloud.httpclientfactories.ok.enabled

true

Enables creation of OK Http Client factory beans.

spring.cloud.hypermedia.refresh.fixed-delay

5000

 

spring.cloud.hypermedia.refresh.initial-delay

10000

 

spring.cloud.inetutils.default-hostname

localhost

The default hostname. Used in case of errors.

spring.cloud.inetutils.default-ip-address

127.0.0.1

The default IP address. Used in case of errors.

spring.cloud.inetutils.ignored-interfaces

 

List of Java regular expressions for network interfaces that will be ignored.

spring.cloud.inetutils.preferred-networks

 

List of Java regular expressions for network addresses that will be preferred.

spring.cloud.inetutils.timeout-seconds

1

Timeout, in seconds, for calculating hostname.

spring.cloud.inetutils.use-only-site-local-interfaces

false

Whether to use only interfaces with site local addresses. See {@link InetAddress#isSiteLocalAddress()} for more details.

spring.cloud.loadbalancer.retry.enabled

true

 

spring.cloud.refresh.enabled

true

Enables autoconfiguration for the refresh scope and associated features.

spring.cloud.refresh.extra-refreshable

true

Additional class names for beans to post process into refresh scope.

spring.cloud.service-registry.auto-registration.enabled

true

Whether service auto-registration is enabled. Defaults to true.

spring.cloud.service-registry.auto-registration.fail-fast

false

Whether startup fails if there is no AutoServiceRegistration. Defaults to false.

spring.cloud.service-registry.auto-registration.register-management

true

Whether to register the management as a service. Defaults to true.

spring.cloud.stream.binders

 

Additional per-binder properties (see {@link BinderProperties}) if more then one binder of the same type is used (i.e., connect to multiple instances of RabbitMq). Here you can specify multiple binder configurations, each with different environment settings. For example; spring.cloud.stream.binders.rabbit1.environment. . . , spring.cloud.stream.binders.rabbit2.environment. . .

spring.cloud.stream.binding-retry-interval

30

Retry interval (in seconds) used to schedule binding attempts. Default: 30 sec.

spring.cloud.stream.bindings

 

Additional binding properties (see {@link BinderProperties}) per binding name (e.g., 'input`). For example; This sets the content-type for the 'input' binding of a Sink application: 'spring.cloud.stream.bindings.input.contentType=text/plain'

spring.cloud.stream.consul.binder.event-timeout

5

 

spring.cloud.stream.default-binder

 

The name of the binder to use by all bindings in the event multiple binders available (e.g., 'rabbit');

spring.cloud.stream.dynamic-destinations

[]

A list of destinations that can be bound dynamically. If set, only listed destinations can be bound.

spring.cloud.stream.function.definition

 

Definition of functions to bind. If several functions need to be composed into one, use pipes (e.g., 'fooFunc

barFunc')

spring.cloud.stream.instance-count

1

The number of deployed instances of an application. Default: 1. NOTE: Could also be managed per individual binding "spring.cloud.stream.bindings.foo.consumer.instance-count" where 'foo' is the name of the binding.

spring.cloud.stream.instance-index

0

The instance id of the application: a number from 0 to instanceCount-1. Used for partitioning and with Kafka. NOTE: Could also be managed per individual binding "spring.cloud.stream.bindings.foo.consumer.instance-index" where 'foo' is the name of the binding.

spring.cloud.stream.integration.message-handler-not-propagated-headers

 

Message header names that will NOT be copied from the inbound message.

spring.cloud.stream.kafka.binder.auto-add-partitions

false

 

spring.cloud.stream.kafka.binder.auto-create-topics

true

 

spring.cloud.stream.kafka.binder.brokers

[localhost]

 

spring.cloud.stream.kafka.binder.configuration

 

Arbitrary kafka properties that apply to both producers and consumers.

spring.cloud.stream.kafka.binder.consumer-properties

 

Arbitrary kafka consumer properties.

spring.cloud.stream.kafka.binder.fetch-size

0

 

spring.cloud.stream.kafka.binder.header-mapper-bean-name

 

The bean name of a custom header mapper to use instead of a {@link org.springframework.kafka.support.DefaultKafkaHeaderMapper}.

spring.cloud.stream.kafka.binder.headers

[]

 

spring.cloud.stream.kafka.binder.health-timeout

60

Time to wait to get partition information in seconds; default 60.

spring.cloud.stream.kafka.binder.jaas

 
 

spring.cloud.stream.kafka.binder.max-wait

100

 

spring.cloud.stream.kafka.binder.min-partition-count

1

 

spring.cloud.stream.kafka.binder.offset-update-count

0

 

spring.cloud.stream.kafka.binder.offset-update-shutdown-timeout

2000

 

spring.cloud.stream.kafka.binder.offset-update-time-window

10000

 

spring.cloud.stream.kafka.binder.producer-properties

 

Arbitrary kafka producer properties.

spring.cloud.stream.kafka.binder.queue-size

8192

 

spring.cloud.stream.kafka.binder.replication-factor

1

 

spring.cloud.stream.kafka.binder.required-acks

1

 

spring.cloud.stream.kafka.binder.socket-buffer-size

2097152

 

spring.cloud.stream.kafka.binder.transaction.producer.admin

 
 

spring.cloud.stream.kafka.binder.transaction.producer.batch-timeout

 
 

spring.cloud.stream.kafka.binder.transaction.producer.buffer-size

 
 

spring.cloud.stream.kafka.binder.transaction.producer.compression-type

 
 

spring.cloud.stream.kafka.binder.transaction.producer.configuration

 
 

spring.cloud.stream.kafka.binder.transaction.producer.error-channel-enabled

 
 

spring.cloud.stream.kafka.binder.transaction.producer.header-mode

 
 

spring.cloud.stream.kafka.binder.transaction.producer.header-patterns

 
 

spring.cloud.stream.kafka.binder.transaction.producer.message-key-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-count

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-key-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-key-extractor-name

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-selector-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-selector-name

 
 

spring.cloud.stream.kafka.binder.transaction.producer.required-groups

 
 

spring.cloud.stream.kafka.binder.transaction.producer.sync

 
 

spring.cloud.stream.kafka.binder.transaction.producer.use-native-encoding

 
 

spring.cloud.stream.kafka.binder.transaction.transaction-id-prefix

 
 

spring.cloud.stream.kafka.binder.zk-connection-timeout

10000

ZK Connection timeout in milliseconds.

spring.cloud.stream.kafka.binder.zk-nodes

[localhost]

 

spring.cloud.stream.kafka.binder.zk-session-timeout

10000

ZK session timeout in milliseconds.

spring.cloud.stream.kafka.bindings

 
 

spring.cloud.stream.kafka.streams.binder.application-id

 
 

spring.cloud.stream.kafka.streams.binder.auto-add-partitions

 
 

spring.cloud.stream.kafka.streams.binder.auto-create-topics

 
 

spring.cloud.stream.kafka.streams.binder.brokers

 
 

spring.cloud.stream.kafka.streams.binder.configuration

 
 

spring.cloud.stream.kafka.streams.binder.consumer-properties

 
 

spring.cloud.stream.kafka.streams.binder.fetch-size

 
 

spring.cloud.stream.kafka.streams.binder.header-mapper-bean-name

 
 

spring.cloud.stream.kafka.streams.binder.headers

 
 

spring.cloud.stream.kafka.streams.binder.health-timeout

 
 

spring.cloud.stream.kafka.streams.binder.jaas

 
 

spring.cloud.stream.kafka.streams.binder.max-wait

 
 

spring.cloud.stream.kafka.streams.binder.min-partition-count

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-count

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-shutdown-timeout

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-time-window

 
 

spring.cloud.stream.kafka.streams.binder.producer-properties

 
 

spring.cloud.stream.kafka.streams.binder.queue-size

 
 

spring.cloud.stream.kafka.streams.binder.replication-factor

 
 

spring.cloud.stream.kafka.streams.binder.required-acks

 
 

spring.cloud.stream.kafka.streams.binder.serde-error

 

{@link org.apache.kafka.streams.errors.DeserializationExceptionHandler} to use when there is a Serde error. {@link KafkaStreamsBinderConfigurationProperties.SerdeError} values are used to provide the exception handler on consumer binding.

spring.cloud.stream.kafka.streams.binder.socket-buffer-size

 
 

spring.cloud.stream.kafka.streams.binder.zk-connection-timeout

 
 

spring.cloud.stream.kafka.streams.binder.zk-nodes

 
 

spring.cloud.stream.kafka.streams.binder.zk-session-timeout

 
 

spring.cloud.stream.kafka.streams.bindings

 
 

spring.cloud.stream.kafka.streams.time-window.advance-by

0

 

spring.cloud.stream.kafka.streams.time-window.length

0

 

spring.cloud.stream.metrics.export-properties

 

List of properties that are going to be appended to each message. This gets populate by onApplicationEvent, once the context refreshes to avoid overhead of doing per message basis.

spring.cloud.stream.metrics.key

 

The name of the metric being emitted. Should be an unique value per application. Defaults to: ${spring.application.name:${vcap.application.name:${spring.config.name:application}}}

spring.cloud.stream.metrics.meter-filter

 

Pattern to control the 'meters' one wants to capture. By default all 'meters' will be captured. For example, 'spring.integration.*' will only capture metric information for meters whose name starts with 'spring.integration'.

spring.cloud.stream.metrics.properties

 

Application properties that should be added to the metrics payload For example: spring.application**

spring.cloud.stream.metrics.schedule-interval

60s

Interval expressed as Duration for scheduling metrics snapshots publishing. Defaults to 60 seconds

spring.cloud.stream.override-cloud-connectors

false

This property is only applicable when the cloud profile is active and Spring Cloud Connectors are provided with the application. If the property is false (the default), the binder detects a suitable bound service (for example, a RabbitMQ service bound in Cloud Foundry for the RabbitMQ binder) and uses it for creating connections (usually through Spring Cloud Connectors). When set to true, this property instructs binders to completely ignore the bound services and rely on Spring Boot properties (for example, relying on the spring.rabbitmq.* properties provided in the environment for the RabbitMQ binder). The typical usage of this property is to be nested in a customized environment when connecting to multiple systems.

spring.cloud.stream.rabbit.binder.admin-addresses

[]

Urls for management plugins; only needed for queue affinity.

spring.cloud.stream.rabbit.binder.admin-adresses

 
 

spring.cloud.stream.rabbit.binder.compression-level

0

Compression level for compressed bindings; see 'java.util.zip.Deflator'.

spring.cloud.stream.rabbit.binder.connection-name-prefix

 

Prefix for connection names from this binder.

spring.cloud.stream.rabbit.binder.nodes

[]

Cluster member node names; only needed for queue affinity.

spring.cloud.stream.rabbit.bindings

 
 

spring.cloud.stream.schema-registry-client.cached

false

 

spring.cloud.stream.schema-registry-client.endpoint

 
 

spring.cloud.stream.schema.avro.dynamic-schema-generation-enabled

false

 

spring.cloud.stream.schema.avro.prefix

vnd

 

spring.cloud.stream.schema.avro.reader-schema

 
 

spring.cloud.stream.schema.avro.schema-imports

 

A list of files or directories that should be loaded first thus making them importable by subsequent schemas. Note that imported files should not reference each other. @parameter

spring.cloud.stream.schema.avro.schema-locations

 

The source directory of Apache Avro schema. This schema is used by this converter. If this schema depends on other schemas consider defining those those dependent ones in the {@link #schemaImports} @parameter

spring.cloud.stream.schema.server.allow-schema-deletion

false

Boolean flag to enable/disable schema deletion.

spring.cloud.stream.schema.server.path

 

Prefix for configuration resource paths (default is empty). Useful when embedding in another application when you don’t want to change the context path or servlet path.

spring.cloud.task.batch.command-line-runner-order

0

The order for the {@code CommandLineRunner} used to run batch jobs when {@code spring.cloud.task.batch.fail-on-job-failure=true}. Defaults to 0 (same as the {@link org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner}).

spring.cloud.task.batch.events.chunk-order

 

Properties for chunk listener order

spring.cloud.task.batch.events.chunk.enabled

true

This property is used to determine if a task should listen for batch chunk events.

spring.cloud.task.batch.events.enabled

true

This property is used to determine if a task should listen for batch events.

spring.cloud.task.batch.events.item-process-order

 

Properties for itemProcess listener order

spring.cloud.task.batch.events.item-process.enabled

true

This property is used to determine if a task should listen for batch item processed events.

spring.cloud.task.batch.events.item-read-order

 

Properties for itemRead listener order

spring.cloud.task.batch.events.item-read.enabled

true

This property is used to determine if a task should listen for batch item read events.

spring.cloud.task.batch.events.item-write-order

 

Properties for itemWrite listener order

spring.cloud.task.batch.events.item-write.enabled

true

This property is used to determine if a task should listen for batch item write events.

spring.cloud.task.batch.events.job-execution-order

 

Properties for jobExecution listener order

spring.cloud.task.batch.events.job-execution.enabled

true

This property is used to determine if a task should listen for batch job execution events.

spring.cloud.task.batch.events.skip-order

 

Properties for skip listener order

spring.cloud.task.batch.events.skip.enabled

true

This property is used to determine if a task should listen for batch skip events.

spring.cloud.task.batch.events.step-execution-order

 

Properties for stepExecution listener order

spring.cloud.task.batch.events.step-execution.enabled

true

This property is used to determine if a task should listen for batch step execution events.

spring.cloud.task.batch.fail-on-job-failure

false

This property is used to determine if a task app should return with a non zero exit code if a batch job fails.

spring.cloud.task.batch.fail-on-job-failure-poll-interval

5000

Fixed delay in milliseconds that Spring Cloud Task will wait when checking if {@link org.springframework.batch.core.JobExecution}s have completed, when spring.cloud.task.batch.failOnJobFailure is set to true. Defaults to 5000.

spring.cloud.task.batch.fail-on-job-failurewait-time

0

Maximum wait time in milliseconds that Spring Cloud Task will wait for tasks to complete when spring.cloud.task.batch.failOnJobFailure is set to true. Defaults to 0. 0 indicates no wait time is enforced.

spring.cloud.task.batch.job-names

 

Comma-separated list of job names to execute on startup (for instance, job1,job2). By default, all Jobs found in the context are executed.

spring.cloud.task.batch.listener.enabled

true

This property is used to determine if a task will be linked to the batch jobs that are run.

spring.cloud.task.closecontext-enabled

false

When set to true the context is closed at the end of the task. Else the context remains open.

spring.cloud.task.events.enabled

true

This property is used to determine if a task app should emit task events.

spring.cloud.task.executionid

 

An id that will be used by the task when updating the task execution.

spring.cloud.task.external-execution-id

 

An id that can be associated with a task.

spring.cloud.task.parent-execution-id

 

The id of the parent task execution id that launched this task execution. Defaults to null if task execution had no parent.

spring.cloud.task.single-instance-enabled

false

This property is used to determine if a task will execute if another task with the same app name is running.

spring.cloud.task.single-instance-lock-check-interval

500

Declares the time (in millis) that a task execution will wait between checks. Default time is: 500 millis.

spring.cloud.task.single-instance-lock-ttl

 

Declares the maximum amount of time (in millis) that a task execution can hold a lock to prevent another task from executing with a specific task name when the single-instance-enabled is set to true. Default time is: Integer.MAX_VALUE.

spring.cloud.task.table-prefix

TASK_

The prefix to append to the table names created by Spring Cloud Task.

spring.cloud.util.enabled

true

Enables creation of Spring Cloud utility beans.

spring.cloud.vault.app-id.app-id-path

app-id

Mount path of the AppId authentication backend.

spring.cloud.vault.app-id.network-interface

 

Network interface hint for the "MAC_ADDRESS" UserId mechanism.

spring.cloud.vault.app-id.user-id

MAC_ADDRESS

UserId mechanism. Can be either "MAC_ADDRESS", "IP_ADDRESS", a string or a class name.

spring.cloud.vault.app-role.app-role-path

approle

Mount path of the AppRole authentication backend.

spring.cloud.vault.app-role.role

 

Name of the role, optional, used for pull-mode.

spring.cloud.vault.app-role.role-id

 

The RoleId.

spring.cloud.vault.app-role.secret-id

 

The SecretId.

spring.cloud.vault.application-name

application

Application name for AppId authentication.

spring.cloud.vault.authentication

 
 

spring.cloud.vault.aws-ec2.aws-ec2-path

aws-ec2

Mount path of the AWS-EC2 authentication backend.

spring.cloud.vault.aws-ec2.identity-document

http://169.254.169.254/latest/dynamic/instance-identity/pkcs7

URL of the AWS-EC2 PKCS7 identity document.

spring.cloud.vault.aws-ec2.nonce

 

Nonce used for AWS-EC2 authentication. An empty nonce defaults to nonce generation.

spring.cloud.vault.aws-ec2.role

 

Name of the role, optional.

spring.cloud.vault.aws-iam.aws-path

aws

Mount path of the AWS authentication backend.

spring.cloud.vault.aws-iam.role

 

Name of the role, optional. Defaults to the friendly IAM name if not set.

spring.cloud.vault.aws-iam.server-name

 

Name of the server used to set {@code X-Vault-AWS-IAM-Server-ID} header in the headers of login requests.

spring.cloud.vault.aws.access-key-property

cloud.aws.credentials.accessKey

Target property for the obtained access key.

spring.cloud.vault.aws.backend

aws

aws backend path.

spring.cloud.vault.aws.enabled

false

Enable aws backend usage.

spring.cloud.vault.aws.role

 

Role name for credentials.

spring.cloud.vault.aws.secret-key-property

cloud.aws.credentials.secretKey

Target property for the obtained secret key.

spring.cloud.vault.azure-msi.azure-path

azure

Mount path of the Azure MSI authentication backend.

spring.cloud.vault.azure-msi.role

 

Name of the role.

spring.cloud.vault.cassandra.backend

cassandra

Cassandra backend path.

spring.cloud.vault.cassandra.enabled

false

Enable cassandra backend usage.

spring.cloud.vault.cassandra.password-property

spring.data.cassandra.password

Target property for the obtained password.

spring.cloud.vault.cassandra.role

 

Role name for credentials.

spring.cloud.vault.cassandra.username-property

spring.data.cassandra.username

Target property for the obtained username.

spring.cloud.vault.config.lifecycle.enabled

true

Enable lifecycle management.

spring.cloud.vault.config.order

0

Used to set a {@link org.springframework.core.env.PropertySource} priority. This is useful to use Vault as an override on other property sources. @see org.springframework.core.PriorityOrdered

spring.cloud.vault.connection-timeout

5000

Connection timeout;

spring.cloud.vault.consul.backend

consul

Consul backend path.

spring.cloud.vault.consul.enabled

false

Enable consul backend usage.

spring.cloud.vault.consul.role

 

Role name for credentials.

spring.cloud.vault.consul.token-property

spring.cloud.consul.token

Target property for the obtained token.

spring.cloud.vault.database.backend

database

Database backend path.

spring.cloud.vault.database.enabled

false

Enable database backend usage.

spring.cloud.vault.database.password-property

spring.datasource.password

Target property for the obtained password.

spring.cloud.vault.database.role

 

Role name for credentials.

spring.cloud.vault.database.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.discovery.enabled

false

Flag to indicate that Vault server discovery is enabled (vault server URL will be looked up via discovery).

spring.cloud.vault.discovery.service-id

vault

Service id to locate Vault.

spring.cloud.vault.enabled

true

Enable Vault config server.

spring.cloud.vault.fail-fast

false

Fail fast if data cannot be obtained from Vault.

spring.cloud.vault.gcp-gce.gcp-path

gcp

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.gcp-gce.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.gcp-gce.service-account

 

Optional service account id. Using the default id if left unconfigured.

spring.cloud.vault.gcp-iam.credentials.encoded-key

 

The base64 encoded contents of an OAuth2 account private key in JSON format.

spring.cloud.vault.gcp-iam.credentials.location

 

Location of the OAuth2 credentials private key. <p> Since this is a Resource, the private key can be in a multitude of locations, such as a local file system, classpath, URL, etc.

spring.cloud.vault.gcp-iam.gcp-path

gcp

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.gcp-iam.jwt-validity

15m

Validity of the JWT token.

spring.cloud.vault.gcp-iam.project-id

 

Overrides the GCP project Id.

spring.cloud.vault.gcp-iam.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.gcp-iam.service-account-id

 

Overrides the GCP service account Id.

spring.cloud.vault.generic.application-name

application

Application name to be used for the context.

spring.cloud.vault.generic.backend

secret

Name of the default backend.

spring.cloud.vault.generic.default-context

application

Name of the default context.

spring.cloud.vault.generic.enabled

true

Enable the generic backend.

spring.cloud.vault.generic.profile-separator

/

Profile-separator to combine application name and profile.

spring.cloud.vault.host

localhost

Vault server host.

spring.cloud.vault.kubernetes.kubernetes-path

kubernetes

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.kubernetes.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.kubernetes.service-account-token-file

/var/run/secrets/kubernetes.io/serviceaccount/token

Path to the service account token file.

spring.cloud.vault.kv.application-name

application

Application name to be used for the context.

spring.cloud.vault.kv.backend

secret

Name of the default backend.

spring.cloud.vault.kv.backend-version

2

Key-Value backend version. Currently supported versions are: <ul> <li>Version 1 (unversioned key-value backend).</li> <li>Version 2 (versioned key-value backend).</li> </ul>

spring.cloud.vault.kv.default-context

application

Name of the default context.

spring.cloud.vault.kv.enabled

false

Enable the kev-value backend.

spring.cloud.vault.kv.profile-separator

/

Profile-separator to combine application name and profile.

spring.cloud.vault.mongodb.backend

mongodb

Cassandra backend path.

spring.cloud.vault.mongodb.enabled

false

Enable mongodb backend usage.

spring.cloud.vault.mongodb.password-property

spring.data.mongodb.password

Target property for the obtained password.

spring.cloud.vault.mongodb.role

 

Role name for credentials.

spring.cloud.vault.mongodb.username-property

spring.data.mongodb.username

Target property for the obtained username.

spring.cloud.vault.mysql.backend

mysql

mysql backend path.

spring.cloud.vault.mysql.enabled

false

Enable mysql backend usage.

spring.cloud.vault.mysql.password-property

spring.datasource.password

Target property for the obtained username.

spring.cloud.vault.mysql.role

 

Role name for credentials.

spring.cloud.vault.mysql.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.port

8200

Vault server port.

spring.cloud.vault.postgresql.backend

postgresql

postgresql backend path.

spring.cloud.vault.postgresql.enabled

false

Enable postgresql backend usage.

spring.cloud.vault.postgresql.password-property

spring.datasource.password

Target property for the obtained username.

spring.cloud.vault.postgresql.role

 

Role name for credentials.

spring.cloud.vault.postgresql.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.rabbitmq.backend

rabbitmq

rabbitmq backend path.

spring.cloud.vault.rabbitmq.enabled

false

Enable rabbitmq backend usage.

spring.cloud.vault.rabbitmq.password-property

spring.rabbitmq.password

Target property for the obtained password.

spring.cloud.vault.rabbitmq.role

 

Role name for credentials.

spring.cloud.vault.rabbitmq.username-property

spring.rabbitmq.username

Target property for the obtained username.

spring.cloud.vault.read-timeout

15000

Read timeout;

spring.cloud.vault.scheme

https

Protocol scheme. Can be either "http" or "https".

spring.cloud.vault.ssl.cert-auth-path

cert

Mount path of the TLS cert authentication backend.

spring.cloud.vault.ssl.key-store

 

Trust store that holds certificates and private keys.

spring.cloud.vault.ssl.key-store-password

 

Password used to access the key store.

spring.cloud.vault.ssl.trust-store

 

Trust store that holds SSL certificates.

spring.cloud.vault.ssl.trust-store-password

 

Password used to access the trust store.

spring.cloud.vault.token

 

Static vault token. Required if {@link #authentication} is {@code TOKEN}.

spring.cloud.vault.uri

 

Vault URI. Can be set with scheme, host and port.

spring.cloud.zookeeper.base-sleep-time-ms

50

Initial amount of time to wait between retries

spring.cloud.zookeeper.block-until-connected-unit

 

The unit of time related to blocking on connection to Zookeeper

spring.cloud.zookeeper.block-until-connected-wait

10

Wait time to block on connection to Zookeeper

spring.cloud.zookeeper.connect-string

localhost:2181

Connection string to the Zookeeper cluster

spring.cloud.zookeeper.default-health-endpoint

 

Default health endpoint that will be checked to verify that a dependency is alive

spring.cloud.zookeeper.dependencies

 

Mapping of alias to ZookeeperDependency. From Ribbon perspective the alias is actually serviceID since Ribbon can’t accept nested structures in serviceID

spring.cloud.zookeeper.dependency-configurations

 
 

spring.cloud.zookeeper.dependency-names

 
 

spring.cloud.zookeeper.discovery.enabled

true

 

spring.cloud.zookeeper.discovery.initial-status

 

The initial status of this instance (defaults to {@link StatusConstants#STATUS_UP}).

spring.cloud.zookeeper.discovery.instance-host

 

Predefined host with which a service can register itself in Zookeeper. Corresponds to the {code address} from the URI spec.

spring.cloud.zookeeper.discovery.instance-id

 

Id used to register with zookeeper. Defaults to a random UUID.

spring.cloud.zookeeper.discovery.instance-port

 

Port to register the service under (defaults to listening port)

spring.cloud.zookeeper.discovery.instance-ssl-port

 

Ssl port of the registered service.

spring.cloud.zookeeper.discovery.metadata

 

Gets the metadata name/value pairs associated with this instance. This information is sent to zookeeper and can be used by other instances.

spring.cloud.zookeeper.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.zookeeper.discovery.register

true

Register as a service in zookeeper.

spring.cloud.zookeeper.discovery.root

/services

Root Zookeeper folder in which all instances are registered

spring.cloud.zookeeper.discovery.uri-spec

{scheme}://{address}:{port}

The URI specification to resolve during service registration in Zookeeper

spring.cloud.zookeeper.enabled

true

Is Zookeeper enabled

spring.cloud.zookeeper.max-retries

10

Max number of times to retry

spring.cloud.zookeeper.max-sleep-ms

500

Max time in ms to sleep on each retry

spring.cloud.zookeeper.prefix

 

Common prefix that will be applied to all Zookeeper dependencies' paths

spring.integration.poller.fixed-delay

1000

Fixed delay for default poller.

spring.integration.poller.max-messages-per-poll

1

Maximum messages per poll for the default poller.

spring.sleuth.annotation.enabled

true

 

spring.sleuth.async.configurer.enabled

true

Enable default AsyncConfigurer.

spring.sleuth.async.enabled

true

Enable instrumenting async related components so that the tracing information is passed between threads.

spring.sleuth.async.ignored-beans

 

List of {@link java.util.concurrent.Executor} bean names that should be ignored and not wrapped in a trace representation.

spring.sleuth.baggage-keys

 

List of baggage key names that should be propagated out of process. These keys will be prefixed with baggage before the actual key. This property is set in order to be backward compatible with previous Sleuth versions. @see brave.propagation.ExtraFieldPropagation.FactoryBuilder#addPrefixedFields(String, java.util.Collection)

spring.sleuth.enabled

true

 

spring.sleuth.feign.enabled

true

Enable span information propagation when using Feign.

spring.sleuth.feign.processor.enabled

true

Enable post processor that wraps Feign Context in its tracing representations.

spring.sleuth.http.enabled

true

 

spring.sleuth.http.legacy.enabled

false

 

spring.sleuth.hystrix.strategy.enabled

true

Enable custom HystrixConcurrencyStrategy that wraps all Callable instances into their Sleuth representative - the TraceCallable.

spring.sleuth.integration.enabled

true

Enable Spring Integration sleuth instrumentation.

spring.sleuth.integration.patterns

[!hystrixStreamOutput*, *]

An array of patterns against which channel names will be matched. @see org.springframework.integration.config.GlobalChannelInterceptor#patterns(). Defaults to any channel name not matching the Hystrix Stream channel name.

spring.sleuth.integration.websockets.enabled

true

Enable tracing for WebSockets.

spring.sleuth.keys.http.headers

 

Additional headers that should be added as tags if they exist. If the header value is multi-valued, the tag value will be a comma-separated, single-quoted list.

spring.sleuth.keys.http.prefix

http.

Prefix for header names if they are added as tags.

spring.sleuth.log.slf4j.enabled

true

Enable a {@link Slf4jScopeDecorator} that prints tracing information in the logs.

spring.sleuth.log.slf4j.whitelisted-mdc-keys

 

A list of keys to be put from baggage to MDC.

spring.sleuth.messaging.enabled

false

Should messaging be turned on.

spring.sleuth.messaging.jms.enabled

false

 

spring.sleuth.messaging.jms.remote-service-name

jms

 

spring.sleuth.messaging.kafka.enabled

false

 

spring.sleuth.messaging.kafka.remote-service-name

kafka

 

spring.sleuth.messaging.rabbit.enabled

false

 

spring.sleuth.messaging.rabbit.remote-service-name

rabbitmq

 

spring.sleuth.opentracing.enabled

true

 

spring.sleuth.propagation-keys

 

List of fields that are referenced the same in-process as it is on the wire. For example, the name "x-vcap-request-id" would be set as-is including the prefix. <p> Note: {@code fieldName} will be implicitly lower-cased. @see brave.propagation.ExtraFieldPropagation.FactoryBuilder#addField(String)

spring.sleuth.reactor.enabled.enabled

true

When true enables instrumentation for reactor.

spring.sleuth.rxjava.schedulers.hook.enabled

true

Enable support for RxJava via RxJavaSchedulersHook.

spring.sleuth.rxjava.schedulers.ignoredthreads

[HystrixMetricPoller, ^RxComputation.*$]

Thread names for which spans will not be sampled.

spring.sleuth.sampler.probability

0.1

Probability of requests that should be sampled. E.g. 1.0 - 100% requests should be sampled. The precision is whole-numbers only (i.e. there’s no support for 0.1% of the traces).

spring.sleuth.scheduled.enabled

true

Enable tracing for {@link org.springframework.scheduling.annotation.Scheduled}.

spring.sleuth.scheduled.skip-pattern

org.springframework.cloud.netflix.hystrix.stream.HystrixStreamTask

Pattern for the fully qualified name of a class that should be skipped.

spring.sleuth.supports-join

true

True means the tracing system supports sharing a span ID between a client and server.

spring.sleuth.trace-id128

false

When true, generate 128-bit trace IDs instead of 64-bit ones.

spring.sleuth.web.additional-skip-pattern

 

Additional pattern for URLs that should be skipped in tracing. This will be appended to the {@link SleuthWebProperties#skipPattern}.

spring.sleuth.web.client.enabled

true

Enable interceptor injecting into {@link org.springframework.web.client.RestTemplate}.

spring.sleuth.web.client.skip-pattern

 

Pattern for URLs that should be skipped in client side tracing.

spring.sleuth.web.enabled

true

When true enables instrumentation for web applications.

spring.sleuth.web.exception-throwing-filter-enabled

true

Flag to toggle the presence of a filter that logs thrown exceptions.

spring.sleuth.web.filter-order

 

Order in which the tracing filters should be registered. Defaults to {@link TraceHttpAutoConfiguration#TRACING_FILTER_ORDER}.

spring.sleuth.web.skip-pattern

/api-docs.*

/autoconfig

/configprops

/dump

/health

/info

/metrics.*

/mappings

/trace

/swagger.*

.*\.png

.*\.css

.*\.js

.*\.html

/favicon.ico

/hystrix.stream

/application/.*

/actuator.*

/cloudfoundryapplication

Pattern for URLs that should be skipped in tracing.

spring.sleuth.zuul.enabled

true

Enable span information propagation when using Zuul.

spring.zipkin.base-url

http://localhost:9411/

URL of the zipkin query server instance. You can also provide the service id of the Zipkin server if Zipkin’s registered in service discovery (e.g. http://zipkinserver/)

spring.zipkin.compression.enabled

false

 

spring.zipkin.discovery-client-enabled

 

If set to {@code false}, will treat the {@link ZipkinProperties#baseUrl} as a URL always

spring.zipkin.enabled

true

Enables sending spans to Zipkin

spring.zipkin.encoder

 

Encoding type of spans sent to Zipkin. Set to {@link SpanBytesEncoder#JSON_V1} if your server is not recent.

spring.zipkin.locator.discovery.enabled

false

Enabling of locating the host name via service discovery

spring.zipkin.message-timeout

1

Timeout in seconds before pending spans will be sent in batches to Zipkin

spring.zipkin.sender.type

 

Means of sending spans to Zipkin

spring.zipkin.service.name

 

The name of the service, from which the Span was sent via HTTP, that should appear in Zipkin

stubrunner.amqp.enabled

false

Whether to enable support for Stub Runner and AMQP.

stubrunner.amqp.mockCOnnection

true

Whether to enable support for Stub Runner and AMQP mocked connection factory.

stubrunner.classifier

stubs

The classifier to use by default in ivy co-ordinates for a stub.

stubrunner.cloud.consul.enabled

true

Whether to enable stubs registration in Consul.

stubrunner.cloud.delegate.enabled

true

Whether to enable DiscoveryClient’s Stub Runner implementation.

stubrunner.cloud.enabled

true

Whether to enable Spring Cloud support for Stub Runner.

stubrunner.cloud.eureka.enabled

true

Whether to enable stubs registration in Eureka.

stubrunner.cloud.ribbon.enabled

true

Whether to enable Stub Runner’s Ribbon integration.

stubrunner.cloud.stubbed.discovery.enabled

true

Whether Service Discovery should be stubbed for Stub Runner. If set to false, stubs will get registered in real service discovery.

stubrunner.cloud.zookeeper.enabled

true

Whether to enable stubs registration in Zookeeper.

stubrunner.consumer-name

 

You can override the default {@code spring.application.name} of this field by setting a value to this parameter.

stubrunner.delete-stubs-after-test

true

If set to {@code false} will NOT delete stubs from a temporary folder after running tests

stubrunner.ids

[]

The ids of the stubs to run in "ivy" notation ([groupId]:artifactId:[version]:[classifier][:port]). {@code groupId}, {@code classifier}, {@code version} and {@code port} can be optional.

stubrunner.ids-to-service-ids

 

Mapping of Ivy notation based ids to serviceIds inside your application Example "a:b" → "myService" "artifactId" → "myOtherService"

stubrunner.integration.enabled

true

Whether to enable Stub Runner integration with Spring Integration.

stubrunner.mappings-output-folder

 

Dumps the mappings of each HTTP server to the selected folder

stubrunner.max-port

15000

Max value of a port for the automatically started WireMock server

stubrunner.min-port

10000

Min value of a port for the automatically started WireMock server

stubrunner.password

 

Repository password

stubrunner.properties

 

Map of properties that can be passed to custom {@link org.springframework.cloud.contract.stubrunner.StubDownloaderBuilder}

stubrunner.proxy-host

 

Repository proxy host

stubrunner.proxy-port

 

Repository proxy port

stubrunner.stream.enabled

true

Whether to enable Stub Runner integration with Spring Cloud Stream.

stubrunner.stubs-mode

 

Pick where the stubs should come from

stubrunner.stubs-per-consumer

false

Should only stubs for this particular consumer get registered in HTTP server stub.

stubrunner.username

 

Repository username

wiremock.rest-template-ssl-enabled

false

 

wiremock.server.files

 
 

wiremock.server.https-port

-1

 

wiremock.server.port

8080

 

wiremock.server.stubs

 
\ No newline at end of file + Part XXVII. Appendix: Compendium of Configuration Properties

Part XXVII. Appendix: Compendium of Configuration Properties

Name

Default

Description

aws.paramstore.default-context

application

 

aws.paramstore.enabled

true

Is AWS Parameter Store support enabled.

aws.paramstore.fail-fast

true

Throw exceptions during config lookup if true, otherwise, log warnings.

aws.paramstore.name

 

Alternative to spring.application.name to use in looking up values in AWS Parameter Store.

aws.paramstore.prefix

/config

Prefix indicating first level for every property. Value must start with a forward slash followed by a valid path segment or be empty. Defaults to "/config".

aws.paramstore.profile-separator

_

 

encrypt.fail-on-error

true

Flag to say that a process should fail if there is an encryption or decryption error.

encrypt.key

 

A symmetric key. As a stronger alternative, consider using a keystore.

encrypt.key-store.alias

 

Alias for a key in the store.

encrypt.key-store.location

 

Location of the key store file, e.g. classpath:/keystore.jks.

encrypt.key-store.password

 

Password that locks the keystore.

encrypt.key-store.secret

 

Secret protecting the key (defaults to the same as the password).

encrypt.rsa.algorithm

 

The RSA algorithm to use (DEFAULT or OEAP). Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.rsa.salt

deadbeef

Salt for the random secret used to encrypt cipher text. Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.rsa.strong

false

Flag to indicate that "strong" AES encryption should be used internally. If true, then the GCM algorithm is applied to the AES encrypted bytes. Default is false (in which case "standard" CBC is used instead). Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.salt

deadbeef

A salt for the symmetric key, in the form of a hex-encoded byte array. As a stronger alternative, consider using a keystore.

endpoints.zookeeper.enabled

true

Enable the /zookeeper endpoint to inspect the state of zookeeper.

eureka.client.healthcheck.enabled

true

Enables the Eureka health check handler.

health.config.enabled

false

Flag to indicate that the config server health indicator should be installed.

health.config.time-to-live

0

Time to live for cached result, in milliseconds. Default 300000 (5 min).

hystrix.metrics.enabled

true

Enable Hystrix metrics polling. Defaults to true.

hystrix.metrics.polling-interval-ms

2000

Interval between subsequent polling of metrics. Defaults to 2000 ms.

hystrix.shareSecurityContext

false

Enables auto-configuration of the Hystrix concurrency strategy plugin hook who will transfer the SecurityContext from your main thread to the one used by the Hystrix command.

management.endpoint.bindings.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.bindings.enabled

true

Whether to enable the bindings endpoint.

management.endpoint.bus-env.enabled

true

Whether to enable the bus-env endpoint.

management.endpoint.bus-refresh.enabled

true

Whether to enable the bus-refresh endpoint.

management.endpoint.channels.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.channels.enabled

true

Whether to enable the channels endpoint.

management.endpoint.consul.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.consul.enabled

true

Whether to enable the consul endpoint.

management.endpoint.env.post.enabled

true

Enable changing the Environment through a POST to /env.

management.endpoint.features.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.features.enabled

true

Whether to enable the features endpoint.

management.endpoint.gateway.enabled

true

Whether to enable the gateway endpoint.

management.endpoint.hystrix.config

 

Hystrix settings. These are traditionally set using servlet parameters. Refer to the documentation of Hystrix for more details.

management.endpoint.hystrix.stream.enabled

true

Whether to enable the hystrix.stream endpoint.

management.endpoint.pause.enabled

true

Enable the /pause endpoint (to send Lifecycle.stop()).

management.endpoint.refresh.enabled

true

Enable the /refresh endpoint to refresh configuration and re-initialize refresh scoped beans.

management.endpoint.restart.enabled

true

Enable the /restart endpoint to restart the application context.

management.endpoint.resume.enabled

true

Enable the /resume endpoint (to send Lifecycle.start()).

management.endpoint.service-registry.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.service-registry.enabled

true

Whether to enable the service-registry endpoint.

management.health.refresh.enabled

true

Enable the health endpoint for the refresh scope.

management.health.zookeeper.enabled

true

Enable the health endpoint for zookeeper.

management.metrics.binders.hystrix.enabled

true

Enables creation of OK Http Client factory beans.

maven.checksum-policy

  

maven.connect-timeout

  

maven.local-repository

  

maven.offline

  

maven.proxy

  

maven.remote-repositories

  

maven.request-timeout

  

maven.resolve-pom

  

maven.update-policy

  

proxy.auth.load-balanced

false

 

proxy.auth.routes

 

Authentication strategy per route.

ribbon.eager-load.clients

  

ribbon.eager-load.enabled

false

 

ribbon.http.client.enabled

false

Deprecated property to enable Ribbon RestClient.

ribbon.okhttp.enabled

false

Enables the use of the OK HTTP Client with Ribbon.

ribbon.restclient.enabled

false

Enables the use of the deprecated Ribbon RestClient.

ribbon.secure-ports

  

spring.cloud.bus.ack.destination-service

 

Service that wants to listen to acks. By default null (meaning all services).

spring.cloud.bus.ack.enabled

true

Flag to switch off acks (default on).

spring.cloud.bus.destination

springCloudBus

Name of Spring Cloud Stream destination for messages.

spring.cloud.bus.enabled

true

Flag to indicate that the bus is enabled.

spring.cloud.bus.env.enabled

true

Flag to switch off environment change events (default on).

spring.cloud.bus.id

application

The identifier for this application instance.

spring.cloud.bus.refresh.enabled

true

Flag to switch off refresh events (default on).

spring.cloud.bus.trace.enabled

false

Flag to switch on tracing of acks (default off).

spring.cloud.cloudfoundry.discovery.default-server-port

80

Port to use when no port is defined by ribbon.

spring.cloud.cloudfoundry.discovery.enabled

true

Flag to indicate that discovery is enabled.

spring.cloud.cloudfoundry.discovery.heartbeat-frequency

5000

Frequency in milliseconds of poll for heart beat. The client will poll on this frequency and broadcast a list of service ids.

spring.cloud.cloudfoundry.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.cloudfoundry.org

 

Organization name to initially target.

spring.cloud.cloudfoundry.password

 

Password for user to authenticate and obtain token.

spring.cloud.cloudfoundry.skip-ssl-validation

false

 

spring.cloud.cloudfoundry.space

 

Space name to initially target.

spring.cloud.cloudfoundry.url

 

URL of Cloud Foundry API (Cloud Controller).

spring.cloud.cloudfoundry.username

 

Username to authenticate (usually an email address).

spring.cloud.compatibility-verifier.compatible-boot-versions

2.1.x

Default accepted versions for the Spring Boot dependency. You can set {@code x} for the patch version if you don’t want to specify a concrete value. Example: {@code 3.4.x}

spring.cloud.compatibility-verifier.enabled

false

Enables creation of Spring Cloud compatibility verification.

spring.cloud.config.allow-override

true

Flag to indicate that {@link #isOverrideSystemProperties() systemPropertiesOverride} can be used. Set to false to prevent users from changing the default accidentally. Default true.

spring.cloud.config.discovery.enabled

false

Flag to indicate that config server discovery is enabled (config server URL will be looked up via discovery).

spring.cloud.config.discovery.service-id

configserver

Service id to locate config server.

spring.cloud.config.enabled

true

Flag to say that remote configuration is enabled. Default true;

spring.cloud.config.fail-fast

false

Flag to indicate that failure to connect to the server is fatal (default false).

spring.cloud.config.headers

 

Additional headers used to create the client request.

spring.cloud.config.label

 

The label name to use to pull remote configuration properties. The default is set on the server (generally "master" for a git based server).

spring.cloud.config.name

 

Name of application used to fetch remote properties.

spring.cloud.config.override-none

false

Flag to indicate that when {@link #setAllowOverride(boolean) allowOverride} is true, external properties should take lowest priority and should not override any existing property sources (including local config files). Default false.

spring.cloud.config.override-system-properties

true

Flag to indicate that the external properties should override system properties. Default true.

spring.cloud.config.password

 

The password to use (HTTP Basic) when contacting the remote server.

spring.cloud.config.profile

default

The default profile to use when fetching remote configuration (comma-separated). Default is "default".

spring.cloud.config.request-read-timeout

0

timeout on waiting to read data from the Config Server.

spring.cloud.config.retry.initial-interval

1000

Initial retry interval in milliseconds.

spring.cloud.config.retry.max-attempts

6

Maximum number of attempts.

spring.cloud.config.retry.max-interval

2000

Maximum interval for backoff.

spring.cloud.config.retry.multiplier

1.1

Multiplier for next interval.

spring.cloud.config.send-state

true

Flag to indicate whether to send state. Default true.

spring.cloud.config.server.accept-empty

true

Flag to indicate that If HTTP 404 needs to be sent if Application is not Found

spring.cloud.config.server.bootstrap

false

Flag indicating that the config server should initialize its own Environment with properties from the remote repository. Off by default because it delays startup but can be useful when embedding the server in another application.

spring.cloud.config.server.default-application-name

application

Default application name when incoming requests do not have a specific one.

spring.cloud.config.server.default-label

 

Default repository label when incoming requests do not have a specific label.

spring.cloud.config.server.default-profile

default

Default application profile when incoming requests do not have a specific one.

spring.cloud.config.server.encrypt.enabled

true

Enable decryption of environment properties before sending to client.

spring.cloud.config.server.git.basedir

 

Base directory for local working copy of repository.

spring.cloud.config.server.git.clone-on-start

false

Flag to indicate that the repository should be cloned on startup (not on demand). Generally leads to slower startup but faster first query.

spring.cloud.config.server.git.default-label

 

The default label to be used with the remore repository

spring.cloud.config.server.git.delete-untracked-branches

false

Flag to indicate that the branch should be deleted locally if it’s origin tracked branch was removed.

spring.cloud.config.server.git.force-pull

false

Flag to indicate that the repository should force pull. If true discard any local changes and take from remote repository.

spring.cloud.config.server.git.host-key

 

Valid SSH host key. Must be set if hostKeyAlgorithm is also set.

spring.cloud.config.server.git.host-key-algorithm

 

One of ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, or ecdsa-sha2-nistp521. Must be set if hostKey is also set.

spring.cloud.config.server.git.ignore-local-ssh-settings

false

If true, use property-based instead of file-based SSH config.

spring.cloud.config.server.git.known-hosts-file

 

Location of custom .known_hosts file.

spring.cloud.config.server.git.order

 

The order of the environment repository.

spring.cloud.config.server.git.passphrase

 

Passphrase for unlocking your ssh private key.

spring.cloud.config.server.git.password

 

Password for authentication with remote repository.

spring.cloud.config.server.git.preferred-authentications

 

Override server authentication method order. This should allow for evading login prompts if server has keyboard-interactive authentication before the publickey method.

spring.cloud.config.server.git.private-key

 

Valid SSH private key. Must be set if ignoreLocalSshSettings is true and Git URI is SSH format.

spring.cloud.config.server.git.proxy

 

HTTP proxy configuration.

spring.cloud.config.server.git.refresh-rate

0

Time (in seconds) between refresh of the git repository

spring.cloud.config.server.git.repos

 

Map of repository identifier to location and other properties.

spring.cloud.config.server.git.search-paths

 

Search paths to use within local working copy. By default searches only the root.

spring.cloud.config.server.git.skip-ssl-validation

false

Flag to indicate that SSL certificate validation should be bypassed when communicating with a repository served over an HTTPS connection.

spring.cloud.config.server.git.strict-host-key-checking

true

If false, ignore errors with host key

spring.cloud.config.server.git.timeout

5

Timeout (in seconds) for obtaining HTTP or SSH connection (if applicable), defaults to 5 seconds.

spring.cloud.config.server.git.uri

 

URI of remote repository.

spring.cloud.config.server.git.username

 

Username for authentication with remote repository.

spring.cloud.config.server.health.repositories

  

spring.cloud.config.server.jdbc.order

0

 

spring.cloud.config.server.jdbc.sql

SELECT KEY, VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?

SQL used to query database for keys and values

spring.cloud.config.server.native.add-label-locations

true

Flag to determine whether label locations should be added.

spring.cloud.config.server.native.default-label

master

 

spring.cloud.config.server.native.fail-on-error

false

Flag to determine how to handle exceptions during decryption (default false).

spring.cloud.config.server.native.order

  

spring.cloud.config.server.native.search-locations

[]

Locations to search for configuration files. Defaults to the same as a Spring Boot app so [classpath:/,classpath:/config/,file:./,file:./config/].

spring.cloud.config.server.native.version

 

Version string to be reported for native repository

spring.cloud.config.server.overrides

 

Extra map for a property source to be sent to all clients unconditionally.

spring.cloud.config.server.prefix

 

Prefix for configuration resource paths (default is empty). Useful when embedding in another application when you don’t want to change the context path or servlet path.

spring.cloud.config.server.strip-document-from-yaml

true

Flag to indicate that YAML documents that are text or collections (not a map) should be returned in "native" form.

spring.cloud.config.server.svn.basedir

 

Base directory for local working copy of repository.

spring.cloud.config.server.svn.default-label

 

The default label to be used with the remore repository

spring.cloud.config.server.svn.order

 

The order of the environment repository.

spring.cloud.config.server.svn.passphrase

 

Passphrase for unlocking your ssh private key.

spring.cloud.config.server.svn.password

 

Password for authentication with remote repository.

spring.cloud.config.server.svn.search-paths

 

Search paths to use within local working copy. By default searches only the root.

spring.cloud.config.server.svn.strict-host-key-checking

true

Reject incoming SSH host keys from remote servers not in the known host list.

spring.cloud.config.server.svn.uri

 

URI of remote repository.

spring.cloud.config.server.svn.username

 

Username for authentication with remote repository.

spring.cloud.config.server.vault.backend

secret

Vault backend. Defaults to secret.

spring.cloud.config.server.vault.default-key

application

The key in vault shared by all applications. Defaults to application. Set to empty to disable.

spring.cloud.config.server.vault.host

127.0.0.1

Vault host. Defaults to 127.0.0.1.

spring.cloud.config.server.vault.kv-version

1

Value to indicate which version of Vault kv backend is used. Defaults to 1.

spring.cloud.config.server.vault.order

  

spring.cloud.config.server.vault.port

8200

Vault port. Defaults to 8200.

spring.cloud.config.server.vault.profile-separator

,

Vault profile separator. Defaults to comma.

spring.cloud.config.server.vault.proxy

 

HTTP proxy configuration.

spring.cloud.config.server.vault.scheme

http

Vault scheme. Defaults to http.

spring.cloud.config.server.vault.skip-ssl-validation

false

Flag to indicate that SSL certificate validation should be bypassed when communicating with a repository served over an HTTPS connection.

spring.cloud.config.server.vault.timeout

5

Timeout (in seconds) for obtaining HTTP connection, defaults to 5 seconds.

spring.cloud.config.token

 

Security Token passed thru to underlying environment repository.

spring.cloud.config.uri

[http://localhost:8888]

The URI of the remote server (default http://localhost:8888).

spring.cloud.config.username

 

The username to use (HTTP Basic) when contacting the remote server.

spring.cloud.consul.config.acl-token

  

spring.cloud.consul.config.data-key

data

If format is Format.PROPERTIES or Format.YAML then the following field is used as key to look up consul for configuration.

spring.cloud.consul.config.default-context

application

 

spring.cloud.consul.config.enabled

true

 

spring.cloud.consul.config.fail-fast

true

Throw exceptions during config lookup if true, otherwise, log warnings.

spring.cloud.consul.config.format

  

spring.cloud.consul.config.name

 

Alternative to spring.application.name to use in looking up values in consul KV.

spring.cloud.consul.config.prefix

config

 

spring.cloud.consul.config.profile-separator

,

 

spring.cloud.consul.config.watch.delay

1000

The value of the fixed delay for the watch in millis. Defaults to 1000.

spring.cloud.consul.config.watch.enabled

true

If the watch is enabled. Defaults to true.

spring.cloud.consul.config.watch.wait-time

55

The number of seconds to wait (or block) for watch query, defaults to 55. Needs to be less than default ConsulClient (defaults to 60). To increase ConsulClient timeout create a ConsulClient bean with a custom ConsulRawClient with a custom HttpClient.

spring.cloud.consul.discovery.acl-token

  

spring.cloud.consul.discovery.catalog-services-watch-delay

1000

The delay between calls to watch consul catalog in millis, default is 1000.

spring.cloud.consul.discovery.catalog-services-watch-timeout

2

The number of seconds to block while watching consul catalog, default is 2.

spring.cloud.consul.discovery.datacenters

 

Map of serviceId’s → datacenter to query for in server list. This allows looking up services in another datacenters.

spring.cloud.consul.discovery.default-query-tag

 

Tag to query for in service list if one is not listed in serverListQueryTags.

spring.cloud.consul.discovery.default-zone-metadata-name

zone

Service instance zone comes from metadata. This allows changing the metadata tag name.

spring.cloud.consul.discovery.deregister

true

Disable automatic de-registration of service in consul.

spring.cloud.consul.discovery.enabled

true

Is service discovery enabled?

spring.cloud.consul.discovery.fail-fast

true

Throw exceptions during service registration if true, otherwise, log warnings (defaults to true).

spring.cloud.consul.discovery.health-check-critical-timeout

 

Timeout to deregister services critical for longer than timeout (e.g. 30m). Requires consul version 7.x or higher.

spring.cloud.consul.discovery.health-check-headers

 

Headers to be applied to the Health Check calls

spring.cloud.consul.discovery.health-check-interval

10s

How often to perform the health check (e.g. 10s), defaults to 10s.

spring.cloud.consul.discovery.health-check-path

/actuator/health

Alternate server path to invoke for health checking

spring.cloud.consul.discovery.health-check-timeout

 

Timeout for health check (e.g. 10s).

spring.cloud.consul.discovery.health-check-tls-skip-verify

 

Skips certificate verification during service checks if true, otherwise runs certificate verification.

spring.cloud.consul.discovery.health-check-url

 

Custom health check url to override default

spring.cloud.consul.discovery.heartbeat.enabled

false

 

spring.cloud.consul.discovery.heartbeat.interval-ratio

  

spring.cloud.consul.discovery.heartbeat.ttl-unit

s

 

spring.cloud.consul.discovery.heartbeat.ttl-value

30

 

spring.cloud.consul.discovery.hostname

 

Hostname to use when accessing server

spring.cloud.consul.discovery.instance-group

 

Service instance group

spring.cloud.consul.discovery.instance-id

 

Unique service instance id

spring.cloud.consul.discovery.instance-zone

 

Service instance zone

spring.cloud.consul.discovery.ip-address

 

IP address to use when accessing service (must also set preferIpAddress to use)

spring.cloud.consul.discovery.lifecycle.enabled

true

 

spring.cloud.consul.discovery.management-port

 

Port to register the management service under (defaults to management port)

spring.cloud.consul.discovery.management-suffix

management

Suffix to use when registering management service

spring.cloud.consul.discovery.management-tags

 

Tags to use when registering management service

spring.cloud.consul.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.consul.discovery.port

 

Port to register the service under (defaults to listening port)

spring.cloud.consul.discovery.prefer-agent-address

false

Source of how we will determine the address to use

spring.cloud.consul.discovery.prefer-ip-address

false

Use ip address rather than hostname during registration

spring.cloud.consul.discovery.query-passing

false

Add the 'passing` parameter to /v1/health/service/serviceName. This pushes health check passing to the server.

spring.cloud.consul.discovery.register

true

Register as a service in consul.

spring.cloud.consul.discovery.register-health-check

true

Register health check in consul. Useful during development of a service.

spring.cloud.consul.discovery.scheme

http

Whether to register an http or https service

spring.cloud.consul.discovery.server-list-query-tags

 

Map of serviceId’s → tag to query for in server list. This allows filtering services by a single tag.

spring.cloud.consul.discovery.service-name

 

Service name

spring.cloud.consul.discovery.tags

 

Tags to use when registering service

spring.cloud.consul.enabled

true

Is spring cloud consul enabled

spring.cloud.consul.host

localhost

Consul agent hostname. Defaults to 'localhost'.

spring.cloud.consul.port

8500

Consul agent port. Defaults to '8500'.

spring.cloud.consul.retry.initial-interval

1000

Initial retry interval in milliseconds.

spring.cloud.consul.retry.max-attempts

6

Maximum number of attempts.

spring.cloud.consul.retry.max-interval

2000

Maximum interval for backoff.

spring.cloud.consul.retry.multiplier

1.1

Multiplier for next interval.

spring.cloud.consul.scheme

 

Consul agent scheme (HTTP/HTTPS). If there is no scheme in address - client will use HTTP.

spring.cloud.consul.tls.certificate-password

 

Password to open the certificate.

spring.cloud.consul.tls.certificate-path

 

File path to the certificate.

spring.cloud.consul.tls.key-store-instance-type

 

Type of key framework to use.

spring.cloud.consul.tls.key-store-password

 

Password to an external keystore

spring.cloud.consul.tls.key-store-path

 

Path to an external keystore

spring.cloud.discovery.client.cloudfoundry.order

  

spring.cloud.discovery.client.composite-indicator.enabled

true

Enables discovery client composite health indicator.

spring.cloud.discovery.client.health-indicator.enabled

true

 

spring.cloud.discovery.client.health-indicator.include-description

false

 

spring.cloud.discovery.client.simple.instances

  

spring.cloud.discovery.client.simple.local.instance-id

 

The unique identifier or name for the service instance.

spring.cloud.discovery.client.simple.local.metadata

 

Metadata for the service instance. Can be used by discovery clients to modify their behaviour per instance, e.g. when load balancing.

spring.cloud.discovery.client.simple.local.service-id

 

The identifier or name for the service. Multiple instances might share the same service ID.

spring.cloud.discovery.client.simple.local.uri

 

The URI of the service instance. Will be parsed to extract the scheme, host, and port.

spring.cloud.discovery.client.simple.order

  

spring.cloud.discovery.enabled

true

Enables discovery client health indicators.

spring.cloud.features.enabled

true

Enables the features endpoint.

spring.cloud.function.compile

 

Configuration for function bodies, which will be compiled. The key in the map is the function name and the value is a map containing a key "lambda" which is the body to compile, and optionally a "type" (defaults to "function"). Can also contain "inputType" and "outputType" in case it is ambiguous.

spring.cloud.function.imports

 

Configuration for a set of files containing function bodies, which will be imported and compiled. The key in the map is the function name and the value is another map, containing a "location" of the file to compile and (optionally) a "type" (defaults to "function").

spring.cloud.function.task.consumer

  

spring.cloud.function.task.function

  

spring.cloud.function.task.supplier

  

spring.cloud.function.web.path

 

Path to web resources for functions (should start with / if not empty).

spring.cloud.function.web.supplier.auto-startup

true

 

spring.cloud.function.web.supplier.debug

true

 

spring.cloud.function.web.supplier.enabled

false

 

spring.cloud.function.web.supplier.headers

  

spring.cloud.function.web.supplier.name

  

spring.cloud.function.web.supplier.template-url

  

spring.cloud.gateway.default-filters

 

List of filter definitions that are applied to every route.

spring.cloud.gateway.discovery.locator.enabled

false

Flag that enables DiscoveryClient gateway integration

spring.cloud.gateway.discovery.locator.filters

  

spring.cloud.gateway.discovery.locator.include-expression

true

SpEL expression that will evaluate whether to include a service in gateway integration or not, defaults to: true

spring.cloud.gateway.discovery.locator.lower-case-service-id

false

Option to lower case serviceId in predicates and filters, defaults to false. Useful with eureka when it automatically uppercases serviceId. so MYSERIVCE, would match /myservice/**

spring.cloud.gateway.discovery.locator.predicates

  

spring.cloud.gateway.discovery.locator.route-id-prefix

 

The prefix for the routeId, defaults to discoveryClient.getClass().getSimpleName() + "_". Service Id will be appended to create the routeId.

spring.cloud.gateway.discovery.locator.url-expression

'lb://'+serviceId

SpEL expression that create the uri for each route, defaults to: 'lb://'+serviceId

spring.cloud.gateway.enabled

true

Enables gateway functionality.

spring.cloud.gateway.filter.remove-hop-by-hop.headers

  

spring.cloud.gateway.filter.remove-hop-by-hop.order

  

spring.cloud.gateway.filter.secure-headers.content-security-policy

default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline'

 

spring.cloud.gateway.filter.secure-headers.content-type-options

nosniff

 

spring.cloud.gateway.filter.secure-headers.download-options

noopen

 

spring.cloud.gateway.filter.secure-headers.frame-options

DENY

 

spring.cloud.gateway.filter.secure-headers.permitted-cross-domain-policies

none

 

spring.cloud.gateway.filter.secure-headers.referrer-policy

no-referrer

 

spring.cloud.gateway.filter.secure-headers.strict-transport-security

max-age=631138519

 

spring.cloud.gateway.filter.secure-headers.xss-protection-header

1 ; mode=block

 

spring.cloud.gateway.forwarded.enabled

true

Enables the ForwardedHeadersFilter.

spring.cloud.gateway.globalcors.cors-configurations

  

spring.cloud.gateway.httpclient.connect-timeout

 

The connect timeout in millis, the default is 45s.

spring.cloud.gateway.httpclient.pool.acquire-timeout

 

Only for type FIXED, the maximum time in millis to wait for aquiring.

spring.cloud.gateway.httpclient.pool.max-connections

 

Only for type FIXED, the maximum number of connections before starting pending acquisition on existing ones.

spring.cloud.gateway.httpclient.pool.name

proxy

The channel pool map name, defaults to proxy.

spring.cloud.gateway.httpclient.pool.type

 

Type of pool for HttpClient to use, defaults to ELASTIC.

spring.cloud.gateway.httpclient.proxy.host

 

Hostname for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.non-proxy-hosts-pattern

 

Regular expression (Java) for a configured list of hosts that should be reached directly, bypassing the proxy

spring.cloud.gateway.httpclient.proxy.password

 

Password for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.port

 

Port for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.username

 

Username for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.response-timeout

 

The response timeout.

spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout

3000ms

SSL close_notify flush timeout. Default to 3000 ms.

spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout

 

SSL close_notify read timeout. Default to 0 ms.

spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.default-configuration-type

 

The default ssl configuration type. Defaults to TCP.

spring.cloud.gateway.httpclient.ssl.handshake-timeout

10000ms

SSL handshake timeout. Default to 10000 ms

spring.cloud.gateway.httpclient.ssl.handshake-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.trusted-x509-certificates

 

Trusted certificates for verifying the remote endpoint’s certificate.

spring.cloud.gateway.httpclient.ssl.use-insecure-trust-manager

false

Installs the netty InsecureTrustManagerFactory. This is insecure and not suitable for production.

spring.cloud.gateway.metrics.enabled

false

Enables the collection of metrics data.

spring.cloud.gateway.proxy.headers

 

Fixed header values that will be added to all downstream requests.

spring.cloud.gateway.proxy.sensitive

 

A set of sensitive header names that will not be sent downstream by default.

spring.cloud.gateway.redis-rate-limiter.burst-capacity-header

X-RateLimit-Burst-Capacity

The name of the header that returns the burst capacity configuration.

spring.cloud.gateway.redis-rate-limiter.config

  

spring.cloud.gateway.redis-rate-limiter.include-headers

true

Whether or not to include headers containing rate limiter information, defaults to true.

spring.cloud.gateway.redis-rate-limiter.remaining-header

X-RateLimit-Remaining

The name of the header that returns number of remaining requests during the current second.

spring.cloud.gateway.redis-rate-limiter.replenish-rate-header

X-RateLimit-Replenish-Rate

The name of the header that returns the replenish rate configuration.

spring.cloud.gateway.routes

 

List of Routes

spring.cloud.gateway.streaming-media-types

  

spring.cloud.gateway.x-forwarded.enabled

true

If the XForwardedHeadersFilter is enabled.

spring.cloud.gateway.x-forwarded.for-append

true

If appending X-Forwarded-For as a list is enabled.

spring.cloud.gateway.x-forwarded.for-enabled

true

If X-Forwarded-For is enabled.

spring.cloud.gateway.x-forwarded.host-append

true

If appending X-Forwarded-Host as a list is enabled.

spring.cloud.gateway.x-forwarded.host-enabled

true

If X-Forwarded-Host is enabled.

spring.cloud.gateway.x-forwarded.order

0

The order of the XForwardedHeadersFilter.

spring.cloud.gateway.x-forwarded.port-append

true

If appending X-Forwarded-Port as a list is enabled.

spring.cloud.gateway.x-forwarded.port-enabled

true

If X-Forwarded-Port is enabled.

spring.cloud.gateway.x-forwarded.prefix-append

true

If appending X-Forwarded-Prefix as a list is enabled.

spring.cloud.gateway.x-forwarded.prefix-enabled

true

If X-Forwarded-Prefix is enabled.

spring.cloud.gateway.x-forwarded.proto-append

true

If appending X-Forwarded-Proto as a list is enabled.

spring.cloud.gateway.x-forwarded.proto-enabled

true

If X-Forwarded-Proto is enabled.

spring.cloud.httpclientfactories.apache.enabled

true

Enables creation of Apache Http Client factory beans.

spring.cloud.httpclientfactories.ok.enabled

true

Enables creation of OK Http Client factory beans.

spring.cloud.hypermedia.refresh.fixed-delay

5000

 

spring.cloud.hypermedia.refresh.initial-delay

10000

 

spring.cloud.inetutils.default-hostname

localhost

The default hostname. Used in case of errors.

spring.cloud.inetutils.default-ip-address

127.0.0.1

The default IP address. Used in case of errors.

spring.cloud.inetutils.ignored-interfaces

 

List of Java regular expressions for network interfaces that will be ignored.

spring.cloud.inetutils.preferred-networks

 

List of Java regular expressions for network addresses that will be preferred.

spring.cloud.inetutils.timeout-seconds

1

Timeout, in seconds, for calculating hostname.

spring.cloud.inetutils.use-only-site-local-interfaces

false

Whether to use only interfaces with site local addresses. See {@link InetAddress#isSiteLocalAddress()} for more details.

spring.cloud.loadbalancer.retry.enabled

true

 

spring.cloud.refresh.enabled

true

Enables autoconfiguration for the refresh scope and associated features.

spring.cloud.refresh.extra-refreshable

true

Additional class names for beans to post process into refresh scope.

spring.cloud.service-registry.auto-registration.enabled

true

Whether service auto-registration is enabled. Defaults to true.

spring.cloud.service-registry.auto-registration.fail-fast

false

Whether startup fails if there is no AutoServiceRegistration. Defaults to false.

spring.cloud.service-registry.auto-registration.register-management

true

Whether to register the management as a service. Defaults to true.

spring.cloud.stream.binders

 

Additional per-binder properties (see {@link BinderProperties}) if more then one binder of the same type is used (i.e., connect to multiple instances of RabbitMq). Here you can specify multiple binder configurations, each with different environment settings. For example; spring.cloud.stream.binders.rabbit1.environment. . . , spring.cloud.stream.binders.rabbit2.environment. . .

spring.cloud.stream.binding-retry-interval

30

Retry interval (in seconds) used to schedule binding attempts. Default: 30 sec.

spring.cloud.stream.bindings

 

Additional binding properties (see {@link BinderProperties}) per binding name (e.g., 'input`). For example; This sets the content-type for the 'input' binding of a Sink application: 'spring.cloud.stream.bindings.input.contentType=text/plain'

spring.cloud.stream.consul.binder.event-timeout

5

 

spring.cloud.stream.default-binder

 

The name of the binder to use by all bindings in the event multiple binders available (e.g., 'rabbit');

spring.cloud.stream.dynamic-destinations

[]

A list of destinations that can be bound dynamically. If set, only listed destinations can be bound.

spring.cloud.stream.function.definition

 

Definition of functions to bind. If several functions need to be composed into one, use pipes (e.g., 'fooFunc

barFunc')

spring.cloud.stream.instance-count

1

The number of deployed instances of an application. Default: 1. NOTE: Could also be managed per individual binding "spring.cloud.stream.bindings.foo.consumer.instance-count" where 'foo' is the name of the binding.

spring.cloud.stream.instance-index

0

The instance id of the application: a number from 0 to instanceCount-1. Used for partitioning and with Kafka. NOTE: Could also be managed per individual binding "spring.cloud.stream.bindings.foo.consumer.instance-index" where 'foo' is the name of the binding.

spring.cloud.stream.integration.message-handler-not-propagated-headers

 

Message header names that will NOT be copied from the inbound message.

spring.cloud.stream.kafka.binder.auto-add-partitions

false

 

spring.cloud.stream.kafka.binder.auto-create-topics

true

 

spring.cloud.stream.kafka.binder.brokers

[localhost]

 

spring.cloud.stream.kafka.binder.configuration

 

Arbitrary kafka properties that apply to both producers and consumers.

spring.cloud.stream.kafka.binder.consumer-properties

 

Arbitrary kafka consumer properties.

spring.cloud.stream.kafka.binder.fetch-size

0

 

spring.cloud.stream.kafka.binder.header-mapper-bean-name

 

The bean name of a custom header mapper to use instead of a {@link org.springframework.kafka.support.DefaultKafkaHeaderMapper}.

spring.cloud.stream.kafka.binder.headers

[]

 

spring.cloud.stream.kafka.binder.health-timeout

60

Time to wait to get partition information in seconds; default 60.

spring.cloud.stream.kafka.binder.jaas

 
 

spring.cloud.stream.kafka.binder.max-wait

100

 

spring.cloud.stream.kafka.binder.min-partition-count

1

 

spring.cloud.stream.kafka.binder.offset-update-count

0

 

spring.cloud.stream.kafka.binder.offset-update-shutdown-timeout

2000

 

spring.cloud.stream.kafka.binder.offset-update-time-window

10000

 

spring.cloud.stream.kafka.binder.producer-properties

 

Arbitrary kafka producer properties.

spring.cloud.stream.kafka.binder.queue-size

8192

 

spring.cloud.stream.kafka.binder.replication-factor

1

 

spring.cloud.stream.kafka.binder.required-acks

1

 

spring.cloud.stream.kafka.binder.socket-buffer-size

2097152

 

spring.cloud.stream.kafka.binder.transaction.producer.admin

 
 

spring.cloud.stream.kafka.binder.transaction.producer.batch-timeout

 
 

spring.cloud.stream.kafka.binder.transaction.producer.buffer-size

 
 

spring.cloud.stream.kafka.binder.transaction.producer.compression-type

 
 

spring.cloud.stream.kafka.binder.transaction.producer.configuration

 
 

spring.cloud.stream.kafka.binder.transaction.producer.error-channel-enabled

 
 

spring.cloud.stream.kafka.binder.transaction.producer.header-mode

 
 

spring.cloud.stream.kafka.binder.transaction.producer.header-patterns

 
 

spring.cloud.stream.kafka.binder.transaction.producer.message-key-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-count

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-key-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-key-extractor-name

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-selector-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-selector-name

 
 

spring.cloud.stream.kafka.binder.transaction.producer.required-groups

 
 

spring.cloud.stream.kafka.binder.transaction.producer.sync

 
 

spring.cloud.stream.kafka.binder.transaction.producer.use-native-encoding

 
 

spring.cloud.stream.kafka.binder.transaction.transaction-id-prefix

 
 

spring.cloud.stream.kafka.binder.zk-connection-timeout

10000

ZK Connection timeout in milliseconds.

spring.cloud.stream.kafka.binder.zk-nodes

[localhost]

 

spring.cloud.stream.kafka.binder.zk-session-timeout

10000

ZK session timeout in milliseconds.

spring.cloud.stream.kafka.bindings

 
 

spring.cloud.stream.kafka.streams.binder.application-id

 
 

spring.cloud.stream.kafka.streams.binder.auto-add-partitions

 
 

spring.cloud.stream.kafka.streams.binder.auto-create-topics

 
 

spring.cloud.stream.kafka.streams.binder.brokers

 
 

spring.cloud.stream.kafka.streams.binder.configuration

 
 

spring.cloud.stream.kafka.streams.binder.consumer-properties

 
 

spring.cloud.stream.kafka.streams.binder.fetch-size

 
 

spring.cloud.stream.kafka.streams.binder.header-mapper-bean-name

 
 

spring.cloud.stream.kafka.streams.binder.headers

 
 

spring.cloud.stream.kafka.streams.binder.health-timeout

 
 

spring.cloud.stream.kafka.streams.binder.jaas

 
 

spring.cloud.stream.kafka.streams.binder.max-wait

 
 

spring.cloud.stream.kafka.streams.binder.min-partition-count

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-count

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-shutdown-timeout

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-time-window

 
 

spring.cloud.stream.kafka.streams.binder.producer-properties

 
 

spring.cloud.stream.kafka.streams.binder.queue-size

 
 

spring.cloud.stream.kafka.streams.binder.replication-factor

 
 

spring.cloud.stream.kafka.streams.binder.required-acks

 
 

spring.cloud.stream.kafka.streams.binder.serde-error

 

{@link org.apache.kafka.streams.errors.DeserializationExceptionHandler} to use when there is a Serde error. {@link KafkaStreamsBinderConfigurationProperties.SerdeError} values are used to provide the exception handler on consumer binding.

spring.cloud.stream.kafka.streams.binder.socket-buffer-size

 
 

spring.cloud.stream.kafka.streams.binder.zk-connection-timeout

 
 

spring.cloud.stream.kafka.streams.binder.zk-nodes

 
 

spring.cloud.stream.kafka.streams.binder.zk-session-timeout

 
 

spring.cloud.stream.kafka.streams.bindings

 
 

spring.cloud.stream.kafka.streams.time-window.advance-by

0

 

spring.cloud.stream.kafka.streams.time-window.length

0

 

spring.cloud.stream.metrics.export-properties

 

List of properties that are going to be appended to each message. This gets populate by onApplicationEvent, once the context refreshes to avoid overhead of doing per message basis.

spring.cloud.stream.metrics.key

 

The name of the metric being emitted. Should be an unique value per application. Defaults to: ${spring.application.name:${vcap.application.name:${spring.config.name:application}}}

spring.cloud.stream.metrics.meter-filter

 

Pattern to control the 'meters' one wants to capture. By default all 'meters' will be captured. For example, 'spring.integration.*' will only capture metric information for meters whose name starts with 'spring.integration'.

spring.cloud.stream.metrics.properties

 

Application properties that should be added to the metrics payload For example: spring.application**

spring.cloud.stream.metrics.schedule-interval

60s

Interval expressed as Duration for scheduling metrics snapshots publishing. Defaults to 60 seconds

spring.cloud.stream.override-cloud-connectors

false

This property is only applicable when the cloud profile is active and Spring Cloud Connectors are provided with the application. If the property is false (the default), the binder detects a suitable bound service (for example, a RabbitMQ service bound in Cloud Foundry for the RabbitMQ binder) and uses it for creating connections (usually through Spring Cloud Connectors). When set to true, this property instructs binders to completely ignore the bound services and rely on Spring Boot properties (for example, relying on the spring.rabbitmq.* properties provided in the environment for the RabbitMQ binder). The typical usage of this property is to be nested in a customized environment when connecting to multiple systems.

spring.cloud.stream.rabbit.binder.admin-addresses

[]

Urls for management plugins; only needed for queue affinity.

spring.cloud.stream.rabbit.binder.admin-adresses

 
 

spring.cloud.stream.rabbit.binder.compression-level

0

Compression level for compressed bindings; see 'java.util.zip.Deflator'.

spring.cloud.stream.rabbit.binder.connection-name-prefix

 

Prefix for connection names from this binder.

spring.cloud.stream.rabbit.binder.nodes

[]

Cluster member node names; only needed for queue affinity.

spring.cloud.stream.rabbit.bindings

 
 

spring.cloud.stream.schema-registry-client.cached

false

 

spring.cloud.stream.schema-registry-client.endpoint

 
 

spring.cloud.stream.schema.avro.dynamic-schema-generation-enabled

false

 

spring.cloud.stream.schema.avro.prefix

vnd

 

spring.cloud.stream.schema.avro.reader-schema

 
 

spring.cloud.stream.schema.avro.schema-imports

 

A list of files or directories that should be loaded first thus making them importable by subsequent schemas. Note that imported files should not reference each other. @parameter

spring.cloud.stream.schema.avro.schema-locations

 

The source directory of Apache Avro schema. This schema is used by this converter. If this schema depends on other schemas consider defining those those dependent ones in the {@link #schemaImports} @parameter

spring.cloud.stream.schema.server.allow-schema-deletion

false

Boolean flag to enable/disable schema deletion.

spring.cloud.stream.schema.server.path

 

Prefix for configuration resource paths (default is empty). Useful when embedding in another application when you don’t want to change the context path or servlet path.

spring.cloud.task.batch.command-line-runner-order

0

The order for the {@code CommandLineRunner} used to run batch jobs when {@code spring.cloud.task.batch.fail-on-job-failure=true}. Defaults to 0 (same as the {@link org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner}).

spring.cloud.task.batch.events.chunk-order

 

Properties for chunk listener order

spring.cloud.task.batch.events.chunk.enabled

true

This property is used to determine if a task should listen for batch chunk events.

spring.cloud.task.batch.events.enabled

true

This property is used to determine if a task should listen for batch events.

spring.cloud.task.batch.events.item-process-order

 

Properties for itemProcess listener order

spring.cloud.task.batch.events.item-process.enabled

true

This property is used to determine if a task should listen for batch item processed events.

spring.cloud.task.batch.events.item-read-order

 

Properties for itemRead listener order

spring.cloud.task.batch.events.item-read.enabled

true

This property is used to determine if a task should listen for batch item read events.

spring.cloud.task.batch.events.item-write-order

 

Properties for itemWrite listener order

spring.cloud.task.batch.events.item-write.enabled

true

This property is used to determine if a task should listen for batch item write events.

spring.cloud.task.batch.events.job-execution-order

 

Properties for jobExecution listener order

spring.cloud.task.batch.events.job-execution.enabled

true

This property is used to determine if a task should listen for batch job execution events.

spring.cloud.task.batch.events.skip-order

 

Properties for skip listener order

spring.cloud.task.batch.events.skip.enabled

true

This property is used to determine if a task should listen for batch skip events.

spring.cloud.task.batch.events.step-execution-order

 

Properties for stepExecution listener order

spring.cloud.task.batch.events.step-execution.enabled

true

This property is used to determine if a task should listen for batch step execution events.

spring.cloud.task.batch.fail-on-job-failure

false

This property is used to determine if a task app should return with a non zero exit code if a batch job fails.

spring.cloud.task.batch.fail-on-job-failure-poll-interval

5000

Fixed delay in milliseconds that Spring Cloud Task will wait when checking if {@link org.springframework.batch.core.JobExecution}s have completed, when spring.cloud.task.batch.failOnJobFailure is set to true. Defaults to 5000.

spring.cloud.task.batch.fail-on-job-failurewait-time

0

Maximum wait time in milliseconds that Spring Cloud Task will wait for tasks to complete when spring.cloud.task.batch.failOnJobFailure is set to true. Defaults to 0. 0 indicates no wait time is enforced.

spring.cloud.task.batch.job-names

 

Comma-separated list of job names to execute on startup (for instance, job1,job2). By default, all Jobs found in the context are executed.

spring.cloud.task.batch.listener.enabled

true

This property is used to determine if a task will be linked to the batch jobs that are run.

spring.cloud.task.closecontext-enabled

false

When set to true the context is closed at the end of the task. Else the context remains open.

spring.cloud.task.events.enabled

true

This property is used to determine if a task app should emit task events.

spring.cloud.task.executionid

 

An id that will be used by the task when updating the task execution.

spring.cloud.task.external-execution-id

 

An id that can be associated with a task.

spring.cloud.task.parent-execution-id

 

The id of the parent task execution id that launched this task execution. Defaults to null if task execution had no parent.

spring.cloud.task.single-instance-enabled

false

This property is used to determine if a task will execute if another task with the same app name is running.

spring.cloud.task.single-instance-lock-check-interval

500

Declares the time (in millis) that a task execution will wait between checks. Default time is: 500 millis.

spring.cloud.task.single-instance-lock-ttl

 

Declares the maximum amount of time (in millis) that a task execution can hold a lock to prevent another task from executing with a specific task name when the single-instance-enabled is set to true. Default time is: Integer.MAX_VALUE.

spring.cloud.task.table-prefix

TASK_

The prefix to append to the table names created by Spring Cloud Task.

spring.cloud.util.enabled

true

Enables creation of Spring Cloud utility beans.

spring.cloud.vault.app-id.app-id-path

app-id

Mount path of the AppId authentication backend.

spring.cloud.vault.app-id.network-interface

 

Network interface hint for the "MAC_ADDRESS" UserId mechanism.

spring.cloud.vault.app-id.user-id

MAC_ADDRESS

UserId mechanism. Can be either "MAC_ADDRESS", "IP_ADDRESS", a string or a class name.

spring.cloud.vault.app-role.app-role-path

approle

Mount path of the AppRole authentication backend.

spring.cloud.vault.app-role.role

 

Name of the role, optional, used for pull-mode.

spring.cloud.vault.app-role.role-id

 

The RoleId.

spring.cloud.vault.app-role.secret-id

 

The SecretId.

spring.cloud.vault.application-name

application

Application name for AppId authentication.

spring.cloud.vault.authentication

 
 

spring.cloud.vault.aws-ec2.aws-ec2-path

aws-ec2

Mount path of the AWS-EC2 authentication backend.

spring.cloud.vault.aws-ec2.identity-document

http://169.254.169.254/latest/dynamic/instance-identity/pkcs7

URL of the AWS-EC2 PKCS7 identity document.

spring.cloud.vault.aws-ec2.nonce

 

Nonce used for AWS-EC2 authentication. An empty nonce defaults to nonce generation.

spring.cloud.vault.aws-ec2.role

 

Name of the role, optional.

spring.cloud.vault.aws-iam.aws-path

aws

Mount path of the AWS authentication backend.

spring.cloud.vault.aws-iam.role

 

Name of the role, optional. Defaults to the friendly IAM name if not set.

spring.cloud.vault.aws-iam.server-name

 

Name of the server used to set {@code X-Vault-AWS-IAM-Server-ID} header in the headers of login requests.

spring.cloud.vault.aws.access-key-property

cloud.aws.credentials.accessKey

Target property for the obtained access key.

spring.cloud.vault.aws.backend

aws

aws backend path.

spring.cloud.vault.aws.enabled

false

Enable aws backend usage.

spring.cloud.vault.aws.role

 

Role name for credentials.

spring.cloud.vault.aws.secret-key-property

cloud.aws.credentials.secretKey

Target property for the obtained secret key.

spring.cloud.vault.azure-msi.azure-path

azure

Mount path of the Azure MSI authentication backend.

spring.cloud.vault.azure-msi.role

 

Name of the role.

spring.cloud.vault.cassandra.backend

cassandra

Cassandra backend path.

spring.cloud.vault.cassandra.enabled

false

Enable cassandra backend usage.

spring.cloud.vault.cassandra.password-property

spring.data.cassandra.password

Target property for the obtained password.

spring.cloud.vault.cassandra.role

 

Role name for credentials.

spring.cloud.vault.cassandra.username-property

spring.data.cassandra.username

Target property for the obtained username.

spring.cloud.vault.config.lifecycle.enabled

true

Enable lifecycle management.

spring.cloud.vault.config.order

0

Used to set a {@link org.springframework.core.env.PropertySource} priority. This is useful to use Vault as an override on other property sources. @see org.springframework.core.PriorityOrdered

spring.cloud.vault.connection-timeout

5000

Connection timeout;

spring.cloud.vault.consul.backend

consul

Consul backend path.

spring.cloud.vault.consul.enabled

false

Enable consul backend usage.

spring.cloud.vault.consul.role

 

Role name for credentials.

spring.cloud.vault.consul.token-property

spring.cloud.consul.token

Target property for the obtained token.

spring.cloud.vault.database.backend

database

Database backend path.

spring.cloud.vault.database.enabled

false

Enable database backend usage.

spring.cloud.vault.database.password-property

spring.datasource.password

Target property for the obtained password.

spring.cloud.vault.database.role

 

Role name for credentials.

spring.cloud.vault.database.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.discovery.enabled

false

Flag to indicate that Vault server discovery is enabled (vault server URL will be looked up via discovery).

spring.cloud.vault.discovery.service-id

vault

Service id to locate Vault.

spring.cloud.vault.enabled

true

Enable Vault config server.

spring.cloud.vault.fail-fast

false

Fail fast if data cannot be obtained from Vault.

spring.cloud.vault.gcp-gce.gcp-path

gcp

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.gcp-gce.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.gcp-gce.service-account

 

Optional service account id. Using the default id if left unconfigured.

spring.cloud.vault.gcp-iam.credentials.encoded-key

 

The base64 encoded contents of an OAuth2 account private key in JSON format.

spring.cloud.vault.gcp-iam.credentials.location

 

Location of the OAuth2 credentials private key. <p> Since this is a Resource, the private key can be in a multitude of locations, such as a local file system, classpath, URL, etc.

spring.cloud.vault.gcp-iam.gcp-path

gcp

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.gcp-iam.jwt-validity

15m

Validity of the JWT token.

spring.cloud.vault.gcp-iam.project-id

 

Overrides the GCP project Id.

spring.cloud.vault.gcp-iam.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.gcp-iam.service-account-id

 

Overrides the GCP service account Id.

spring.cloud.vault.generic.application-name

application

Application name to be used for the context.

spring.cloud.vault.generic.backend

secret

Name of the default backend.

spring.cloud.vault.generic.default-context

application

Name of the default context.

spring.cloud.vault.generic.enabled

true

Enable the generic backend.

spring.cloud.vault.generic.profile-separator

/

Profile-separator to combine application name and profile.

spring.cloud.vault.host

localhost

Vault server host.

spring.cloud.vault.kubernetes.kubernetes-path

kubernetes

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.kubernetes.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.kubernetes.service-account-token-file

/var/run/secrets/kubernetes.io/serviceaccount/token

Path to the service account token file.

spring.cloud.vault.kv.application-name

application

Application name to be used for the context.

spring.cloud.vault.kv.backend

secret

Name of the default backend.

spring.cloud.vault.kv.backend-version

2

Key-Value backend version. Currently supported versions are: <ul> <li>Version 1 (unversioned key-value backend).</li> <li>Version 2 (versioned key-value backend).</li> </ul>

spring.cloud.vault.kv.default-context

application

Name of the default context.

spring.cloud.vault.kv.enabled

false

Enable the kev-value backend.

spring.cloud.vault.kv.profile-separator

/

Profile-separator to combine application name and profile.

spring.cloud.vault.mongodb.backend

mongodb

Cassandra backend path.

spring.cloud.vault.mongodb.enabled

false

Enable mongodb backend usage.

spring.cloud.vault.mongodb.password-property

spring.data.mongodb.password

Target property for the obtained password.

spring.cloud.vault.mongodb.role

 

Role name for credentials.

spring.cloud.vault.mongodb.username-property

spring.data.mongodb.username

Target property for the obtained username.

spring.cloud.vault.mysql.backend

mysql

mysql backend path.

spring.cloud.vault.mysql.enabled

false

Enable mysql backend usage.

spring.cloud.vault.mysql.password-property

spring.datasource.password

Target property for the obtained username.

spring.cloud.vault.mysql.role

 

Role name for credentials.

spring.cloud.vault.mysql.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.port

8200

Vault server port.

spring.cloud.vault.postgresql.backend

postgresql

postgresql backend path.

spring.cloud.vault.postgresql.enabled

false

Enable postgresql backend usage.

spring.cloud.vault.postgresql.password-property

spring.datasource.password

Target property for the obtained username.

spring.cloud.vault.postgresql.role

 

Role name for credentials.

spring.cloud.vault.postgresql.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.rabbitmq.backend

rabbitmq

rabbitmq backend path.

spring.cloud.vault.rabbitmq.enabled

false

Enable rabbitmq backend usage.

spring.cloud.vault.rabbitmq.password-property

spring.rabbitmq.password

Target property for the obtained password.

spring.cloud.vault.rabbitmq.role

 

Role name for credentials.

spring.cloud.vault.rabbitmq.username-property

spring.rabbitmq.username

Target property for the obtained username.

spring.cloud.vault.read-timeout

15000

Read timeout;

spring.cloud.vault.scheme

https

Protocol scheme. Can be either "http" or "https".

spring.cloud.vault.ssl.cert-auth-path

cert

Mount path of the TLS cert authentication backend.

spring.cloud.vault.ssl.key-store

 

Trust store that holds certificates and private keys.

spring.cloud.vault.ssl.key-store-password

 

Password used to access the key store.

spring.cloud.vault.ssl.trust-store

 

Trust store that holds SSL certificates.

spring.cloud.vault.ssl.trust-store-password

 

Password used to access the trust store.

spring.cloud.vault.token

 

Static vault token. Required if {@link #authentication} is {@code TOKEN}.

spring.cloud.vault.uri

 

Vault URI. Can be set with scheme, host and port.

spring.cloud.zookeeper.base-sleep-time-ms

50

Initial amount of time to wait between retries

spring.cloud.zookeeper.block-until-connected-unit

 

The unit of time related to blocking on connection to Zookeeper

spring.cloud.zookeeper.block-until-connected-wait

10

Wait time to block on connection to Zookeeper

spring.cloud.zookeeper.connect-string

localhost:2181

Connection string to the Zookeeper cluster

spring.cloud.zookeeper.default-health-endpoint

 

Default health endpoint that will be checked to verify that a dependency is alive

spring.cloud.zookeeper.dependencies

 

Mapping of alias to ZookeeperDependency. From Ribbon perspective the alias is actually serviceID since Ribbon can’t accept nested structures in serviceID

spring.cloud.zookeeper.dependency-configurations

 
 

spring.cloud.zookeeper.dependency-names

 
 

spring.cloud.zookeeper.discovery.enabled

true

 

spring.cloud.zookeeper.discovery.initial-status

 

The initial status of this instance (defaults to {@link StatusConstants#STATUS_UP}).

spring.cloud.zookeeper.discovery.instance-host

 

Predefined host with which a service can register itself in Zookeeper. Corresponds to the {code address} from the URI spec.

spring.cloud.zookeeper.discovery.instance-id

 

Id used to register with zookeeper. Defaults to a random UUID.

spring.cloud.zookeeper.discovery.instance-port

 

Port to register the service under (defaults to listening port)

spring.cloud.zookeeper.discovery.instance-ssl-port

 

Ssl port of the registered service.

spring.cloud.zookeeper.discovery.metadata

 

Gets the metadata name/value pairs associated with this instance. This information is sent to zookeeper and can be used by other instances.

spring.cloud.zookeeper.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.zookeeper.discovery.register

true

Register as a service in zookeeper.

spring.cloud.zookeeper.discovery.root

/services

Root Zookeeper folder in which all instances are registered

spring.cloud.zookeeper.discovery.uri-spec

{scheme}://{address}:{port}

The URI specification to resolve during service registration in Zookeeper

spring.cloud.zookeeper.enabled

true

Is Zookeeper enabled

spring.cloud.zookeeper.max-retries

10

Max number of times to retry

spring.cloud.zookeeper.max-sleep-ms

500

Max time in ms to sleep on each retry

spring.cloud.zookeeper.prefix

 

Common prefix that will be applied to all Zookeeper dependencies' paths

spring.integration.poller.fixed-delay

1000

Fixed delay for default poller.

spring.integration.poller.max-messages-per-poll

1

Maximum messages per poll for the default poller.

spring.sleuth.annotation.enabled

true

 

spring.sleuth.async.configurer.enabled

true

Enable default AsyncConfigurer.

spring.sleuth.async.enabled

true

Enable instrumenting async related components so that the tracing information is passed between threads.

spring.sleuth.async.ignored-beans

 

List of {@link java.util.concurrent.Executor} bean names that should be ignored and not wrapped in a trace representation.

spring.sleuth.baggage-keys

 

List of baggage key names that should be propagated out of process. These keys will be prefixed with baggage before the actual key. This property is set in order to be backward compatible with previous Sleuth versions. @see brave.propagation.ExtraFieldPropagation.FactoryBuilder#addPrefixedFields(String, java.util.Collection)

spring.sleuth.enabled

true

 

spring.sleuth.feign.enabled

true

Enable span information propagation when using Feign.

spring.sleuth.feign.processor.enabled

true

Enable post processor that wraps Feign Context in its tracing representations.

spring.sleuth.http.enabled

true

 

spring.sleuth.http.legacy.enabled

false

 

spring.sleuth.hystrix.strategy.enabled

true

Enable custom HystrixConcurrencyStrategy that wraps all Callable instances into their Sleuth representative - the TraceCallable.

spring.sleuth.integration.enabled

true

Enable Spring Integration sleuth instrumentation.

spring.sleuth.integration.patterns

[!hystrixStreamOutput*, *]

An array of patterns against which channel names will be matched. @see org.springframework.integration.config.GlobalChannelInterceptor#patterns(). Defaults to any channel name not matching the Hystrix Stream channel name.

spring.sleuth.integration.websockets.enabled

true

Enable tracing for WebSockets.

spring.sleuth.keys.http.headers

 

Additional headers that should be added as tags if they exist. If the header value is multi-valued, the tag value will be a comma-separated, single-quoted list.

spring.sleuth.keys.http.prefix

http.

Prefix for header names if they are added as tags.

spring.sleuth.log.slf4j.enabled

true

Enable a {@link Slf4jScopeDecorator} that prints tracing information in the logs.

spring.sleuth.log.slf4j.whitelisted-mdc-keys

 

A list of keys to be put from baggage to MDC.

spring.sleuth.messaging.enabled

false

Should messaging be turned on.

spring.sleuth.messaging.jms.enabled

false

 

spring.sleuth.messaging.jms.remote-service-name

jms

 

spring.sleuth.messaging.kafka.enabled

false

 

spring.sleuth.messaging.kafka.remote-service-name

kafka

 

spring.sleuth.messaging.rabbit.enabled

false

 

spring.sleuth.messaging.rabbit.remote-service-name

rabbitmq

 

spring.sleuth.opentracing.enabled

true

 

spring.sleuth.propagation-keys

 

List of fields that are referenced the same in-process as it is on the wire. For example, the name "x-vcap-request-id" would be set as-is including the prefix. <p> Note: {@code fieldName} will be implicitly lower-cased. @see brave.propagation.ExtraFieldPropagation.FactoryBuilder#addField(String)

spring.sleuth.reactor.enabled.enabled

true

When true enables instrumentation for reactor.

spring.sleuth.rxjava.schedulers.hook.enabled

true

Enable support for RxJava via RxJavaSchedulersHook.

spring.sleuth.rxjava.schedulers.ignoredthreads

[HystrixMetricPoller, ^RxComputation.*$]

Thread names for which spans will not be sampled.

spring.sleuth.sampler.probability

0.1

Probability of requests that should be sampled. E.g. 1.0 - 100% requests should be sampled. The precision is whole-numbers only (i.e. there’s no support for 0.1% of the traces).

spring.sleuth.scheduled.enabled

true

Enable tracing for {@link org.springframework.scheduling.annotation.Scheduled}.

spring.sleuth.scheduled.skip-pattern

org.springframework.cloud.netflix.hystrix.stream.HystrixStreamTask

Pattern for the fully qualified name of a class that should be skipped.

spring.sleuth.supports-join

true

True means the tracing system supports sharing a span ID between a client and server.

spring.sleuth.trace-id128

false

When true, generate 128-bit trace IDs instead of 64-bit ones.

spring.sleuth.web.additional-skip-pattern

 

Additional pattern for URLs that should be skipped in tracing. This will be appended to the {@link SleuthWebProperties#skipPattern}.

spring.sleuth.web.client.enabled

true

Enable interceptor injecting into {@link org.springframework.web.client.RestTemplate}.

spring.sleuth.web.client.skip-pattern

 

Pattern for URLs that should be skipped in client side tracing.

spring.sleuth.web.enabled

true

When true enables instrumentation for web applications.

spring.sleuth.web.exception-throwing-filter-enabled

true

Flag to toggle the presence of a filter that logs thrown exceptions.

spring.sleuth.web.filter-order

 

Order in which the tracing filters should be registered. Defaults to {@link TraceHttpAutoConfiguration#TRACING_FILTER_ORDER}.

spring.sleuth.web.skip-pattern

/api-docs.*

/autoconfig

/configprops

/dump

/health

/info

/metrics.*

/mappings

/trace

/swagger.*

.*\.png

.*\.css

.*\.js

.*\.html

/favicon.ico

/hystrix.stream

/application/.*

/actuator.*

/cloudfoundryapplication

Pattern for URLs that should be skipped in tracing.

spring.sleuth.zuul.enabled

true

Enable span information propagation when using Zuul.

spring.zipkin.base-url

http://localhost:9411/

URL of the zipkin query server instance. You can also provide the service id of the Zipkin server if Zipkin’s registered in service discovery (e.g. http://zipkinserver/)

spring.zipkin.compression.enabled

false

 

spring.zipkin.discovery-client-enabled

 

If set to {@code false}, will treat the {@link ZipkinProperties#baseUrl} as a URL always

spring.zipkin.enabled

true

Enables sending spans to Zipkin

spring.zipkin.encoder

 

Encoding type of spans sent to Zipkin. Set to {@link SpanBytesEncoder#JSON_V1} if your server is not recent.

spring.zipkin.locator.discovery.enabled

false

Enabling of locating the host name via service discovery

spring.zipkin.message-timeout

1

Timeout in seconds before pending spans will be sent in batches to Zipkin

spring.zipkin.sender.type

 

Means of sending spans to Zipkin

spring.zipkin.service.name

 

The name of the service, from which the Span was sent via HTTP, that should appear in Zipkin

stubrunner.amqp.enabled

false

Whether to enable support for Stub Runner and AMQP.

stubrunner.amqp.mockCOnnection

true

Whether to enable support for Stub Runner and AMQP mocked connection factory.

stubrunner.classifier

stubs

The classifier to use by default in ivy co-ordinates for a stub.

stubrunner.cloud.consul.enabled

true

Whether to enable stubs registration in Consul.

stubrunner.cloud.delegate.enabled

true

Whether to enable DiscoveryClient’s Stub Runner implementation.

stubrunner.cloud.enabled

true

Whether to enable Spring Cloud support for Stub Runner.

stubrunner.cloud.eureka.enabled

true

Whether to enable stubs registration in Eureka.

stubrunner.cloud.ribbon.enabled

true

Whether to enable Stub Runner’s Ribbon integration.

stubrunner.cloud.stubbed.discovery.enabled

true

Whether Service Discovery should be stubbed for Stub Runner. If set to false, stubs will get registered in real service discovery.

stubrunner.cloud.zookeeper.enabled

true

Whether to enable stubs registration in Zookeeper.

stubrunner.consumer-name

 

You can override the default {@code spring.application.name} of this field by setting a value to this parameter.

stubrunner.delete-stubs-after-test

true

If set to {@code false} will NOT delete stubs from a temporary folder after running tests

stubrunner.ids

[]

The ids of the stubs to run in "ivy" notation ([groupId]:artifactId:[version]:[classifier][:port]). {@code groupId}, {@code classifier}, {@code version} and {@code port} can be optional.

stubrunner.ids-to-service-ids

 

Mapping of Ivy notation based ids to serviceIds inside your application Example "a:b" → "myService" "artifactId" → "myOtherService"

stubrunner.integration.enabled

true

Whether to enable Stub Runner integration with Spring Integration.

stubrunner.mappings-output-folder

 

Dumps the mappings of each HTTP server to the selected folder

stubrunner.max-port

15000

Max value of a port for the automatically started WireMock server

stubrunner.min-port

10000

Min value of a port for the automatically started WireMock server

stubrunner.password

 

Repository password

stubrunner.properties

 

Map of properties that can be passed to custom {@link org.springframework.cloud.contract.stubrunner.StubDownloaderBuilder}

stubrunner.proxy-host

 

Repository proxy host

stubrunner.proxy-port

 

Repository proxy port

stubrunner.stream.enabled

true

Whether to enable Stub Runner integration with Spring Cloud Stream.

stubrunner.stubs-mode

 

Pick where the stubs should come from

stubrunner.stubs-per-consumer

false

Should only stubs for this particular consumer get registered in HTTP server stub.

stubrunner.username

 

Repository username

wiremock.rest-template-ssl-enabled

false

 

wiremock.server.files

 
 

wiremock.server.https-port

-1

 

wiremock.server.port

8080

 

wiremock.server.stubs

 
\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__building.html b/Greenwich.M3/multi/multi__building.html new file mode 100644 index 00000000..c2a518f5 --- /dev/null +++ b/Greenwich.M3/multi/multi__building.html @@ -0,0 +1,47 @@ + + + 140. Building

140. Building

140.1 Basic Compile and Test

To build the source you will need to install JDK 1.7.

Spring Cloud uses Maven for most build-related activities, and you +should be able to get off the ground quite quickly by cloning the +project you are interested in and typing

$ ./mvnw install
[Note]Note

You can also install Maven (>=3.3.3) yourself and run the mvn command +in place of ./mvnw in the examples below. If you do that you also +might need to add -P spring if your local Maven settings do not +contain repository declarations for spring pre-release artifacts.

[Note]Note

Be aware that you might need to increase the amount of memory +available to Maven by setting a MAVEN_OPTS environment variable with +a value like -Xmx512m -XX:MaxPermSize=128m. We try to cover this in +the .mvn configuration, so if you find you have to do it to make a +build succeed, please raise a ticket to get the settings added to +source control.

For hints on how to build the project look in .travis.yml if there +is one. There should be a "script" and maybe "install" command. Also +look at the "services" section to see if any services need to be +running locally (e.g. mongo or rabbit). Ignore the git-related bits +that you might find in "before_install" since they’re related to setting git +credentials and you already have those.

The projects that require middleware generally include a +docker-compose.yml, so consider using +Docker Compose to run the middeware servers +in Docker containers. See the README in the +scripts demo +repository for specific instructions about the common cases of mongo, +rabbit and redis.

[Note]Note

If all else fails, build with the command from .travis.yml (usually +./mvnw install).

140.2 Documentation

The spring-cloud-build module has a "docs" profile, and if you switch +that on it will try to build asciidoc sources from +src/main/asciidoc. As part of that process it will look for a +README.adoc and process it by loading all the includes, but not +parsing or rendering it, just copying it to ${main.basedir} +(defaults to $../../../.., i.e. the root of the project). If there are +any changes in the README it will then show up after a Maven build as +a modified file in the correct place. Just commit it and push the change.

140.3 Working with the code

If you don’t have an IDE preference we would recommend that you use +Spring Tools Suite or +Eclipse when working with the code. We use the +m2eclipse eclipse plugin for maven support. Other IDEs and tools +should also work without issue as long as they use Maven 3.3.3 or better.

140.3.1 Importing into eclipse with m2eclipse

We recommend the m2eclipse eclipse plugin when working with +eclipse. If you don’t already have m2eclipse installed it is available from the "eclipse +marketplace".

[Note]Note

Older versions of m2e do not support Maven 3.3, so once the +projects are imported into Eclipse you will also need to tell +m2eclipse to use the right profile for the projects. If you +see many different errors related to the POMs in the projects, check +that you have an up to date installation. If you can’t upgrade m2e, +add the "spring" profile to your settings.xml. Alternatively you can +copy the repository settings from the "spring" profile of the parent +pom into your settings.xml.

140.3.2 Importing into eclipse without m2eclipse

If you prefer not to use m2eclipse you can generate eclipse project metadata using the +following command:

$ ./mvnw eclipse:eclipse

The generated eclipse projects can be imported by selecting import existing projects +from the file menu.

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__configmap_propertysource.html b/Greenwich.M3/multi/multi__configmap_propertysource.html new file mode 100644 index 00000000..dc2d592c --- /dev/null +++ b/Greenwich.M3/multi/multi__configmap_propertysource.html @@ -0,0 +1,105 @@ + + + 134. ConfigMap PropertySource

134. ConfigMap PropertySource

Kubernetes provides a resource named ConfigMap to externalize the +parameters to pass to your application in the form of key-value pairs or embedded application.properties|yaml files. +The Spring Cloud Kubernetes Config project makes Kubernetes `ConfigMap`s available +during application bootstrapping and triggers hot reloading of beans or Spring context when changes are detected on +observed `ConfigMap`s.

The default behavior is to create a ConfigMapPropertySource based on a Kubernetes ConfigMap which has metadata.name of either the name of +your Spring application (as defined by its spring.application.name property) or a custom name defined within the +bootstrap.properties file under the following key spring.cloud.kubernetes.config.name.

However, more advanced configuration are possible where multiple ConfigMaps can be used +This is made possible by the spring.cloud.kubernetes.config.sources list. +For example one could define the following ConfigMaps

spring:
+  application:
+    name: cloud-k8s-app
+  cloud:
+    kubernetes:
+      config:
+        name: default-name
+        namespace: default-namespace
+        sources:
+         # Spring Cloud Kubernetes will lookup a ConfigMap named c1 in namespace default-namespace
+         - name: c1
+         # Spring Cloud Kubernetes will lookup a ConfigMap named default-name in whatever namespace n2
+         - namespace: n2
+         # Spring Cloud Kubernetes will lookup a ConfigMap named c3 in namespace n3
+         - namespace: n3
+           name: c3

In the example above, it spring.cloud.kubernetes.config.namespace had not been set, +then the ConfigMap named c1 would be looked up in the namespace that the application runs

Any matching ConfigMap that is found, will be processed as follows:

  • apply individual configuration properties.
  • apply as yaml the content of any property named application.yaml
  • apply as properties file the content of any property named application.properties

The single exception to the aforementioned flow is when the ConfigMap contains a single key that indicates +the file is a YAML or Properties file. In that case the name of the key does NOT have to be application.yaml or +application.properties (it can be anything) and the value of the property will be treated correctly. +This features facilitates the use case where the ConfigMap was created using something like:

kubectl create configmap game-config --from-file=/path/to/app-config.yaml

Example:

Let’s assume that we have a Spring Boot application named demo that uses properties to read its thread pool +configuration.

  • pool.size.core
  • pool.size.maximum

This can be externalized to config map in yaml format:

kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: demo
+data:
+  pool.size.core: 1
+  pool.size.max: 16

Individual properties work fine for most cases but sometimes embedded yaml is more convenient. In this case we will +use a single property named application.yaml to embed our yaml:

 ```yaml
+kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: demo
+data:
+  application.yaml: |-
+    pool:
+      size:
+        core: 1
+        max:16
The following also works:
+
+ ```yaml
+kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: demo
+data:
+  custom-name.yaml: |-
+    pool:
+      size:
+        core: 1
+        max:16

Spring Boot applications can also be configured differently depending on active profiles which will be merged together +when the ConfigMap is read. It is possible to provide different property values for different profiles using an +application.properties|yaml property, specifying profile-specific values each in their own document +(indicated by the --- sequence) as follows:

kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: demo
+data:
+  application.yml: |-
+    greeting:
+      message: Say Hello to the World
+    farewell:
+      message: Say Goodbye
+    ---
+    spring:
+      profiles: development
+    greeting:
+      message: Say Hello to the Developers
+    farewell:
+      message: Say Goodbye to the Developers
+    ---
+    spring:
+      profiles: production
+    greeting:
+      message: Say Hello to the Ops

In the above case, the configuration loaded into your Spring Application with the development profile will be:

  greeting:
+    message: Say Hello to the Developers
+  farewell:
+    message: Say Goodbye to the Developers

whereas if the production profile is active, the configuration will be:

  greeting:
+    message: Say Hello to the Ops
+  farewell:
+    message: Say Goodbye

If both profiles are active, the property which appears last within the configmap will overwrite preceding values.

To tell to Spring Boot which profile should be enabled at bootstrap, a system property can be passed to the Java +command launching your Spring Boot application using an env variable that you will define with the OpenShift +DeploymentConfig or Kubernetes ReplicationConfig resource file as follows:

apiVersion: v1
+kind: DeploymentConfig
+spec:
+  replicas: 1
+  ...
+    spec:
+      containers:
+      - env:
+        - name: JAVA_APP_DIR
+          value: /deployments
+        - name: JAVA_OPTIONS
+          value: -Dspring.profiles.active=developer

Notes: +- check the security configuration section, to access config maps from inside a pod you need to have the correct +Kubernetes service accounts, roles and role bindings.

Table 134.1. Properties:

NameTypeDefaultDescription

spring.cloud.kubernetes.config.enableApi

Boolean

true

Enable/Disable consuming ConfigMaps via APIs

spring.cloud.kubernetes.config.enabled

Boolean

true

Enable Secrets PropertySource

spring.cloud.kubernetes.config.name

String

${spring.application.name}

Sets the name of ConfigMap to lookup

spring.cloud.kubernetes.config.namespace

String

Client namespace

Sets the Kubernetes namespace where to lookup

spring.cloud.kubernetes.config.paths

List

null

Sets the paths where ConfigMaps are mounted


\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__contributing.html b/Greenwich.M3/multi/multi__contributing.html new file mode 100644 index 00000000..6fec8633 --- /dev/null +++ b/Greenwich.M3/multi/multi__contributing.html @@ -0,0 +1,28 @@ + + + 141. Contributing

141. Contributing

Spring Cloud is released under the non-restrictive Apache 2.0 license, +and follows a very standard Github development process, using Github +tracker for issues and merging pull requests into master. If you want +to contribute even something trivial please do not hesitate, but +follow the guidelines below.

141.1 Sign the Contributor License Agreement

Before we accept a non-trivial patch or pull request we will need you to sign the +Contributor License Agreement. +Signing the contributor’s agreement does not grant anyone commit rights to the main +repository, but it does mean that we can accept your contributions, and you will get an +author credit if we do. Active contributors might be asked to join the core team, and +given the ability to merge pull requests.

141.2 Code of Conduct

This project adheres to the Contributor Covenant code of +conduct. By participating, you are expected to uphold this code. Please report +unacceptable behavior to spring-code-of-conduct@pivotal.io.

141.3 Code Conventions and Housekeeping

None of these is essential for a pull request, but they will all help. They can also be +added after the original pull request but before a merge.

  • Use the Spring Framework code format conventions. If you use Eclipse +you can import formatter settings using the +eclipse-code-formatter.xml file from the +Spring +Cloud Build project. If using IntelliJ, you can use the +Eclipse Code Formatter +Plugin to import the same file.
  • Make sure all new .java files to have a simple Javadoc class comment with at least an +@author tag identifying you, and preferably at least a paragraph on what the class is +for.
  • Add the ASF license header comment to all new .java files (copy from existing files +in the project)
  • Add yourself as an @author to the .java files that you modify substantially (more +than cosmetic changes).
  • Add some Javadocs and, if you change the namespace, some XSD doc elements.
  • A few unit tests would help a lot as well — someone has to do it.
  • If no-one else is using your branch, please rebase it against the current master (or +other target branch in the main project).
  • When writing a commit message please follow these conventions, +if you are fixing an existing issue please add Fixes gh-XXXX at the end of the commit +message (where XXXX is the issue number).
\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__discoveryclient_for_kubernetes.html b/Greenwich.M3/multi/multi__discoveryclient_for_kubernetes.html new file mode 100644 index 00000000..d98307c0 --- /dev/null +++ b/Greenwich.M3/multi/multi__discoveryclient_for_kubernetes.html @@ -0,0 +1,20 @@ + + + Part XVIII. DiscoveryClient for Kubernetes

Part XVIII. DiscoveryClient for Kubernetes

This project provides an implementation of Discovery Client +for Kubernetes. +This allows you to query Kubernetes endpoints (see services) by name. +A service is typically exposed by the Kubernetes API server as a collection of endpoints which represent http, https addresses that a client can +access from a Spring Boot application running as a pod. This discovery feature is also used by the Spring Cloud Kubernetes Ribbon project +to fetch the list of the endpoints defined for an application to be load balanced.

This is something that you get for free just by adding the following dependency inside your project:

<dependency>
+    <groupId>org.springframework.cloud</groupId>
+    <artifactId>spring-cloud-starter-kubernetes</artifactId>
+    <version>${latest.version}</version>
+</dependency>

To enable loading of the DiscoveryClient, add @EnableDiscoveryClient to the according configuration or application class like this:

@SpringBootApplication
+@EnableDiscoveryClient
+public class Application {
+  public static void main(String[] args) {
+    SpringApplication.run(Application.class, args);
+  }
+}

Then you can inject the client in your code simply by:

@Autowired
+private DiscoveryClient discoveryClient;

If for any reason you need to disable the DiscoveryClient you can simply set the following property in application.properties:

spring.cloud.kubernetes.discovery.enabled=false

Some Spring Cloud components use the DiscoveryClient in order to obtain info about the local service instance. For +this to work you need to align the Kubernetes service name with the spring.application.name property.

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__examples_2.html b/Greenwich.M3/multi/multi__examples_2.html new file mode 100644 index 00000000..6c817232 --- /dev/null +++ b/Greenwich.M3/multi/multi__examples_2.html @@ -0,0 +1,3 @@ + + + Part XXV. Examples

Part XXV. Examples

List of examples using these projects:

<TBD>

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__kubernetes_awareness.html b/Greenwich.M3/multi/multi__kubernetes_awareness.html new file mode 100644 index 00000000..9f55f9c7 --- /dev/null +++ b/Greenwich.M3/multi/multi__kubernetes_awareness.html @@ -0,0 +1,9 @@ + + + Part XXI. Kubernetes Awareness

Part XXI. Kubernetes Awareness

All of the features described above will work equally well regardless of whether your application is running inside +Kubernetes or not. This is really helpful for development and troubleshooting. +From a development point of view, this is really helpful as you can start your Spring Boot application and debug one +of the modules part of this project. It is not required to deploy it in Kubernetes +as the code of the project relies on the +[Fabric8 Kubernetes Java client](https://github.com/fabric8io/kubernetes-client) which is a fluent DSL able to +communicate using http protocol to the REST API of Kubernetes Server.

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__kubernetes_profile_autoconfiguration.html b/Greenwich.M3/multi/multi__kubernetes_profile_autoconfiguration.html new file mode 100644 index 00000000..336ac9c8 --- /dev/null +++ b/Greenwich.M3/multi/multi__kubernetes_profile_autoconfiguration.html @@ -0,0 +1,5 @@ + + + 137. Kubernetes Profile Autoconfiguration

137. Kubernetes Profile Autoconfiguration

When the application runs as a pod inside Kubernetes a Spring profile named kubernetes will automatically get activated. +This allows the developer to customize the configuration, to define beans that will be applied when the Spring Boot application is deployed +within the Kubernetes platform (e.g. different dev and prod configuration).

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__kubernetes_propertysource_implementations.html b/Greenwich.M3/multi/multi__kubernetes_propertysource_implementations.html new file mode 100644 index 00000000..f496b7e2 --- /dev/null +++ b/Greenwich.M3/multi/multi__kubernetes_propertysource_implementations.html @@ -0,0 +1,6 @@ + + + Part XIX. Kubernetes PropertySource implementations

Part XIX. Kubernetes PropertySource implementations

The most common approach to configure your Spring Boot application is to create an application.properties|yaml or +an application-profile.properties|yaml file containing key-value pairs providing customization values to your +application or Spring Boot starters. Users may override these properties by specifying system properties or environment +variables.

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__leader_election.html b/Greenwich.M3/multi/multi__leader_election.html new file mode 100644 index 00000000..db43bff9 --- /dev/null +++ b/Greenwich.M3/multi/multi__leader_election.html @@ -0,0 +1,3 @@ + + + Part XXIII. Leader Election

Part XXIII. Leader Election

<TBD>

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__namespace.html b/Greenwich.M3/multi/multi__namespace.html new file mode 100644 index 00000000..4ba15449 --- /dev/null +++ b/Greenwich.M3/multi/multi__namespace.html @@ -0,0 +1,8 @@ + + + 138. Namespace

138. Namespace

Most of the components provided in this project need to know the namespace. For Kubernetes (1.3+) the namespace is made available to pod as part of the service account secret and automatically detected by the client. +For earlier version it needs to be specified as an env var to the pod. A quick way to do this is:

env:
+- name: "KUBERNETES_NAMESPACE"
+  valueFrom:
+    fieldRef:
+      fieldPath: "metadata.namespace"
\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__other_resources.html b/Greenwich.M3/multi/multi__other_resources.html new file mode 100644 index 00000000..8629a5e0 --- /dev/null +++ b/Greenwich.M3/multi/multi__other_resources.html @@ -0,0 +1,3 @@ + + + Part XXVI. Other Resources

Part XXVI. Other Resources

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__pod_health_indicator.html b/Greenwich.M3/multi/multi__pod_health_indicator.html new file mode 100644 index 00000000..8edfa68a --- /dev/null +++ b/Greenwich.M3/multi/multi__pod_health_indicator.html @@ -0,0 +1,4 @@ + + + Part XXII. Pod Health Indicator

Part XXII. Pod Health Indicator

Spring Boot uses HealthIndicator to expose info about the health of an application. +That makes it really useful for exposing health related information to the user and are also a good fit for use as readiness probes.

The Kubernetes health indicator which is part of the core module exposes the following info:

  • pod name, ip address, namespace, service account, node name and its ip address
  • flag that indicates if the Spring Boot application is internal or external to Kubernetes
\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__propertysource_reload.html b/Greenwich.M3/multi/multi__propertysource_reload.html new file mode 100644 index 00000000..6091dd51 --- /dev/null +++ b/Greenwich.M3/multi/multi__propertysource_reload.html @@ -0,0 +1,49 @@ + + + 136. PropertySource Reload

136. PropertySource Reload

Some applications may need to detect changes on external property sources and update their internal status to reflect the new configuration. +The reload feature of Spring Cloud Kubernetes is able to trigger an application reload when a related ConfigMap or +Secret changes.

This feature is disabled by default and can be enabled using the configuration property spring.cloud.kubernetes.reload.enabled=true + (eg. in the application.properties file).

The following levels of reload are supported (property spring.cloud.kubernetes.reload.strategy): +- refresh (default): only configuration beans annotated with @ConfigurationProperties or @RefreshScope are reloaded. +This reload level leverages the refresh feature of Spring Cloud Context. +- restart_context: the whole Spring ApplicationContext is gracefully restarted. Beans are recreated with the new configuration. +- shutdown: the Spring ApplicationContext is shut down to activate a restart of the container. + When using this level, make sure that the lifecycle of all non-daemon threads is bound to the ApplicationContext + and that a replication controller or replica set is configured to restart the pod.

Example:

Assuming that the reload feature is enabled with default settings (refresh mode), the following bean will be refreshed when the config map changes:

@Configuration
+@ConfigurationProperties(prefix = "bean")
+public class MyConfig {
+
+    private String message = "a message that can be changed live";
+
+    // getter and setters
+
+}

A way to see that changes effectively happen is creating another bean that prints the message periodically.

@Component
+public class MyBean {
+
+    @Autowired
+    private MyConfig config;
+
+    @Scheduled(fixedDelay = 5000)
+    public void hello() {
+        System.out.println("The message is: " + config.getMessage());
+    }
+}

The message printed by the application can be changed using a ConfigMap as follows:

apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: reload-example
+data:
+  application.properties: |-
+    bean.message=Hello World!

Any change to the property named bean.message in the ConfigMap associated to the pod will be reflected in the +output. More generally speaking, changes associated to properties prefixed with the value defined by the prefix +field of the @ConfigurationProperties annotation will be detected and reflected in the application. +[Associating a ConfigMap to a pod](#configmap-propertysource) is explained above.

The full example is available in [spring-cloud-kubernetes-reload-example](spring-cloud-kubernetes-examples/kubernetes-reload-example).

The reload feature supports two operating modes: +- event (default): watches for changes in config maps or secrets using the Kubernetes API (web socket). +Any event will produce a re-check on the configuration and a reload in case of changes. +The view role on the service account is required in order to listen for config map changes. A higher level role (eg. edit) is required for secrets +(secrets are not monitored by default). +- polling: re-creates the configuration periodically from config maps and secrets to see if it has changed. +The polling period can be configured using the property spring.cloud.kubernetes.reload.period and defaults to 15 seconds. +It requires the same role as the monitored property source. +This means, for example, that using polling on file mounted secret sources does not require particular privileges.

Table 136.1. Properties:

NameTypeDefaultDescription

spring.cloud.kubernetes.reload.period

Long

15000

The period in milliseconds for verifying changes when using the polling strategy

spring.cloud.kubernetes.reload.enabled

Boolean

false

Enables monitoring of property sources and configuration reload

spring.cloud.kubernetes.reload.monitoring-config-maps

Boolean

true

Allow monitoring changes in config maps

spring.cloud.kubernetes.reload.monitoring-secrets

Boolean

false

Allow monitoring changes in secrets

spring.cloud.kubernetes.reload.strategy

Enum

refresh

The strategy to use when firing a reload (refresh, restart_context, shutdown)

spring.cloud.kubernetes.reload.mode

Enum

event

Specifies how to listen for changes in property sources (event, polling)


Notes: +- Properties under spring.cloud.kubernetes.reload. should not be used in config maps or secrets: changing such properties at runtime may lead to unexpected results; +- Deleting a property or the whole config map does not restore the original state of the beans when using the refresh level.

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__ribbon_discovery_in_kubernetes.html b/Greenwich.M3/multi/multi__ribbon_discovery_in_kubernetes.html new file mode 100644 index 00000000..d70e06c3 --- /dev/null +++ b/Greenwich.M3/multi/multi__ribbon_discovery_in_kubernetes.html @@ -0,0 +1,21 @@ + + + Part XX. Ribbon discovery in Kubernetes

Part XX. Ribbon discovery in Kubernetes

Spring Cloud client applications calling a microservice should be interested on relying on a client load-balancing +feature in order to automatically discover at which endpoint(s) it can reach a given service. This mechanism has been +implemented within the [spring-cloud-kubernetes-ribbon](spring-cloud-kubernetes-ribbon/pom.xml) project where a +Kubernetes client will populate a Ribbon ServerList containing information +about such endpoints.

The implementation is part of the following starter that you can use by adding its dependency to your pom file:

<dependency>
+    <groupId>org.springframework.cloud</groupId>
+    <artifactId>spring-cloud-starter-kubernetes-netflix</artifactId>
+    <version>${latest.version}</version>
+</dependency>

When the list of the endpoints is populated, the Kubernetes client will search the registered endpoints living in +the current namespace/project matching the service name defined using the Ribbon Client annotation:

@RibbonClient(name = "name-service")

You can configure Ribbon’s behavior by providing properties in your application.properties (via your application’s +dedicated ConfigMap) using the following format: <name of your service>.ribbon.<Ribbon configuration key> where:

  • <name of your service> corresponds to the service name you’re accessing over Ribbon, as configured using the +@RibbonClient annotation (e.g. name-service in the example above)
  • <Ribbon configuration key> is one of the Ribbon configuration key defined by +Ribbon’s CommonClientConfigKey class

Additionally, the spring-cloud-kubernetes-ribbon project defines two additional configuration keys to further +control how Ribbon interacts with Kubernetes. In particular, if an endpoint defines multiple ports, the default +behavior is to use the first one found. To select more specifically which port to use, in a multi-port service, use +the PortName key. If you want to specify in which Kubernetes' namespace the target service should be looked up, use +the KubernetesNamespace key, remembering in both instances to prefix these keys with your service name and +ribbon prefix as specified above.

Examples that are using this module for ribbon discovery are:

Note: The Ribbon discovery client can be disabled by setting this key within the application properties file +spring.cloud.kubernetes.ribbon.enabled=false.

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__secrets_propertysource.html b/Greenwich.M3/multi/multi__secrets_propertysource.html new file mode 100644 index 00000000..84ff3c9f --- /dev/null +++ b/Greenwich.M3/multi/multi__secrets_propertysource.html @@ -0,0 +1,58 @@ + + + 135. Secrets PropertySource

135. Secrets PropertySource

Kubernetes has the notion of [Secrets](https://kubernetes.io/docs/concepts/configuration/secret/) for storing +sensitive data such as password, OAuth tokens, etc. This project provides integration with Secrets to make secrets +accessible by Spring Boot applications. This feature can be explicitly enabled/disabled using the spring.cloud.kubernetes.secrets.enabled property.

The SecretsPropertySource when enabled will lookup Kubernetes for Secrets from the following sources: +1. reading recursively from secrets mounts +2. named after the application (as defined by spring.application.name) +3. matching some labels

Please note that by default, consuming Secrets via API (points 2 and 3 above) is not enabled for security reasons + and it is recommend that containers share secrets via mounted volumes.

If the secrets are found their data is made available to the application.

Example:

Let’s assume that we have a spring boot application named demo that uses properties to read its database +configuration. We can create a Kubernetes secret using the following command:

oc create secret generic db-secret --from-literal=username=user --from-literal=password=p455w0rd

This would create the following secret (shown using oc get secrets db-secret -o yaml):

apiVersion: v1
+data:
+  password: cDQ1NXcwcmQ=
+  username: dXNlcg==
+kind: Secret
+metadata:
+  creationTimestamp: 2017-07-04T09:15:57Z
+  name: db-secret
+  namespace: default
+  resourceVersion: "357496"
+  selfLink: /api/v1/namespaces/default/secrets/db-secret
+  uid: 63c89263-6099-11e7-b3da-76d6186905a8
+type: Opaque

Note that the data contains Base64-encoded versions of the literal provided by the create command.

This secret can then be used by your application for example by exporting the secret’s value as environment variables:

apiVersion: v1
+kind: Deployment
+metadata:
+  name: ${project.artifactId}
+spec:
+   template:
+     spec:
+       containers:
+         - env:
+            - name: DB_USERNAME
+              valueFrom:
+                 secretKeyRef:
+                   name: db-secret
+                   key: username
+            - name: DB_PASSWORD
+              valueFrom:
+                 secretKeyRef:
+                   name: db-secret
+                   key: password

You can select the Secrets to consume in a number of ways:

  1. By listing the directories where secrets are mapped: +` +-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets/db-secret,etc/secrets/postgresql +`

    If you have all the secrets mapped to a common root, you can set them like:
    ```
    +-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets
    +```
  2. By setting a named secret: +` +-Dspring.cloud.kubernetes.secrets.name=db-secret +`
  3. By defining a list of labels: +` +-Dspring.cloud.kubernetes.secrets.labels.broker=activemq +-Dspring.cloud.kubernetes.secrets.labels.db=postgresql +`

Table 135.1. Properties:

NameTypeDefaultDescription

spring.cloud.kubernetes.secrets.enableApi

Boolean

false

Enable/Disable consuming secrets via APIs (examples 2 and 3)

spring.cloud.kubernetes.secrets.enabled

Boolean

true

Enable Secrets PropertySource

spring.cloud.kubernetes.secrets.name

String

${spring.application.name}

Sets the name of the secret to lookup

spring.cloud.kubernetes.secrets.namespace

String

Client namespace

Sets the Kubernetes namespace where to lookup

spring.cloud.kubernetes.secrets.labels

Map

null

Sets the labels used to lookup secrets

spring.cloud.kubernetes.secrets.paths

List

null

Sets the paths where secrets are mounted (example 1)


Notes: +- The property spring.cloud.kubernetes.secrets.labels behaves as defined by +Map-based binding. +- The property spring.cloud.kubernetes.secrets.paths behaves as defined by +Collection-based binding. +- Access to secrets via API may be restricted for security reasons, the preferred way is to mount secret to the POD.

Example of application using secrets (though it hasn’t been updated to use the new spring-cloud-kubernetes project): +spring-boot-camel-config

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__security_configurations_inside_kubernetes.html b/Greenwich.M3/multi/multi__security_configurations_inside_kubernetes.html new file mode 100644 index 00000000..9b7d330f --- /dev/null +++ b/Greenwich.M3/multi/multi__security_configurations_inside_kubernetes.html @@ -0,0 +1,3 @@ + + + Part XXIV. Security Configurations inside Kubernetes

Part XXIV. Security Configurations inside Kubernetes

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__serverless_platform_adapters.html b/Greenwich.M3/multi/multi__serverless_platform_adapters.html index 08e454c8..043b0acd 100644 --- a/Greenwich.M3/multi/multi__serverless_platform_adapters.html +++ b/Greenwich.M3/multi/multi__serverless_platform_adapters.html @@ -1,6 +1,6 @@ - 132. Serverless Platform Adapters

132. Serverless Platform Adapters

As well as being able to run as a standalone process, a Spring Cloud + 132. Serverless Platform Adapters

132. Serverless Platform Adapters

As well as being able to run as a standalone process, a Spring Cloud Function application can be adapted to run one of the existing serverless platforms. In the project there are adapters for AWS @@ -46,4 +46,4 @@ ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "runner. EXPOSE 8080

[Note]Note

you could use a Spring Cloud Function app, instead of just a jar with a POF in it, in which case you would have to change the way the app runs in the container so that it picks up the main class as a source file. For example, you could change the ENTRYPOINT above and add --spring.main.sources=com.example.SampleApplication.

Build the Docker image:

docker build -t [username/appname] .

Push the Docker image:

docker push [username/appname]

Use the OpenWhisk CLI (e.g. after vagrant ssh) to create the action:

wsk action create example --docker [username/appname]

Invoke the action:

wsk action invoke example --result --param payload foo
 {
     "result": "FOO"
-}
\ No newline at end of file +} \ No newline at end of file diff --git a/Greenwich.M3/multi/multi__service_account.html b/Greenwich.M3/multi/multi__service_account.html new file mode 100644 index 00000000..3dd530f8 --- /dev/null +++ b/Greenwich.M3/multi/multi__service_account.html @@ -0,0 +1,4 @@ + + + 139. Service Account

139. Service Account

For distros of Kubernetes that support more fine-grained role-based access within the cluster, you need to make sure a pod that runs with spring-cloud-kubernetes has access to the Kubernetes API. +For any service accounts you assign to a deployment/pod, you need to make sure it has the correct roles. For example, you can add cluster-reader permissions to your default service account depending on the project you’re in:

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__spring_cloud_kubernetes.html b/Greenwich.M3/multi/multi__spring_cloud_kubernetes.html new file mode 100644 index 00000000..e4deb529 --- /dev/null +++ b/Greenwich.M3/multi/multi__spring_cloud_kubernetes.html @@ -0,0 +1,3 @@ + + + Part XVII. Spring Cloud Kubernetes

Part XVII. Spring Cloud Kubernetes

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi__why_do_you_need_spring_cloud_kubernetes.html b/Greenwich.M3/multi/multi__why_do_you_need_spring_cloud_kubernetes.html new file mode 100644 index 00000000..1ea471c8 --- /dev/null +++ b/Greenwich.M3/multi/multi__why_do_you_need_spring_cloud_kubernetes.html @@ -0,0 +1,4 @@ + + + 133. Why do you need Spring Cloud Kubernetes?

133. Why do you need Spring Cloud Kubernetes?

Spring Cloud Kubernetes provide Spring Cloud common interfaces implementations to consume Kubernetes native services. +The main objective of the projects provided in this repository is to facilitate the integration of Spring Cloud/Spring Boot applications running inside Kubernetes.

\ No newline at end of file diff --git a/Greenwich.M3/multi/multi_spring-cloud.html b/Greenwich.M3/multi/multi_spring-cloud.html index 7e57468d..20536c9c 100644 --- a/Greenwich.M3/multi/multi_spring-cloud.html +++ b/Greenwich.M3/multi/multi_spring-cloud.html @@ -1,3 +1,3 @@ - Spring Cloud

Spring Cloud


Table of Contents

1. Features
I. Cloud Native Applications
2. Spring Cloud Context: Application Context Services
2.1. The Bootstrap Application Context
2.2. Application Context Hierarchies
2.3. Changing the Location of Bootstrap Properties
2.4. Overriding the Values of Remote Properties
2.5. Customizing the Bootstrap Configuration
2.6. Customizing the Bootstrap Property Sources
2.7. Logging Configuration
2.8. Environment Changes
2.9. Refresh Scope
2.10. Encryption and Decryption
2.11. Endpoints
3. Spring Cloud Commons: Common Abstractions
3.1. @EnableDiscoveryClient
3.1.1. Health Indicator
3.1.2. Ordering DiscoveryClient instances
3.2. ServiceRegistry
3.2.1. ServiceRegistry Auto-Registration
ServiceRegistry Auto-Registration Events
3.2.2. Service Registry Actuator Endpoint
3.3. Spring RestTemplate as a Load Balancer Client
3.4. Spring WebClient as a Load Balancer Client
3.4.1. Retrying Failed Requests
3.5. Multiple RestTemplate objects
3.6. Spring WebFlux WebClient as a Load Balancer Client
3.7. Ignore Network Interfaces
3.8. HTTP Client Factories
3.9. Enabled Features
3.9.1. Feature types
3.9.2. Declaring features
3.10. Spring Cloud Compatibility Verification
II. Spring Cloud Config
4. Quick Start
4.1. Client Side Usage
5. Spring Cloud Config Server
5.1. Environment Repository
5.1.1. Git Backend
Skipping SSL Certificate Validation
Setting HTTP Connection Timeout
Placeholders in Git URI
Pattern Matching and Multiple Repositories
Authentication
Authentication with AWS CodeCommit
Git SSH configuration using properties
Placeholders in Git Search Paths
Force pull in Git Repositories
Deleting untracked branches in Git Repositories
Git Refresh Rate
5.1.2. Version Control Backend Filesystem Use
5.1.3. File System Backend
5.1.4. Vault Backend
Multiple Properties Sources
5.1.5. Accessing Backends Through a Proxy
5.1.6. Sharing Configuration With All Applications
File Based Repositories
Vault Server
5.1.7. JDBC Backend
5.1.8. Composite Environment Repositories
Custom Composite Environment Repositories
5.1.9. Property Overrides
5.2. Health Indicator
5.3. Security
5.4. Encryption and Decryption
5.5. Key Management
5.6. Creating a Key Store for Testing
5.7. Using Multiple Keys and Key Rotation
5.8. Serving Encrypted Properties
6. Serving Alternative Formats
7. Serving Plain Text
8. Embedding the Config Server
9. Push Notifications and Spring Cloud Bus
10. Spring Cloud Config Client
10.1. Config First Bootstrap
10.2. Discovery First Bootstrap
10.3. Config Client Fail Fast
10.4. Config Client Retry
10.5. Locating Remote Configuration Resources
10.6. Specifying Multiple Urls for the Config Server
10.7. Configuring Read Timeouts
10.8. Security
10.8.1. Health Indicator
10.8.2. Providing A Custom RestTemplate
10.8.3. Vault
10.9. Nested Keys In Vault
III. Spring Cloud Netflix
11. Service Discovery: Eureka Clients
11.1. How to Include Eureka Client
11.2. Registering with Eureka
11.3. Authenticating with the Eureka Server
11.4. Status Page and Health Indicator
11.5. Registering a Secure Application
11.6. Eureka’s Health Checks
11.7. Eureka Metadata for Instances and Clients
11.7.1. Using Eureka on Cloud Foundry
11.7.2. Using Eureka on AWS
11.7.3. Changing the Eureka Instance ID
11.8. Using the EurekaClient
11.8.1. EurekaClient without Jersey
11.9. Alternatives to the Native Netflix EurekaClient
11.10. Why Is It so Slow to Register a Service?
11.11. Zones
12. Service Discovery: Eureka Server
12.1. How to Include Eureka Server
12.2. How to Run a Eureka Server
12.3. High Availability, Zones and Regions
12.4. Standalone Mode
12.5. Peer Awareness
12.6. When to Prefer IP Address
12.7. Securing The Eureka Server
13. Circuit Breaker: Hystrix Clients
13.1. How to Include Hystrix
13.2. Propagating the Security Context or Using Spring Scopes
13.3. Health Indicator
13.4. Hystrix Metrics Stream
14. Circuit Breaker: Hystrix Dashboard
15. Hystrix Timeouts And Ribbon Clients
15.1. How to Include the Hystrix Dashboard
15.2. Turbine
15.2.1. Clusters Endpoint
15.3. Turbine Stream
16. Client Side Load Balancer: Ribbon
16.1. How to Include Ribbon
16.2. Customizing the Ribbon Client
16.3. Customizing the Default for All Ribbon Clients
16.4. Customizing the Ribbon Client by Setting Properties
16.5. Using Ribbon with Eureka
16.6. Example: How to Use Ribbon Without Eureka
16.7. Example: Disable Eureka Use in Ribbon
16.8. Using the Ribbon API Directly
16.9. Caching of Ribbon Configuration
16.10. How to Configure Hystrix Thread Pools
16.11. How to Provide a Key to Ribbon’s IRule
17. External Configuration: Archaius
18. Router and Filter: Zuul
18.1. How to Include Zuul
18.2. Embedded Zuul Reverse Proxy
18.3. Zuul Http Client
18.4. Cookies and Sensitive Headers
18.5. Ignored Headers
18.6. Management Endpoints
18.6.1. Routes Endpoint
18.6.2. Filters Endpoint
18.7. Strangulation Patterns and Local Forwards
18.8. Uploading Files through Zuul
18.9. Query String Encoding
18.10. Plain Embedded Zuul
18.11. Disable Zuul Filters
18.12. Providing Hystrix Fallbacks For Routes
18.13. Zuul Timeouts
18.14. Rewriting the Location header
18.15. Enabling Cross Origin Requests
18.16. Metrics
18.17. Zuul Developer Guide
18.17.1. The Zuul Servlet
18.17.2. Zuul RequestContext
18.17.3. @EnableZuulProxy vs. @EnableZuulServer
18.17.4. @EnableZuulServer Filters
18.17.5. @EnableZuulProxy Filters
18.17.6. Custom Zuul Filter Examples
How to Write a Pre Filter
How to Write a Route Filter
How to Write a Post Filter
18.17.7. How Zuul Errors Work
18.17.8. Zuul Eager Application Context Loading
19. Polyglot support with Sidecar
20. Retrying Failed Requests
20.1. BackOff Policies
20.2. Configuration
20.2.1. Zuul
21. HTTP Clients
IV. Spring Cloud OpenFeign
22. Declarative REST Client: Feign
22.1. How to Include Feign
22.2. Overriding Feign Defaults
22.3. Creating Feign Clients Manually
22.4. Feign Hystrix Support
22.5. Feign Hystrix Fallbacks
22.6. Feign and @Primary
22.7. Feign Inheritance Support
22.8. Feign request/response compression
22.9. Feign logging
V. Spring Cloud Stream
23. A Brief History of Spring’s Data Integration Journey
24. Quick Start
24.1. Creating a Sample Application by Using Spring Initializr
24.2. Importing the Project into Your IDE
24.3. Adding a Message Handler, Building, and Running
25. What’s New in 2.0?
25.1. New Features and Components
25.2. Notable Enhancements
25.2.1. Both Actuator and Web Dependencies Are Now Optional
25.2.2. Content-type Negotiation Improvements
25.3. Notable Deprecations
25.3.1. Java Serialization (Java Native and Kryo)
25.3.2. Deprecated Classes and Methods
26. Introducing Spring Cloud Stream
27. Main Concepts
27.1. Application Model
27.1.1. Fat JAR
27.2. The Binder Abstraction
27.3. Persistent Publish-Subscribe Support
27.4. Consumer Groups
27.5. Consumer Types
27.5.1. Durability
27.6. Partitioning Support
28. Programming Model
28.1. Destination Binders
28.2. Destination Bindings
28.3. Producing and Consuming Messages
28.3.1. Spring Integration Support
28.3.2. Using @StreamListener Annotation
28.3.3. Using @StreamListener for Content-based routing
28.3.4. Spring Cloud Function support
Functional Composition
28.3.5. Using Polled Consumers
Overview
Handling Errors
28.4. Error Handling
28.4.1. Application Error Handling
28.4.2. System Error Handling
Drop Failed Messages
DLQ - Dead Letter Queue
Re-queue Failed Messages
28.4.3. Retry Template
28.5. Reactive Programming Support
28.5.1. Reactor-based Handlers
28.5.2. Reactive Sources
29. Binders
29.1. Producers and Consumers
29.2. Binder SPI
29.3. Binder Detection
29.3.1. Classpath Detection
29.4. Multiple Binders on the Classpath
29.5. Connecting to Multiple Systems
29.6. Binding visualization and control
29.7. Binder Configuration Properties
30. Configuration Options
30.1. Binding Service Properties
30.2. Binding Properties
30.2.1. Common Binding Properties
30.2.2. Consumer Properties
30.2.3. Producer Properties
30.3. Using Dynamically Bound Destinations
31. Content Type Negotiation
31.1. Mechanics
31.1.1. Content Type versus Argument Type
31.1.2. Message Converters
31.2. Provided MessageConverters
31.3. User-defined Message Converters
32. Schema Evolution Support
32.1. Schema Registry Client
32.1.1. Schema Registry Client Properties
32.2. Avro Schema Registry Client Message Converters
32.2.1. Avro Schema Registry Message Converter Properties
32.3. Apache Avro Message Converters
32.4. Converters with Schema Support
32.5. Schema Registry Server
32.5.1. Schema Registry Server API
Registering a New Schema
Retrieving an Existing Schema by Subject, Format, and Version
Retrieving an Existing Schema by Subject and Format
Retrieving an Existing Schema by ID
Deleting a Schema by Subject, Format, and Version
Deleting a Schema by ID
Deleting a Schema by Subject
32.5.2. Using Confluent’s Schema Registry
32.6. Schema Registration and Resolution
32.6.1. Schema Registration Process (Serialization)
32.6.2. Schema Resolution Process (Deserialization)
33. Inter-Application Communication
33.1. Connecting Multiple Application Instances
33.2. Instance Index and Instance Count
33.3. Partitioning
33.3.1. Configuring Output Bindings for Partitioning
33.3.2. Configuring Input Bindings for Partitioning
34. Testing
34.1. Disabling the Test Binder Autoconfiguration
35. Health Indicator
36. Metrics Emitter
37. Samples
37.1. Deploying Stream Applications on CloudFoundry
VI. Binder Implementations
38. Apache Kafka Binder
38.1. Usage
38.2. Apache Kafka Binder Overview
38.3. Configuration Options
38.3.1. Kafka Binder Properties
38.3.2. Kafka Consumer Properties
38.3.3. Kafka Producer Properties
38.3.4. Usage examples
Example: Setting autoCommitOffset to false and Relying on Manual Acking
Example: Security Configuration
Example: Pausing and Resuming the Consumer
38.4. Error Channels
38.5. Kafka Metrics
38.6. Dead-Letter Topic Processing
38.7. Partitioning with the Kafka Binder
39. Apache Kafka Streams Binder
39.1. Usage
39.2. Kafka Streams Binder Overview
39.2.1. Streams DSL
39.3. Configuration Options
39.3.1. Kafka Streams Properties
39.3.2. TimeWindow properties:
39.4. Multiple Input Bindings
39.4.1. Multiple Input Bindings as a Sink
39.4.2. Multiple Input Bindings as a Processor
39.5. Multiple Output Bindings (aka Branching)
39.6. Message Conversion
39.6.1. Outbound serialization
39.6.2. Inbound Deserialization
39.7. Error Handling
39.7.1. Handling Deserialization Exceptions
39.7.2. Handling Non-Deserialization Exceptions
39.8. State Store
39.9. Interactive Queries
39.10. Accessing the underlying KafkaStreams object
39.11. State Cleanup
40. RabbitMQ Binder
40.1. Usage
40.2. RabbitMQ Binder Overview
40.3. Configuration Options
40.3.1. RabbitMQ Binder Properties
40.3.2. RabbitMQ Consumer Properties
40.3.3. Advanced Listener Container Configuration
40.3.4. Rabbit Producer Properties
40.4. Retry With the RabbitMQ Binder
40.4.1. Putting it All Together
40.5. Error Channels
40.6. Dead-Letter Queue Processing
40.6.1. Non-Partitioned Destinations
40.6.2. Partitioned Destinations
republishToDlq=false
republishToDlq=true
40.7. Partitioning with the RabbitMQ Binder
VII. Spring Cloud Bus
41. Quick Start
42. Bus Endpoints
42.1. Bus Refresh Endpoint
42.2. Bus Env Endpoint
43. Addressing an Instance
44. Addressing All Instances of a Service
45. Service ID Must Be Unique
46. Customizing the Message Broker
47. Tracing Bus Events
48. Broadcasting Your Own Events
48.1. Registering events in custom packages
VIII. Spring Cloud Sleuth
49. Introduction
49.1. Terminology
49.2. Purpose
49.2.1. Distributed Tracing with Zipkin
49.2.2. Visualizing errors
49.2.3. Distributed Tracing with Brave
49.2.4. Live examples
49.2.5. Log correlation
JSON Logback with Logstash
49.2.6. Propagating Span Context
Baggage versus Span Tags
49.3. Adding Sleuth to the Project
49.3.1. Only Sleuth (log correlation)
49.3.2. Sleuth with Zipkin via HTTP
49.3.3. Sleuth with Zipkin over RabbitMQ or Kafka
50. Additional Resources
51. Features
51.1. Introduction to Brave
51.1.1. Tracing
51.1.2. Local Tracing
51.1.3. Customizing Spans
51.1.4. Implicitly Looking up the Current Span
51.1.5. RPC tracing
One-Way tracing
52. Sampling
52.1. Declarative sampling
52.2. Custom sampling
52.3. Sampling in Spring Cloud Sleuth
53. Propagation
53.1. Propagating extra fields
53.1.1. Prefixed fields
53.1.2. Extracting a Propagated Context
53.1.3. Sharing span IDs between Client and Server
53.1.4. Implementing Propagation
54. Current Tracing Component
55. Current Span
55.1. Setting a span in scope manually
56. Instrumentation
57. Span lifecycle
57.1. Creating and finishing spans
57.2. Continuing Spans
57.3. Creating a Span with an explicit Parent
58. Naming spans
58.1. @SpanName Annotation
58.2. toString() method
59. Managing Spans with Annotations
59.1. Rationale
59.2. Creating New Spans
59.3. Continuing Spans
59.4. Advanced Tag Setting
59.4.1. Custom extractor
59.4.2. Resolving Expressions for a Value
59.4.3. Using the toString() method
60. Customizations
60.1. HTTP
60.2. TracingFilter
60.3. Custom service name
60.4. Customization of Reported Spans
60.5. Host Locator
61. Sending Spans to Zipkin
62. Zipkin Stream Span Consumer
63. Integrations
63.1. OpenTracing
63.2. Runnable and Callable
63.3. Hystrix
63.3.1. Custom Concurrency Strategy
63.3.2. Manual Command setting
63.4. RxJava
63.5. HTTP integration
63.5.1. HTTP Filter
63.5.2. HandlerInterceptor
63.5.3. Async Servlet support
63.5.4. WebFlux support
63.5.5. Dubbo RPC support
63.6. HTTP Client Integration
63.6.1. Synchronous Rest Template
63.6.2. Asynchronous Rest Template
Multiple Asynchronous Rest Templates
63.6.3. WebClient
63.6.4. Traverson
63.6.5. Apache HttpClientBuilder and HttpAsyncClientBuilder
63.6.6. Netty HttpClient
63.6.7. UserInfoRestTemplateCustomizer
63.7. Feign
63.8. Asynchronous Communication
63.8.1. @Async Annotated methods
63.8.2. @Scheduled Annotated Methods
63.8.3. Executor, ExecutorService, and ScheduledExecutorService
Customization of Executors
63.9. Messaging
63.9.1. Spring Integration and Spring Cloud Stream
63.9.2. Spring RabbitMq
63.9.3. Spring Kafka
63.9.4. Spring JMS
63.10. Zuul
64. Running examples
IX. Spring Cloud Consul
65. Install Consul
66. Consul Agent
67. Service Discovery with Consul
67.1. How to activate
67.2. Registering with Consul
67.3. HTTP Health Check
67.3.1. Metadata and Consul tags
67.3.2. Making the Consul Instance ID Unique
67.3.3. Applying Headers to Health Check Requests
67.4. Looking up services
67.4.1. Using Ribbon
67.4.2. Using the DiscoveryClient
67.5. Consul Catalog Watch
68. Distributed Configuration with Consul
68.1. How to activate
68.2. Customizing
68.3. Config Watch
68.4. YAML or Properties with Config
68.5. git2consul with Config
68.6. Fail Fast
69. Consul Retry
70. Spring Cloud Bus with Consul
70.1. How to activate
71. Circuit Breaker with Hystrix
72. Hystrix metrics aggregation with Turbine and Consul
X. Spring Cloud Zookeeper
73. Install Zookeeper
74. Service Discovery with Zookeeper
74.1. Activating
74.2. Registering with Zookeeper
74.3. Using the DiscoveryClient
75. Using Spring Cloud Zookeeper with Spring Cloud Netflix Components
75.1. Ribbon with Zookeeper
76. Spring Cloud Zookeeper and Service Registry
76.1. Instance Status
77. Zookeeper Dependencies
77.1. Using the Zookeeper Dependencies
77.2. Activating Zookeeper Dependencies
77.3. Setting up Zookeeper Dependencies
77.3.1. Aliases
77.3.2. Path
77.3.3. Load Balancer Type
77.3.4. Content-Type Template and Version
77.3.5. Default Headers
77.3.6. Required Dependencies
77.3.7. Stubs
77.4. Configuring Spring Cloud Zookeeper Dependencies
78. Spring Cloud Zookeeper Dependency Watcher
78.1. Activating
78.2. Registering a Listener
78.3. Using the Presence Checker
79. Distributed Configuration with Zookeeper
79.1. Activating
79.2. Customizing
79.3. Access Control Lists (ACLs)
XI. Spring Cloud Security
80. Quickstart
80.1. OAuth2 Single Sign On
80.2. OAuth2 Protected Resource
81. More Detail
81.1. Single Sign On
81.2. Token Relay
81.2.1. Client Token Relay
81.2.2. Client Token Relay in Zuul Proxy
81.2.3. Resource Server Token Relay
82. Configuring Authentication Downstream of a Zuul Proxy
XII. Spring Cloud for Cloud Foundry
83. Discovery
84. Single Sign On
XIII. Spring Cloud Contract
85. Spring Cloud Contract
86. Spring Cloud Contract Verifier Introduction
86.1. History
86.2. Why a Contract Verifier?
86.2.1. Testing issues
86.3. Purposes
86.4. How It Works
86.4.1. A Three-second Tour
On the Producer Side
On the Consumer Side
86.4.2. A Three-minute Tour
On the Producer Side
On the Consumer Side
86.4.3. Defining the Contract
86.4.4. Client Side
86.4.5. Server Side
86.5. Step-by-step Guide to Consumer Driven Contracts (CDC)
86.5.1. Technical note
86.5.2. Consumer side (Loan Issuance)
86.5.3. Producer side (Fraud Detection server)
86.5.4. Consumer Side (Loan Issuance) Final Step
86.6. Dependencies
86.7. Additional Links
86.7.1. Spring Cloud Contract video
86.7.2. Readings
86.8. Samples
87. Spring Cloud Contract FAQ
87.1. Why use Spring Cloud Contract Verifier and not X ?
87.2. I don’t want to write a contract in Groovy!
87.3. What is this value(consumer(), producer()) ?
87.4. How to do Stubs versioning?
87.4.1. API Versioning
87.4.2. JAR versioning
87.4.3. Dev or prod stubs
87.5. Common repo with contracts
87.5.1. Repo structure
87.5.2. Workflow
87.5.3. Consumer
87.5.4. Producer
87.5.5. How can I define messaging contracts per topic not per producer?
For Maven Project
For Gradle Project
87.6. Do I need a Binary Storage? Can’t I use Git?
87.6.1. Protocol convention
87.6.2. Producer
Keeping contracts with the producer and stubs in an external repository
87.6.3. Consumer
87.7. Can I use the Pact Broker?
87.7.1. Pact Consumer
87.7.2. Producer
87.7.3. Pact Consumer (Producer Contract approach)
87.8. How can I debug the request/response being sent by the generated tests client?
87.8.1. How can I debug the mapping/request/response being sent by WireMock?
87.8.2. How can I see what got registered in the HTTP server stub?
87.8.3. Can I reference text from file?
88. Spring Cloud Contract Verifier Setup
88.1. Gradle Project
88.1.1. Prerequisites
88.1.2. Add Gradle Plugin with Dependencies
88.1.3. Gradle and Rest Assured 2.0
88.1.4. Snapshot Versions for Gradle
88.1.5. Add stubs
88.1.6. Run the Plugin
88.1.7. Default Setup
88.1.8. Configure Plugin
88.1.9. Configuration Options
88.1.10. Single Base Class for All Tests
88.1.11. Different Base Classes for Contracts
88.1.12. Invoking Generated Tests
88.1.13. Pushing stubs to SCM
88.1.14. Spring Cloud Contract Verifier on the Consumer Side
88.2. Maven Project
88.2.1. Add maven plugin
88.2.2. Maven and Rest Assured 2.0
88.2.3. Snapshot versions for Maven
88.2.4. Add stubs
88.2.5. Run plugin
88.2.6. Configure plugin
88.2.7. Configuration Options
88.2.8. Single Base Class for All Tests
88.2.9. Different base classes for contracts
88.2.10. Invoking generated tests
88.2.11. Pushing stubs to SCM
88.2.12. Maven Plugin and STS
88.2.13. Maven Plugin with Spock Tests
88.3. Stubs and Transitive Dependencies
88.4. Scenarios
88.5. Docker Project
88.5.1. Short intro to Maven, JARs and Binary storage
88.5.2. How it works
Environment Variables
88.5.3. Example of usage
88.5.4. Server side (nodejs)
89. Spring Cloud Contract Verifier Messaging
89.1. Integrations
89.2. Manual Integration Testing
89.3. Publisher-Side Test Generation
89.3.1. Scenario 1: No Input Message
89.3.2. Scenario 2: Output Triggered by Input
89.3.3. Scenario 3: No Output Message
89.4. Consumer Stub Generation
90. Spring Cloud Contract Stub Runner
90.1. Snapshot versions
90.2. Publishing Stubs as JARs
90.3. Stub Runner Core
90.3.1. Retrieving stubs
Stub downloading
Classpath scanning
90.3.2. Running stubs
Running using main app
HTTP Stubs
Viewing registered mappings
Messaging Stubs
90.4. Stub Runner JUnit Rule and Stub Runner JUnit5 Extension
90.4.1. Maven settings
90.4.2. Providing fixed ports
90.4.3. Fluent API
90.4.4. Stub Runner with Spring
90.5. Stub Runner Spring Cloud
90.5.1. Stubbing Service Discovery
Test profiles and service discovery
90.5.2. Additional Configuration
90.6. Stub Runner Boot Application
90.6.1. How to use it?
Stub Runner Server
Stub Runner Server Fat Jar
Spring Cloud CLI
90.6.2. Endpoints
HTTP
Messaging
90.6.3. Example
90.6.4. Stub Runner Boot with Service Discovery
90.7. Stubs Per Consumer
90.8. Common
90.8.1. Common Properties for JUnit and Spring
90.8.2. Stub Runner Stubs IDs
90.9. Stub Runner Docker
90.9.1. How to use it
90.9.2. Example of client side usage in a non JVM project
91. Stub Runner for Messaging
91.1. Stub triggering
91.1.1. Trigger by Label
91.1.2. Trigger by Group and Artifact Ids
91.1.3. Trigger by Artifact Ids
91.1.4. Trigger All Messages
91.2. Stub Runner Camel
91.2.1. Adding it to the project
91.2.2. Disabling the functionality
91.2.3. Examples
Stubs structure
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.3. Stub Runner Integration
91.3.1. Adding the Runner to the Project
91.3.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.4. Stub Runner Stream
91.4.1. Adding the Runner to the Project
91.4.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.5. Stub Runner Spring AMQP
91.5.1. Adding the Runner to the Project
Triggering the message
Spring AMQP Test Configuration
92. Contract DSL
92.1. Limitations
92.2. Common Top-Level elements
92.2.1. Description
92.2.2. Name
92.2.3. Ignoring Contracts
92.2.4. Passing Values from Files
92.2.5. HTTP Top-Level Elements
92.3. Request
92.4. Response
92.5. Dynamic properties
92.5.1. Dynamic properties inside the body
92.5.2. Regular expressions
92.5.3. Passing Optional Parameters
92.5.4. Executing Custom Methods on the Server Side
92.5.5. Referencing the Request from the Response
92.5.6. Registering Your Own WireMock Extension
92.5.7. Dynamic Properties in the Matchers Sections
92.6. JAX-RS Support
92.7. Async Support
92.8. Working with Context Paths
92.9. Working with Web Flux
92.10. Messaging Top-Level Elements
92.10.1. Output Triggered by a Method
92.10.2. Output Triggered by a Message
92.10.3. Consumer/Producer
92.10.4. Common
92.11. Multiple Contracts in One File
92.12. Generating Spring REST Docs snippets from the contracts
93. Customization
93.1. Extending the DSL
93.1.1. Common JAR
93.1.2. Adding the Dependency to the Project
93.1.3. Test the Dependency in the Project’s Dependencies
93.1.4. Test a Dependency in the Plugin’s Dependencies
93.1.5. Referencing classes in DSLs
94. Using the Pluggable Architecture
94.1. Custom Contract Converter
94.1.1. Pact Converter
94.1.2. Pact Contract
94.1.3. Pact for Producers
94.1.4. Pact for Consumers
94.2. Using the Custom Test Generator
94.3. Using the Custom Stub Generator
94.4. Using the Custom Stub Runner
94.5. Using the Custom Stub Downloader
94.6. Using the SCM Stub Downloader
94.7. Using the Pact Stub Downloader
95. Spring Cloud Contract WireMock
95.1. Registering Stubs Automatically
95.2. Using Files to Specify the Stub Bodies
95.3. Alternative: Using JUnit Rules
95.4. Relaxed SSL Validation for Rest Template
95.5. WireMock and Spring MVC Mocks
95.6. Customization of WireMock configuration
95.7. Generating Stubs using REST Docs
95.8. Generating Contracts by Using REST Docs
96. Migrations
96.1. 1.0.x → 1.1.x
96.1.1. New structure of generated stubs
96.2. 1.1.x → 1.2.x
96.2.1. Custom HttpServerStub
96.2.2. New packages for generated tests
96.2.3. New Methods in TemplateProcessor
96.2.4. RestAssured 3.0
96.3. 1.2.x → 2.0.x
97. Links
XIV. Spring Cloud Vault
98. Quick Start
99. Client Side Usage
99.1. Authentication
100. Authentication methods
100.1. Token authentication
100.2. AppId authentication
100.2.1. Custom UserId
100.3. AppRole authentication
100.4. AWS-EC2 authentication
100.5. AWS-IAM authentication
100.6. Azure MSI authentication
100.7. TLS certificate authentication
100.8. Cubbyhole authentication
101. GCP-GCE authentication
102. GCP-IAM authentication
102.1. Kubernetes authentication
103. Secret Backends
103.1. Generic Backend
103.2. Versioned Key-Value Backend
103.3. Consul
103.4. RabbitMQ
103.5. AWS
104. Database backends
104.1. Database
104.2. Apache Cassandra
104.3. MongoDB
104.4. MySQL
104.5. PostgreSQL
105. Configure PropertySourceLocator behavior
106. Service Registry Configuration
107. Vault Client Fail Fast
108. Vault Client SSL configuration
109. Lease lifecycle management (renewal and revocation)
XV. Spring Cloud Gateway
110. How to Include Spring Cloud Gateway
111. Glossary
112. How It Works
113. Route Predicate Factories
113.1. After Route Predicate Factory
113.2. Before Route Predicate Factory
113.3. Between Route Predicate Factory
113.4. Cookie Route Predicate Factory
113.5. Header Route Predicate Factory
113.6. Host Route Predicate Factory
113.7. Method Route Predicate Factory
113.8. Path Route Predicate Factory
113.9. Query Route Predicate Factory
113.10. RemoteAddr Route Predicate Factory
113.10.1. Modifying the way remote addresses are resolved
114. GatewayFilter Factories
114.1. AddRequestHeader GatewayFilter Factory
114.2. AddRequestParameter GatewayFilter Factory
114.3. AddResponseHeader GatewayFilter Factory
114.4. Hystrix GatewayFilter Factory
114.5. FallbackHeaders GatewayFilter Factory
114.6. PrefixPath GatewayFilter Factory
114.7. PreserveHostHeader GatewayFilter Factory
114.8. RequestRateLimiter GatewayFilter Factory
114.8.1. Redis RateLimiter
114.9. RedirectTo GatewayFilter Factory
114.10. RemoveNonProxyHeaders GatewayFilter Factory
114.11. RemoveRequestHeader GatewayFilter Factory
114.12. RemoveResponseHeader GatewayFilter Factory
114.13. RewritePath GatewayFilter Factory
114.14. RewriteResponseHeader GatewayFilter Factory
114.15. SaveSession GatewayFilter Factory
114.16. SecureHeaders GatewayFilter Factory
114.17. SetPath GatewayFilter Factory
114.18. SetResponseHeader GatewayFilter Factory
114.19. SetStatus GatewayFilter Factory
114.20. StripPrefix GatewayFilter Factory
114.21. Retry GatewayFilter Factory
114.22. RequestSize GatewayFilter Factory
115. Global Filters
115.1. Combined Global Filter and GatewayFilter Ordering
115.2. Forward Routing Filter
115.3. LoadBalancerClient Filter
115.4. Netty Routing Filter
115.5. Netty Write Response Filter
115.6. RouteToRequestUrl Filter
115.7. Websocket Routing Filter
115.8. Gateway Metrics Filter
115.9. Making An Exchange As Routed
116. TLS / SSL
116.1. TLS Handshake
117. Configuration
117.1. Fluent Java Routes API
117.2. DiscoveryClient Route Definition Locator
118. Reactor Netty Access Logs
119. CORS Configuration
120. Actuator API
121. Developer Guide
121.1. Writing Custom Route Predicate Factories
121.2. Writing Custom GatewayFilter Factories
121.3. Writing Custom Global Filters
121.4. Writing Custom Route Locators and Writers
122. Building a Simple Gateway Using Spring MVC or Webflux
XVI. Spring Cloud Function
123. Introduction
124. Getting Started
125. Building and Running a Function
126. Function Catalog and Flexible Function Signatures
126.1. Java 8 function support
126.2. Kotlin Lambda support
127. Standalone Web Applications
128. Standalone Streaming Applications
129. Deploying a Packaged Function
130. Functional Bean Definitions
130.1. Comparing Functional with Traditional Bean Definitions
130.2. Testing Functional Applications
130.3. Limitations of Functional Bean Declaration
131. Dynamic Compilation
132. Serverless Platform Adapters
132.1. AWS Lambda
132.1.1. Introduction
132.1.2. Notes on JAR Layout
132.1.3. Upload
132.1.4. Platfom Specific Features
HTTP and API Gateway
132.2. Azure Functions
132.2.1. Notes on JAR Layout
132.2.2. Build
132.2.3. Running the sample
132.3. Apache Openwhisk
132.3.1. Quick Start
XVII. Appendix: Compendium of Configuration Properties
\ No newline at end of file + Spring Cloud

Spring Cloud


Table of Contents

1. Features
I. Cloud Native Applications
2. Spring Cloud Context: Application Context Services
2.1. The Bootstrap Application Context
2.2. Application Context Hierarchies
2.3. Changing the Location of Bootstrap Properties
2.4. Overriding the Values of Remote Properties
2.5. Customizing the Bootstrap Configuration
2.6. Customizing the Bootstrap Property Sources
2.7. Logging Configuration
2.8. Environment Changes
2.9. Refresh Scope
2.10. Encryption and Decryption
2.11. Endpoints
3. Spring Cloud Commons: Common Abstractions
3.1. @EnableDiscoveryClient
3.1.1. Health Indicator
3.1.2. Ordering DiscoveryClient instances
3.2. ServiceRegistry
3.2.1. ServiceRegistry Auto-Registration
ServiceRegistry Auto-Registration Events
3.2.2. Service Registry Actuator Endpoint
3.3. Spring RestTemplate as a Load Balancer Client
3.4. Spring WebClient as a Load Balancer Client
3.4.1. Retrying Failed Requests
3.5. Multiple RestTemplate objects
3.6. Spring WebFlux WebClient as a Load Balancer Client
3.7. Ignore Network Interfaces
3.8. HTTP Client Factories
3.9. Enabled Features
3.9.1. Feature types
3.9.2. Declaring features
3.10. Spring Cloud Compatibility Verification
II. Spring Cloud Config
4. Quick Start
4.1. Client Side Usage
5. Spring Cloud Config Server
5.1. Environment Repository
5.1.1. Git Backend
Skipping SSL Certificate Validation
Setting HTTP Connection Timeout
Placeholders in Git URI
Pattern Matching and Multiple Repositories
Authentication
Authentication with AWS CodeCommit
Git SSH configuration using properties
Placeholders in Git Search Paths
Force pull in Git Repositories
Deleting untracked branches in Git Repositories
Git Refresh Rate
5.1.2. Version Control Backend Filesystem Use
5.1.3. File System Backend
5.1.4. Vault Backend
Multiple Properties Sources
5.1.5. Accessing Backends Through a Proxy
5.1.6. Sharing Configuration With All Applications
File Based Repositories
Vault Server
5.1.7. JDBC Backend
5.1.8. Composite Environment Repositories
Custom Composite Environment Repositories
5.1.9. Property Overrides
5.2. Health Indicator
5.3. Security
5.4. Encryption and Decryption
5.5. Key Management
5.6. Creating a Key Store for Testing
5.7. Using Multiple Keys and Key Rotation
5.8. Serving Encrypted Properties
6. Serving Alternative Formats
7. Serving Plain Text
8. Embedding the Config Server
9. Push Notifications and Spring Cloud Bus
10. Spring Cloud Config Client
10.1. Config First Bootstrap
10.2. Discovery First Bootstrap
10.3. Config Client Fail Fast
10.4. Config Client Retry
10.5. Locating Remote Configuration Resources
10.6. Specifying Multiple Urls for the Config Server
10.7. Configuring Read Timeouts
10.8. Security
10.8.1. Health Indicator
10.8.2. Providing A Custom RestTemplate
10.8.3. Vault
10.9. Nested Keys In Vault
III. Spring Cloud Netflix
11. Service Discovery: Eureka Clients
11.1. How to Include Eureka Client
11.2. Registering with Eureka
11.3. Authenticating with the Eureka Server
11.4. Status Page and Health Indicator
11.5. Registering a Secure Application
11.6. Eureka’s Health Checks
11.7. Eureka Metadata for Instances and Clients
11.7.1. Using Eureka on Cloud Foundry
11.7.2. Using Eureka on AWS
11.7.3. Changing the Eureka Instance ID
11.8. Using the EurekaClient
11.8.1. EurekaClient without Jersey
11.9. Alternatives to the Native Netflix EurekaClient
11.10. Why Is It so Slow to Register a Service?
11.11. Zones
12. Service Discovery: Eureka Server
12.1. How to Include Eureka Server
12.2. How to Run a Eureka Server
12.3. High Availability, Zones and Regions
12.4. Standalone Mode
12.5. Peer Awareness
12.6. When to Prefer IP Address
12.7. Securing The Eureka Server
13. Circuit Breaker: Hystrix Clients
13.1. How to Include Hystrix
13.2. Propagating the Security Context or Using Spring Scopes
13.3. Health Indicator
13.4. Hystrix Metrics Stream
14. Circuit Breaker: Hystrix Dashboard
15. Hystrix Timeouts And Ribbon Clients
15.1. How to Include the Hystrix Dashboard
15.2. Turbine
15.2.1. Clusters Endpoint
15.3. Turbine Stream
16. Client Side Load Balancer: Ribbon
16.1. How to Include Ribbon
16.2. Customizing the Ribbon Client
16.3. Customizing the Default for All Ribbon Clients
16.4. Customizing the Ribbon Client by Setting Properties
16.5. Using Ribbon with Eureka
16.6. Example: How to Use Ribbon Without Eureka
16.7. Example: Disable Eureka Use in Ribbon
16.8. Using the Ribbon API Directly
16.9. Caching of Ribbon Configuration
16.10. How to Configure Hystrix Thread Pools
16.11. How to Provide a Key to Ribbon’s IRule
17. External Configuration: Archaius
18. Router and Filter: Zuul
18.1. How to Include Zuul
18.2. Embedded Zuul Reverse Proxy
18.3. Zuul Http Client
18.4. Cookies and Sensitive Headers
18.5. Ignored Headers
18.6. Management Endpoints
18.6.1. Routes Endpoint
18.6.2. Filters Endpoint
18.7. Strangulation Patterns and Local Forwards
18.8. Uploading Files through Zuul
18.9. Query String Encoding
18.10. Plain Embedded Zuul
18.11. Disable Zuul Filters
18.12. Providing Hystrix Fallbacks For Routes
18.13. Zuul Timeouts
18.14. Rewriting the Location header
18.15. Enabling Cross Origin Requests
18.16. Metrics
18.17. Zuul Developer Guide
18.17.1. The Zuul Servlet
18.17.2. Zuul RequestContext
18.17.3. @EnableZuulProxy vs. @EnableZuulServer
18.17.4. @EnableZuulServer Filters
18.17.5. @EnableZuulProxy Filters
18.17.6. Custom Zuul Filter Examples
How to Write a Pre Filter
How to Write a Route Filter
How to Write a Post Filter
18.17.7. How Zuul Errors Work
18.17.8. Zuul Eager Application Context Loading
19. Polyglot support with Sidecar
20. Retrying Failed Requests
20.1. BackOff Policies
20.2. Configuration
20.2.1. Zuul
21. HTTP Clients
IV. Spring Cloud OpenFeign
22. Declarative REST Client: Feign
22.1. How to Include Feign
22.2. Overriding Feign Defaults
22.3. Creating Feign Clients Manually
22.4. Feign Hystrix Support
22.5. Feign Hystrix Fallbacks
22.6. Feign and @Primary
22.7. Feign Inheritance Support
22.8. Feign request/response compression
22.9. Feign logging
V. Spring Cloud Stream
23. A Brief History of Spring’s Data Integration Journey
24. Quick Start
24.1. Creating a Sample Application by Using Spring Initializr
24.2. Importing the Project into Your IDE
24.3. Adding a Message Handler, Building, and Running
25. What’s New in 2.0?
25.1. New Features and Components
25.2. Notable Enhancements
25.2.1. Both Actuator and Web Dependencies Are Now Optional
25.2.2. Content-type Negotiation Improvements
25.3. Notable Deprecations
25.3.1. Java Serialization (Java Native and Kryo)
25.3.2. Deprecated Classes and Methods
26. Introducing Spring Cloud Stream
27. Main Concepts
27.1. Application Model
27.1.1. Fat JAR
27.2. The Binder Abstraction
27.3. Persistent Publish-Subscribe Support
27.4. Consumer Groups
27.5. Consumer Types
27.5.1. Durability
27.6. Partitioning Support
28. Programming Model
28.1. Destination Binders
28.2. Destination Bindings
28.3. Producing and Consuming Messages
28.3.1. Spring Integration Support
28.3.2. Using @StreamListener Annotation
28.3.3. Using @StreamListener for Content-based routing
28.3.4. Spring Cloud Function support
Functional Composition
28.3.5. Using Polled Consumers
Overview
Handling Errors
28.4. Error Handling
28.4.1. Application Error Handling
28.4.2. System Error Handling
Drop Failed Messages
DLQ - Dead Letter Queue
Re-queue Failed Messages
28.4.3. Retry Template
28.5. Reactive Programming Support
28.5.1. Reactor-based Handlers
28.5.2. Reactive Sources
29. Binders
29.1. Producers and Consumers
29.2. Binder SPI
29.3. Binder Detection
29.3.1. Classpath Detection
29.4. Multiple Binders on the Classpath
29.5. Connecting to Multiple Systems
29.6. Binding visualization and control
29.7. Binder Configuration Properties
30. Configuration Options
30.1. Binding Service Properties
30.2. Binding Properties
30.2.1. Common Binding Properties
30.2.2. Consumer Properties
30.2.3. Producer Properties
30.3. Using Dynamically Bound Destinations
31. Content Type Negotiation
31.1. Mechanics
31.1.1. Content Type versus Argument Type
31.1.2. Message Converters
31.2. Provided MessageConverters
31.3. User-defined Message Converters
32. Schema Evolution Support
32.1. Schema Registry Client
32.1.1. Schema Registry Client Properties
32.2. Avro Schema Registry Client Message Converters
32.2.1. Avro Schema Registry Message Converter Properties
32.3. Apache Avro Message Converters
32.4. Converters with Schema Support
32.5. Schema Registry Server
32.5.1. Schema Registry Server API
Registering a New Schema
Retrieving an Existing Schema by Subject, Format, and Version
Retrieving an Existing Schema by Subject and Format
Retrieving an Existing Schema by ID
Deleting a Schema by Subject, Format, and Version
Deleting a Schema by ID
Deleting a Schema by Subject
32.5.2. Using Confluent’s Schema Registry
32.6. Schema Registration and Resolution
32.6.1. Schema Registration Process (Serialization)
32.6.2. Schema Resolution Process (Deserialization)
33. Inter-Application Communication
33.1. Connecting Multiple Application Instances
33.2. Instance Index and Instance Count
33.3. Partitioning
33.3.1. Configuring Output Bindings for Partitioning
33.3.2. Configuring Input Bindings for Partitioning
34. Testing
34.1. Disabling the Test Binder Autoconfiguration
35. Health Indicator
36. Metrics Emitter
37. Samples
37.1. Deploying Stream Applications on CloudFoundry
VI. Binder Implementations
38. Apache Kafka Binder
38.1. Usage
38.2. Apache Kafka Binder Overview
38.3. Configuration Options
38.3.1. Kafka Binder Properties
38.3.2. Kafka Consumer Properties
38.3.3. Kafka Producer Properties
38.3.4. Usage examples
Example: Setting autoCommitOffset to false and Relying on Manual Acking
Example: Security Configuration
Example: Pausing and Resuming the Consumer
38.4. Error Channels
38.5. Kafka Metrics
38.6. Dead-Letter Topic Processing
38.7. Partitioning with the Kafka Binder
39. Apache Kafka Streams Binder
39.1. Usage
39.2. Kafka Streams Binder Overview
39.2.1. Streams DSL
39.3. Configuration Options
39.3.1. Kafka Streams Properties
39.3.2. TimeWindow properties:
39.4. Multiple Input Bindings
39.4.1. Multiple Input Bindings as a Sink
39.4.2. Multiple Input Bindings as a Processor
39.5. Multiple Output Bindings (aka Branching)
39.6. Message Conversion
39.6.1. Outbound serialization
39.6.2. Inbound Deserialization
39.7. Error Handling
39.7.1. Handling Deserialization Exceptions
39.7.2. Handling Non-Deserialization Exceptions
39.8. State Store
39.9. Interactive Queries
39.10. Accessing the underlying KafkaStreams object
39.11. State Cleanup
40. RabbitMQ Binder
40.1. Usage
40.2. RabbitMQ Binder Overview
40.3. Configuration Options
40.3.1. RabbitMQ Binder Properties
40.3.2. RabbitMQ Consumer Properties
40.3.3. Advanced Listener Container Configuration
40.3.4. Rabbit Producer Properties
40.4. Retry With the RabbitMQ Binder
40.4.1. Putting it All Together
40.5. Error Channels
40.6. Dead-Letter Queue Processing
40.6.1. Non-Partitioned Destinations
40.6.2. Partitioned Destinations
republishToDlq=false
republishToDlq=true
40.7. Partitioning with the RabbitMQ Binder
VII. Spring Cloud Bus
41. Quick Start
42. Bus Endpoints
42.1. Bus Refresh Endpoint
42.2. Bus Env Endpoint
43. Addressing an Instance
44. Addressing All Instances of a Service
45. Service ID Must Be Unique
46. Customizing the Message Broker
47. Tracing Bus Events
48. Broadcasting Your Own Events
48.1. Registering events in custom packages
VIII. Spring Cloud Sleuth
49. Introduction
49.1. Terminology
49.2. Purpose
49.2.1. Distributed Tracing with Zipkin
49.2.2. Visualizing errors
49.2.3. Distributed Tracing with Brave
49.2.4. Live examples
49.2.5. Log correlation
JSON Logback with Logstash
49.2.6. Propagating Span Context
Baggage versus Span Tags
49.3. Adding Sleuth to the Project
49.3.1. Only Sleuth (log correlation)
49.3.2. Sleuth with Zipkin via HTTP
49.3.3. Sleuth with Zipkin over RabbitMQ or Kafka
50. Additional Resources
51. Features
51.1. Introduction to Brave
51.1.1. Tracing
51.1.2. Local Tracing
51.1.3. Customizing Spans
51.1.4. Implicitly Looking up the Current Span
51.1.5. RPC tracing
One-Way tracing
52. Sampling
52.1. Declarative sampling
52.2. Custom sampling
52.3. Sampling in Spring Cloud Sleuth
53. Propagation
53.1. Propagating extra fields
53.1.1. Prefixed fields
53.1.2. Extracting a Propagated Context
53.1.3. Sharing span IDs between Client and Server
53.1.4. Implementing Propagation
54. Current Tracing Component
55. Current Span
55.1. Setting a span in scope manually
56. Instrumentation
57. Span lifecycle
57.1. Creating and finishing spans
57.2. Continuing Spans
57.3. Creating a Span with an explicit Parent
58. Naming spans
58.1. @SpanName Annotation
58.2. toString() method
59. Managing Spans with Annotations
59.1. Rationale
59.2. Creating New Spans
59.3. Continuing Spans
59.4. Advanced Tag Setting
59.4.1. Custom extractor
59.4.2. Resolving Expressions for a Value
59.4.3. Using the toString() method
60. Customizations
60.1. HTTP
60.2. TracingFilter
60.3. Custom service name
60.4. Customization of Reported Spans
60.5. Host Locator
61. Sending Spans to Zipkin
62. Zipkin Stream Span Consumer
63. Integrations
63.1. OpenTracing
63.2. Runnable and Callable
63.3. Hystrix
63.3.1. Custom Concurrency Strategy
63.3.2. Manual Command setting
63.4. RxJava
63.5. HTTP integration
63.5.1. HTTP Filter
63.5.2. HandlerInterceptor
63.5.3. Async Servlet support
63.5.4. WebFlux support
63.5.5. Dubbo RPC support
63.6. HTTP Client Integration
63.6.1. Synchronous Rest Template
63.6.2. Asynchronous Rest Template
Multiple Asynchronous Rest Templates
63.6.3. WebClient
63.6.4. Traverson
63.6.5. Apache HttpClientBuilder and HttpAsyncClientBuilder
63.6.6. Netty HttpClient
63.6.7. UserInfoRestTemplateCustomizer
63.7. Feign
63.8. Asynchronous Communication
63.8.1. @Async Annotated methods
63.8.2. @Scheduled Annotated Methods
63.8.3. Executor, ExecutorService, and ScheduledExecutorService
Customization of Executors
63.9. Messaging
63.9.1. Spring Integration and Spring Cloud Stream
63.9.2. Spring RabbitMq
63.9.3. Spring Kafka
63.9.4. Spring JMS
63.10. Zuul
64. Running examples
IX. Spring Cloud Consul
65. Install Consul
66. Consul Agent
67. Service Discovery with Consul
67.1. How to activate
67.2. Registering with Consul
67.3. HTTP Health Check
67.3.1. Metadata and Consul tags
67.3.2. Making the Consul Instance ID Unique
67.3.3. Applying Headers to Health Check Requests
67.4. Looking up services
67.4.1. Using Ribbon
67.4.2. Using the DiscoveryClient
67.5. Consul Catalog Watch
68. Distributed Configuration with Consul
68.1. How to activate
68.2. Customizing
68.3. Config Watch
68.4. YAML or Properties with Config
68.5. git2consul with Config
68.6. Fail Fast
69. Consul Retry
70. Spring Cloud Bus with Consul
70.1. How to activate
71. Circuit Breaker with Hystrix
72. Hystrix metrics aggregation with Turbine and Consul
X. Spring Cloud Zookeeper
73. Install Zookeeper
74. Service Discovery with Zookeeper
74.1. Activating
74.2. Registering with Zookeeper
74.3. Using the DiscoveryClient
75. Using Spring Cloud Zookeeper with Spring Cloud Netflix Components
75.1. Ribbon with Zookeeper
76. Spring Cloud Zookeeper and Service Registry
76.1. Instance Status
77. Zookeeper Dependencies
77.1. Using the Zookeeper Dependencies
77.2. Activating Zookeeper Dependencies
77.3. Setting up Zookeeper Dependencies
77.3.1. Aliases
77.3.2. Path
77.3.3. Load Balancer Type
77.3.4. Content-Type Template and Version
77.3.5. Default Headers
77.3.6. Required Dependencies
77.3.7. Stubs
77.4. Configuring Spring Cloud Zookeeper Dependencies
78. Spring Cloud Zookeeper Dependency Watcher
78.1. Activating
78.2. Registering a Listener
78.3. Using the Presence Checker
79. Distributed Configuration with Zookeeper
79.1. Activating
79.2. Customizing
79.3. Access Control Lists (ACLs)
XI. Spring Cloud Security
80. Quickstart
80.1. OAuth2 Single Sign On
80.2. OAuth2 Protected Resource
81. More Detail
81.1. Single Sign On
81.2. Token Relay
81.2.1. Client Token Relay
81.2.2. Client Token Relay in Zuul Proxy
81.2.3. Resource Server Token Relay
82. Configuring Authentication Downstream of a Zuul Proxy
XII. Spring Cloud for Cloud Foundry
83. Discovery
84. Single Sign On
XIII. Spring Cloud Contract
85. Spring Cloud Contract
86. Spring Cloud Contract Verifier Introduction
86.1. History
86.2. Why a Contract Verifier?
86.2.1. Testing issues
86.3. Purposes
86.4. How It Works
86.4.1. A Three-second Tour
On the Producer Side
On the Consumer Side
86.4.2. A Three-minute Tour
On the Producer Side
On the Consumer Side
86.4.3. Defining the Contract
86.4.4. Client Side
86.4.5. Server Side
86.5. Step-by-step Guide to Consumer Driven Contracts (CDC)
86.5.1. Technical note
86.5.2. Consumer side (Loan Issuance)
86.5.3. Producer side (Fraud Detection server)
86.5.4. Consumer Side (Loan Issuance) Final Step
86.6. Dependencies
86.7. Additional Links
86.7.1. Spring Cloud Contract video
86.7.2. Readings
86.8. Samples
87. Spring Cloud Contract FAQ
87.1. Why use Spring Cloud Contract Verifier and not X ?
87.2. I don’t want to write a contract in Groovy!
87.3. What is this value(consumer(), producer()) ?
87.4. How to do Stubs versioning?
87.4.1. API Versioning
87.4.2. JAR versioning
87.4.3. Dev or prod stubs
87.5. Common repo with contracts
87.5.1. Repo structure
87.5.2. Workflow
87.5.3. Consumer
87.5.4. Producer
87.5.5. How can I define messaging contracts per topic not per producer?
For Maven Project
For Gradle Project
87.6. Do I need a Binary Storage? Can’t I use Git?
87.6.1. Protocol convention
87.6.2. Producer
Keeping contracts with the producer and stubs in an external repository
87.6.3. Consumer
87.7. Can I use the Pact Broker?
87.7.1. Pact Consumer
87.7.2. Producer
87.7.3. Pact Consumer (Producer Contract approach)
87.8. How can I debug the request/response being sent by the generated tests client?
87.8.1. How can I debug the mapping/request/response being sent by WireMock?
87.8.2. How can I see what got registered in the HTTP server stub?
87.8.3. Can I reference text from file?
88. Spring Cloud Contract Verifier Setup
88.1. Gradle Project
88.1.1. Prerequisites
88.1.2. Add Gradle Plugin with Dependencies
88.1.3. Gradle and Rest Assured 2.0
88.1.4. Snapshot Versions for Gradle
88.1.5. Add stubs
88.1.6. Run the Plugin
88.1.7. Default Setup
88.1.8. Configure Plugin
88.1.9. Configuration Options
88.1.10. Single Base Class for All Tests
88.1.11. Different Base Classes for Contracts
88.1.12. Invoking Generated Tests
88.1.13. Pushing stubs to SCM
88.1.14. Spring Cloud Contract Verifier on the Consumer Side
88.2. Maven Project
88.2.1. Add maven plugin
88.2.2. Maven and Rest Assured 2.0
88.2.3. Snapshot versions for Maven
88.2.4. Add stubs
88.2.5. Run plugin
88.2.6. Configure plugin
88.2.7. Configuration Options
88.2.8. Single Base Class for All Tests
88.2.9. Different base classes for contracts
88.2.10. Invoking generated tests
88.2.11. Pushing stubs to SCM
88.2.12. Maven Plugin and STS
88.2.13. Maven Plugin with Spock Tests
88.3. Stubs and Transitive Dependencies
88.4. Scenarios
88.5. Docker Project
88.5.1. Short intro to Maven, JARs and Binary storage
88.5.2. How it works
Environment Variables
88.5.3. Example of usage
88.5.4. Server side (nodejs)
89. Spring Cloud Contract Verifier Messaging
89.1. Integrations
89.2. Manual Integration Testing
89.3. Publisher-Side Test Generation
89.3.1. Scenario 1: No Input Message
89.3.2. Scenario 2: Output Triggered by Input
89.3.3. Scenario 3: No Output Message
89.4. Consumer Stub Generation
90. Spring Cloud Contract Stub Runner
90.1. Snapshot versions
90.2. Publishing Stubs as JARs
90.3. Stub Runner Core
90.3.1. Retrieving stubs
Stub downloading
Classpath scanning
90.3.2. Running stubs
Running using main app
HTTP Stubs
Viewing registered mappings
Messaging Stubs
90.4. Stub Runner JUnit Rule and Stub Runner JUnit5 Extension
90.4.1. Maven settings
90.4.2. Providing fixed ports
90.4.3. Fluent API
90.4.4. Stub Runner with Spring
90.5. Stub Runner Spring Cloud
90.5.1. Stubbing Service Discovery
Test profiles and service discovery
90.5.2. Additional Configuration
90.6. Stub Runner Boot Application
90.6.1. How to use it?
Stub Runner Server
Stub Runner Server Fat Jar
Spring Cloud CLI
90.6.2. Endpoints
HTTP
Messaging
90.6.3. Example
90.6.4. Stub Runner Boot with Service Discovery
90.7. Stubs Per Consumer
90.8. Common
90.8.1. Common Properties for JUnit and Spring
90.8.2. Stub Runner Stubs IDs
90.9. Stub Runner Docker
90.9.1. How to use it
90.9.2. Example of client side usage in a non JVM project
91. Stub Runner for Messaging
91.1. Stub triggering
91.1.1. Trigger by Label
91.1.2. Trigger by Group and Artifact Ids
91.1.3. Trigger by Artifact Ids
91.1.4. Trigger All Messages
91.2. Stub Runner Camel
91.2.1. Adding it to the project
91.2.2. Disabling the functionality
91.2.3. Examples
Stubs structure
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.3. Stub Runner Integration
91.3.1. Adding the Runner to the Project
91.3.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.4. Stub Runner Stream
91.4.1. Adding the Runner to the Project
91.4.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.5. Stub Runner Spring AMQP
91.5.1. Adding the Runner to the Project
Triggering the message
Spring AMQP Test Configuration
92. Contract DSL
92.1. Limitations
92.2. Common Top-Level elements
92.2.1. Description
92.2.2. Name
92.2.3. Ignoring Contracts
92.2.4. Passing Values from Files
92.2.5. HTTP Top-Level Elements
92.3. Request
92.4. Response
92.5. Dynamic properties
92.5.1. Dynamic properties inside the body
92.5.2. Regular expressions
92.5.3. Passing Optional Parameters
92.5.4. Executing Custom Methods on the Server Side
92.5.5. Referencing the Request from the Response
92.5.6. Registering Your Own WireMock Extension
92.5.7. Dynamic Properties in the Matchers Sections
92.6. JAX-RS Support
92.7. Async Support
92.8. Working with Context Paths
92.9. Working with Web Flux
92.10. Messaging Top-Level Elements
92.10.1. Output Triggered by a Method
92.10.2. Output Triggered by a Message
92.10.3. Consumer/Producer
92.10.4. Common
92.11. Multiple Contracts in One File
92.12. Generating Spring REST Docs snippets from the contracts
93. Customization
93.1. Extending the DSL
93.1.1. Common JAR
93.1.2. Adding the Dependency to the Project
93.1.3. Test the Dependency in the Project’s Dependencies
93.1.4. Test a Dependency in the Plugin’s Dependencies
93.1.5. Referencing classes in DSLs
94. Using the Pluggable Architecture
94.1. Custom Contract Converter
94.1.1. Pact Converter
94.1.2. Pact Contract
94.1.3. Pact for Producers
94.1.4. Pact for Consumers
94.2. Using the Custom Test Generator
94.3. Using the Custom Stub Generator
94.4. Using the Custom Stub Runner
94.5. Using the Custom Stub Downloader
94.6. Using the SCM Stub Downloader
94.7. Using the Pact Stub Downloader
95. Spring Cloud Contract WireMock
95.1. Registering Stubs Automatically
95.2. Using Files to Specify the Stub Bodies
95.3. Alternative: Using JUnit Rules
95.4. Relaxed SSL Validation for Rest Template
95.5. WireMock and Spring MVC Mocks
95.6. Customization of WireMock configuration
95.7. Generating Stubs using REST Docs
95.8. Generating Contracts by Using REST Docs
96. Migrations
96.1. 1.0.x → 1.1.x
96.1.1. New structure of generated stubs
96.2. 1.1.x → 1.2.x
96.2.1. Custom HttpServerStub
96.2.2. New packages for generated tests
96.2.3. New Methods in TemplateProcessor
96.2.4. RestAssured 3.0
96.3. 1.2.x → 2.0.x
97. Links
XIV. Spring Cloud Vault
98. Quick Start
99. Client Side Usage
99.1. Authentication
100. Authentication methods
100.1. Token authentication
100.2. AppId authentication
100.2.1. Custom UserId
100.3. AppRole authentication
100.4. AWS-EC2 authentication
100.5. AWS-IAM authentication
100.6. Azure MSI authentication
100.7. TLS certificate authentication
100.8. Cubbyhole authentication
101. GCP-GCE authentication
102. GCP-IAM authentication
102.1. Kubernetes authentication
103. Secret Backends
103.1. Generic Backend
103.2. Versioned Key-Value Backend
103.3. Consul
103.4. RabbitMQ
103.5. AWS
104. Database backends
104.1. Database
104.2. Apache Cassandra
104.3. MongoDB
104.4. MySQL
104.5. PostgreSQL
105. Configure PropertySourceLocator behavior
106. Service Registry Configuration
107. Vault Client Fail Fast
108. Vault Client SSL configuration
109. Lease lifecycle management (renewal and revocation)
XV. Spring Cloud Gateway
110. How to Include Spring Cloud Gateway
111. Glossary
112. How It Works
113. Route Predicate Factories
113.1. After Route Predicate Factory
113.2. Before Route Predicate Factory
113.3. Between Route Predicate Factory
113.4. Cookie Route Predicate Factory
113.5. Header Route Predicate Factory
113.6. Host Route Predicate Factory
113.7. Method Route Predicate Factory
113.8. Path Route Predicate Factory
113.9. Query Route Predicate Factory
113.10. RemoteAddr Route Predicate Factory
113.10.1. Modifying the way remote addresses are resolved
114. GatewayFilter Factories
114.1. AddRequestHeader GatewayFilter Factory
114.2. AddRequestParameter GatewayFilter Factory
114.3. AddResponseHeader GatewayFilter Factory
114.4. Hystrix GatewayFilter Factory
114.5. FallbackHeaders GatewayFilter Factory
114.6. PrefixPath GatewayFilter Factory
114.7. PreserveHostHeader GatewayFilter Factory
114.8. RequestRateLimiter GatewayFilter Factory
114.8.1. Redis RateLimiter
114.9. RedirectTo GatewayFilter Factory
114.10. RemoveNonProxyHeaders GatewayFilter Factory
114.11. RemoveRequestHeader GatewayFilter Factory
114.12. RemoveResponseHeader GatewayFilter Factory
114.13. RewritePath GatewayFilter Factory
114.14. RewriteResponseHeader GatewayFilter Factory
114.15. SaveSession GatewayFilter Factory
114.16. SecureHeaders GatewayFilter Factory
114.17. SetPath GatewayFilter Factory
114.18. SetResponseHeader GatewayFilter Factory
114.19. SetStatus GatewayFilter Factory
114.20. StripPrefix GatewayFilter Factory
114.21. Retry GatewayFilter Factory
114.22. RequestSize GatewayFilter Factory
115. Global Filters
115.1. Combined Global Filter and GatewayFilter Ordering
115.2. Forward Routing Filter
115.3. LoadBalancerClient Filter
115.4. Netty Routing Filter
115.5. Netty Write Response Filter
115.6. RouteToRequestUrl Filter
115.7. Websocket Routing Filter
115.8. Gateway Metrics Filter
115.9. Making An Exchange As Routed
116. TLS / SSL
116.1. TLS Handshake
117. Configuration
117.1. Fluent Java Routes API
117.2. DiscoveryClient Route Definition Locator
118. Reactor Netty Access Logs
119. CORS Configuration
120. Actuator API
121. Developer Guide
121.1. Writing Custom Route Predicate Factories
121.2. Writing Custom GatewayFilter Factories
121.3. Writing Custom Global Filters
121.4. Writing Custom Route Locators and Writers
122. Building a Simple Gateway Using Spring MVC or Webflux
XVI. Spring Cloud Function
123. Introduction
124. Getting Started
125. Building and Running a Function
126. Function Catalog and Flexible Function Signatures
126.1. Java 8 function support
126.2. Kotlin Lambda support
127. Standalone Web Applications
128. Standalone Streaming Applications
129. Deploying a Packaged Function
130. Functional Bean Definitions
130.1. Comparing Functional with Traditional Bean Definitions
130.2. Testing Functional Applications
130.3. Limitations of Functional Bean Declaration
131. Dynamic Compilation
132. Serverless Platform Adapters
132.1. AWS Lambda
132.1.1. Introduction
132.1.2. Notes on JAR Layout
132.1.3. Upload
132.1.4. Platfom Specific Features
HTTP and API Gateway
132.2. Azure Functions
132.2.1. Notes on JAR Layout
132.2.2. Build
132.2.3. Running the sample
132.3. Apache Openwhisk
132.3.1. Quick Start
XVII. Spring Cloud Kubernetes
133. Why do you need Spring Cloud Kubernetes?
XVIII. DiscoveryClient for Kubernetes
XIX. Kubernetes PropertySource implementations
134. ConfigMap PropertySource
135. Secrets PropertySource
136. PropertySource Reload
XX. Ribbon discovery in Kubernetes
XXI. Kubernetes Awareness
137. Kubernetes Profile Autoconfiguration
XXII. Pod Health Indicator
XXIII. Leader Election
XXIV. Security Configurations inside Kubernetes
138. Namespace
139. Service Account
XXV. Examples
XXVI. Other Resources
140. Building
140.1. Basic Compile and Test
140.2. Documentation
140.3. Working with the code
140.3.1. Importing into eclipse with m2eclipse
140.3.2. Importing into eclipse without m2eclipse
141. Contributing
141.1. Sign the Contributor License Agreement
141.2. Code of Conduct
141.3. Code Conventions and Housekeeping
XXVII. Appendix: Compendium of Configuration Properties
\ No newline at end of file diff --git a/Greenwich.M3/single/spring-cloud.html b/Greenwich.M3/single/spring-cloud.html index e063d9d5..11a625d2 100644 --- a/Greenwich.M3/single/spring-cloud.html +++ b/Greenwich.M3/single/spring-cloud.html @@ -1,6 +1,6 @@ - Spring Cloud

Spring Cloud


Table of Contents

1. Features
I. Cloud Native Applications
2. Spring Cloud Context: Application Context Services
2.1. The Bootstrap Application Context
2.2. Application Context Hierarchies
2.3. Changing the Location of Bootstrap Properties
2.4. Overriding the Values of Remote Properties
2.5. Customizing the Bootstrap Configuration
2.6. Customizing the Bootstrap Property Sources
2.7. Logging Configuration
2.8. Environment Changes
2.9. Refresh Scope
2.10. Encryption and Decryption
2.11. Endpoints
3. Spring Cloud Commons: Common Abstractions
3.1. @EnableDiscoveryClient
3.1.1. Health Indicator
3.1.2. Ordering DiscoveryClient instances
3.2. ServiceRegistry
3.2.1. ServiceRegistry Auto-Registration
ServiceRegistry Auto-Registration Events
3.2.2. Service Registry Actuator Endpoint
3.3. Spring RestTemplate as a Load Balancer Client
3.4. Spring WebClient as a Load Balancer Client
3.4.1. Retrying Failed Requests
3.5. Multiple RestTemplate objects
3.6. Spring WebFlux WebClient as a Load Balancer Client
3.7. Ignore Network Interfaces
3.8. HTTP Client Factories
3.9. Enabled Features
3.9.1. Feature types
3.9.2. Declaring features
3.10. Spring Cloud Compatibility Verification
II. Spring Cloud Config
4. Quick Start
4.1. Client Side Usage
5. Spring Cloud Config Server
5.1. Environment Repository
5.1.1. Git Backend
Skipping SSL Certificate Validation
Setting HTTP Connection Timeout
Placeholders in Git URI
Pattern Matching and Multiple Repositories
Authentication
Authentication with AWS CodeCommit
Git SSH configuration using properties
Placeholders in Git Search Paths
Force pull in Git Repositories
Deleting untracked branches in Git Repositories
Git Refresh Rate
5.1.2. Version Control Backend Filesystem Use
5.1.3. File System Backend
5.1.4. Vault Backend
Multiple Properties Sources
5.1.5. Accessing Backends Through a Proxy
5.1.6. Sharing Configuration With All Applications
File Based Repositories
Vault Server
5.1.7. JDBC Backend
5.1.8. Composite Environment Repositories
Custom Composite Environment Repositories
5.1.9. Property Overrides
5.2. Health Indicator
5.3. Security
5.4. Encryption and Decryption
5.5. Key Management
5.6. Creating a Key Store for Testing
5.7. Using Multiple Keys and Key Rotation
5.8. Serving Encrypted Properties
6. Serving Alternative Formats
7. Serving Plain Text
8. Embedding the Config Server
9. Push Notifications and Spring Cloud Bus
10. Spring Cloud Config Client
10.1. Config First Bootstrap
10.2. Discovery First Bootstrap
10.3. Config Client Fail Fast
10.4. Config Client Retry
10.5. Locating Remote Configuration Resources
10.6. Specifying Multiple Urls for the Config Server
10.7. Configuring Read Timeouts
10.8. Security
10.8.1. Health Indicator
10.8.2. Providing A Custom RestTemplate
10.8.3. Vault
10.9. Nested Keys In Vault
III. Spring Cloud Netflix
11. Service Discovery: Eureka Clients
11.1. How to Include Eureka Client
11.2. Registering with Eureka
11.3. Authenticating with the Eureka Server
11.4. Status Page and Health Indicator
11.5. Registering a Secure Application
11.6. Eureka’s Health Checks
11.7. Eureka Metadata for Instances and Clients
11.7.1. Using Eureka on Cloud Foundry
11.7.2. Using Eureka on AWS
11.7.3. Changing the Eureka Instance ID
11.8. Using the EurekaClient
11.8.1. EurekaClient without Jersey
11.9. Alternatives to the Native Netflix EurekaClient
11.10. Why Is It so Slow to Register a Service?
11.11. Zones
12. Service Discovery: Eureka Server
12.1. How to Include Eureka Server
12.2. How to Run a Eureka Server
12.3. High Availability, Zones and Regions
12.4. Standalone Mode
12.5. Peer Awareness
12.6. When to Prefer IP Address
12.7. Securing The Eureka Server
13. Circuit Breaker: Hystrix Clients
13.1. How to Include Hystrix
13.2. Propagating the Security Context or Using Spring Scopes
13.3. Health Indicator
13.4. Hystrix Metrics Stream
14. Circuit Breaker: Hystrix Dashboard
15. Hystrix Timeouts And Ribbon Clients
15.1. How to Include the Hystrix Dashboard
15.2. Turbine
15.2.1. Clusters Endpoint
15.3. Turbine Stream
16. Client Side Load Balancer: Ribbon
16.1. How to Include Ribbon
16.2. Customizing the Ribbon Client
16.3. Customizing the Default for All Ribbon Clients
16.4. Customizing the Ribbon Client by Setting Properties
16.5. Using Ribbon with Eureka
16.6. Example: How to Use Ribbon Without Eureka
16.7. Example: Disable Eureka Use in Ribbon
16.8. Using the Ribbon API Directly
16.9. Caching of Ribbon Configuration
16.10. How to Configure Hystrix Thread Pools
16.11. How to Provide a Key to Ribbon’s IRule
17. External Configuration: Archaius
18. Router and Filter: Zuul
18.1. How to Include Zuul
18.2. Embedded Zuul Reverse Proxy
18.3. Zuul Http Client
18.4. Cookies and Sensitive Headers
18.5. Ignored Headers
18.6. Management Endpoints
18.6.1. Routes Endpoint
18.6.2. Filters Endpoint
18.7. Strangulation Patterns and Local Forwards
18.8. Uploading Files through Zuul
18.9. Query String Encoding
18.10. Plain Embedded Zuul
18.11. Disable Zuul Filters
18.12. Providing Hystrix Fallbacks For Routes
18.13. Zuul Timeouts
18.14. Rewriting the Location header
18.15. Enabling Cross Origin Requests
18.16. Metrics
18.17. Zuul Developer Guide
18.17.1. The Zuul Servlet
18.17.2. Zuul RequestContext
18.17.3. @EnableZuulProxy vs. @EnableZuulServer
18.17.4. @EnableZuulServer Filters
18.17.5. @EnableZuulProxy Filters
18.17.6. Custom Zuul Filter Examples
How to Write a Pre Filter
How to Write a Route Filter
How to Write a Post Filter
18.17.7. How Zuul Errors Work
18.17.8. Zuul Eager Application Context Loading
19. Polyglot support with Sidecar
20. Retrying Failed Requests
20.1. BackOff Policies
20.2. Configuration
20.2.1. Zuul
21. HTTP Clients
IV. Spring Cloud OpenFeign
22. Declarative REST Client: Feign
22.1. How to Include Feign
22.2. Overriding Feign Defaults
22.3. Creating Feign Clients Manually
22.4. Feign Hystrix Support
22.5. Feign Hystrix Fallbacks
22.6. Feign and @Primary
22.7. Feign Inheritance Support
22.8. Feign request/response compression
22.9. Feign logging
V. Spring Cloud Stream
23. A Brief History of Spring’s Data Integration Journey
24. Quick Start
24.1. Creating a Sample Application by Using Spring Initializr
24.2. Importing the Project into Your IDE
24.3. Adding a Message Handler, Building, and Running
25. What’s New in 2.0?
25.1. New Features and Components
25.2. Notable Enhancements
25.2.1. Both Actuator and Web Dependencies Are Now Optional
25.2.2. Content-type Negotiation Improvements
25.3. Notable Deprecations
25.3.1. Java Serialization (Java Native and Kryo)
25.3.2. Deprecated Classes and Methods
26. Introducing Spring Cloud Stream
27. Main Concepts
27.1. Application Model
27.1.1. Fat JAR
27.2. The Binder Abstraction
27.3. Persistent Publish-Subscribe Support
27.4. Consumer Groups
27.5. Consumer Types
27.5.1. Durability
27.6. Partitioning Support
28. Programming Model
28.1. Destination Binders
28.2. Destination Bindings
28.3. Producing and Consuming Messages
28.3.1. Spring Integration Support
28.3.2. Using @StreamListener Annotation
28.3.3. Using @StreamListener for Content-based routing
28.3.4. Spring Cloud Function support
Functional Composition
28.3.5. Using Polled Consumers
Overview
Handling Errors
28.4. Error Handling
28.4.1. Application Error Handling
28.4.2. System Error Handling
Drop Failed Messages
DLQ - Dead Letter Queue
Re-queue Failed Messages
28.4.3. Retry Template
28.5. Reactive Programming Support
28.5.1. Reactor-based Handlers
28.5.2. Reactive Sources
29. Binders
29.1. Producers and Consumers
29.2. Binder SPI
29.3. Binder Detection
29.3.1. Classpath Detection
29.4. Multiple Binders on the Classpath
29.5. Connecting to Multiple Systems
29.6. Binding visualization and control
29.7. Binder Configuration Properties
30. Configuration Options
30.1. Binding Service Properties
30.2. Binding Properties
30.2.1. Common Binding Properties
30.2.2. Consumer Properties
30.2.3. Producer Properties
30.3. Using Dynamically Bound Destinations
31. Content Type Negotiation
31.1. Mechanics
31.1.1. Content Type versus Argument Type
31.1.2. Message Converters
31.2. Provided MessageConverters
31.3. User-defined Message Converters
32. Schema Evolution Support
32.1. Schema Registry Client
32.1.1. Schema Registry Client Properties
32.2. Avro Schema Registry Client Message Converters
32.2.1. Avro Schema Registry Message Converter Properties
32.3. Apache Avro Message Converters
32.4. Converters with Schema Support
32.5. Schema Registry Server
32.5.1. Schema Registry Server API
Registering a New Schema
Retrieving an Existing Schema by Subject, Format, and Version
Retrieving an Existing Schema by Subject and Format
Retrieving an Existing Schema by ID
Deleting a Schema by Subject, Format, and Version
Deleting a Schema by ID
Deleting a Schema by Subject
32.5.2. Using Confluent’s Schema Registry
32.6. Schema Registration and Resolution
32.6.1. Schema Registration Process (Serialization)
32.6.2. Schema Resolution Process (Deserialization)
33. Inter-Application Communication
33.1. Connecting Multiple Application Instances
33.2. Instance Index and Instance Count
33.3. Partitioning
33.3.1. Configuring Output Bindings for Partitioning
33.3.2. Configuring Input Bindings for Partitioning
34. Testing
34.1. Disabling the Test Binder Autoconfiguration
35. Health Indicator
36. Metrics Emitter
37. Samples
37.1. Deploying Stream Applications on CloudFoundry
VI. Binder Implementations
38. Apache Kafka Binder
38.1. Usage
38.2. Apache Kafka Binder Overview
38.3. Configuration Options
38.3.1. Kafka Binder Properties
38.3.2. Kafka Consumer Properties
38.3.3. Kafka Producer Properties
38.3.4. Usage examples
Example: Setting autoCommitOffset to false and Relying on Manual Acking
Example: Security Configuration
Example: Pausing and Resuming the Consumer
38.4. Error Channels
38.5. Kafka Metrics
38.6. Dead-Letter Topic Processing
38.7. Partitioning with the Kafka Binder
39. Apache Kafka Streams Binder
39.1. Usage
39.2. Kafka Streams Binder Overview
39.2.1. Streams DSL
39.3. Configuration Options
39.3.1. Kafka Streams Properties
39.3.2. TimeWindow properties:
39.4. Multiple Input Bindings
39.4.1. Multiple Input Bindings as a Sink
39.4.2. Multiple Input Bindings as a Processor
39.5. Multiple Output Bindings (aka Branching)
39.6. Message Conversion
39.6.1. Outbound serialization
39.6.2. Inbound Deserialization
39.7. Error Handling
39.7.1. Handling Deserialization Exceptions
39.7.2. Handling Non-Deserialization Exceptions
39.8. State Store
39.9. Interactive Queries
39.10. Accessing the underlying KafkaStreams object
39.11. State Cleanup
40. RabbitMQ Binder
40.1. Usage
40.2. RabbitMQ Binder Overview
40.3. Configuration Options
40.3.1. RabbitMQ Binder Properties
40.3.2. RabbitMQ Consumer Properties
40.3.3. Advanced Listener Container Configuration
40.3.4. Rabbit Producer Properties
40.4. Retry With the RabbitMQ Binder
40.4.1. Putting it All Together
40.5. Error Channels
40.6. Dead-Letter Queue Processing
40.6.1. Non-Partitioned Destinations
40.6.2. Partitioned Destinations
republishToDlq=false
republishToDlq=true
40.7. Partitioning with the RabbitMQ Binder
VII. Spring Cloud Bus
41. Quick Start
42. Bus Endpoints
42.1. Bus Refresh Endpoint
42.2. Bus Env Endpoint
43. Addressing an Instance
44. Addressing All Instances of a Service
45. Service ID Must Be Unique
46. Customizing the Message Broker
47. Tracing Bus Events
48. Broadcasting Your Own Events
48.1. Registering events in custom packages
VIII. Spring Cloud Sleuth
49. Introduction
49.1. Terminology
49.2. Purpose
49.2.1. Distributed Tracing with Zipkin
49.2.2. Visualizing errors
49.2.3. Distributed Tracing with Brave
49.2.4. Live examples
49.2.5. Log correlation
JSON Logback with Logstash
49.2.6. Propagating Span Context
Baggage versus Span Tags
49.3. Adding Sleuth to the Project
49.3.1. Only Sleuth (log correlation)
49.3.2. Sleuth with Zipkin via HTTP
49.3.3. Sleuth with Zipkin over RabbitMQ or Kafka
50. Additional Resources
51. Features
51.1. Introduction to Brave
51.1.1. Tracing
51.1.2. Local Tracing
51.1.3. Customizing Spans
51.1.4. Implicitly Looking up the Current Span
51.1.5. RPC tracing
One-Way tracing
52. Sampling
52.1. Declarative sampling
52.2. Custom sampling
52.3. Sampling in Spring Cloud Sleuth
53. Propagation
53.1. Propagating extra fields
53.1.1. Prefixed fields
53.1.2. Extracting a Propagated Context
53.1.3. Sharing span IDs between Client and Server
53.1.4. Implementing Propagation
54. Current Tracing Component
55. Current Span
55.1. Setting a span in scope manually
56. Instrumentation
57. Span lifecycle
57.1. Creating and finishing spans
57.2. Continuing Spans
57.3. Creating a Span with an explicit Parent
58. Naming spans
58.1. @SpanName Annotation
58.2. toString() method
59. Managing Spans with Annotations
59.1. Rationale
59.2. Creating New Spans
59.3. Continuing Spans
59.4. Advanced Tag Setting
59.4.1. Custom extractor
59.4.2. Resolving Expressions for a Value
59.4.3. Using the toString() method
60. Customizations
60.1. HTTP
60.2. TracingFilter
60.3. Custom service name
60.4. Customization of Reported Spans
60.5. Host Locator
61. Sending Spans to Zipkin
62. Zipkin Stream Span Consumer
63. Integrations
63.1. OpenTracing
63.2. Runnable and Callable
63.3. Hystrix
63.3.1. Custom Concurrency Strategy
63.3.2. Manual Command setting
63.4. RxJava
63.5. HTTP integration
63.5.1. HTTP Filter
63.5.2. HandlerInterceptor
63.5.3. Async Servlet support
63.5.4. WebFlux support
63.5.5. Dubbo RPC support
63.6. HTTP Client Integration
63.6.1. Synchronous Rest Template
63.6.2. Asynchronous Rest Template
Multiple Asynchronous Rest Templates
63.6.3. WebClient
63.6.4. Traverson
63.6.5. Apache HttpClientBuilder and HttpAsyncClientBuilder
63.6.6. Netty HttpClient
63.6.7. UserInfoRestTemplateCustomizer
63.7. Feign
63.8. Asynchronous Communication
63.8.1. @Async Annotated methods
63.8.2. @Scheduled Annotated Methods
63.8.3. Executor, ExecutorService, and ScheduledExecutorService
Customization of Executors
63.9. Messaging
63.9.1. Spring Integration and Spring Cloud Stream
63.9.2. Spring RabbitMq
63.9.3. Spring Kafka
63.9.4. Spring JMS
63.10. Zuul
64. Running examples
IX. Spring Cloud Consul
65. Install Consul
66. Consul Agent
67. Service Discovery with Consul
67.1. How to activate
67.2. Registering with Consul
67.3. HTTP Health Check
67.3.1. Metadata and Consul tags
67.3.2. Making the Consul Instance ID Unique
67.3.3. Applying Headers to Health Check Requests
67.4. Looking up services
67.4.1. Using Ribbon
67.4.2. Using the DiscoveryClient
67.5. Consul Catalog Watch
68. Distributed Configuration with Consul
68.1. How to activate
68.2. Customizing
68.3. Config Watch
68.4. YAML or Properties with Config
68.5. git2consul with Config
68.6. Fail Fast
69. Consul Retry
70. Spring Cloud Bus with Consul
70.1. How to activate
71. Circuit Breaker with Hystrix
72. Hystrix metrics aggregation with Turbine and Consul
X. Spring Cloud Zookeeper
73. Install Zookeeper
74. Service Discovery with Zookeeper
74.1. Activating
74.2. Registering with Zookeeper
74.3. Using the DiscoveryClient
75. Using Spring Cloud Zookeeper with Spring Cloud Netflix Components
75.1. Ribbon with Zookeeper
76. Spring Cloud Zookeeper and Service Registry
76.1. Instance Status
77. Zookeeper Dependencies
77.1. Using the Zookeeper Dependencies
77.2. Activating Zookeeper Dependencies
77.3. Setting up Zookeeper Dependencies
77.3.1. Aliases
77.3.2. Path
77.3.3. Load Balancer Type
77.3.4. Content-Type Template and Version
77.3.5. Default Headers
77.3.6. Required Dependencies
77.3.7. Stubs
77.4. Configuring Spring Cloud Zookeeper Dependencies
78. Spring Cloud Zookeeper Dependency Watcher
78.1. Activating
78.2. Registering a Listener
78.3. Using the Presence Checker
79. Distributed Configuration with Zookeeper
79.1. Activating
79.2. Customizing
79.3. Access Control Lists (ACLs)
XI. Spring Cloud Security
80. Quickstart
80.1. OAuth2 Single Sign On
80.2. OAuth2 Protected Resource
81. More Detail
81.1. Single Sign On
81.2. Token Relay
81.2.1. Client Token Relay
81.2.2. Client Token Relay in Zuul Proxy
81.2.3. Resource Server Token Relay
82. Configuring Authentication Downstream of a Zuul Proxy
XII. Spring Cloud for Cloud Foundry
83. Discovery
84. Single Sign On
XIII. Spring Cloud Contract
85. Spring Cloud Contract
86. Spring Cloud Contract Verifier Introduction
86.1. History
86.2. Why a Contract Verifier?
86.2.1. Testing issues
86.3. Purposes
86.4. How It Works
86.4.1. A Three-second Tour
On the Producer Side
On the Consumer Side
86.4.2. A Three-minute Tour
On the Producer Side
On the Consumer Side
86.4.3. Defining the Contract
86.4.4. Client Side
86.4.5. Server Side
86.5. Step-by-step Guide to Consumer Driven Contracts (CDC)
86.5.1. Technical note
86.5.2. Consumer side (Loan Issuance)
86.5.3. Producer side (Fraud Detection server)
86.5.4. Consumer Side (Loan Issuance) Final Step
86.6. Dependencies
86.7. Additional Links
86.7.1. Spring Cloud Contract video
86.7.2. Readings
86.8. Samples
87. Spring Cloud Contract FAQ
87.1. Why use Spring Cloud Contract Verifier and not X ?
87.2. I don’t want to write a contract in Groovy!
87.3. What is this value(consumer(), producer()) ?
87.4. How to do Stubs versioning?
87.4.1. API Versioning
87.4.2. JAR versioning
87.4.3. Dev or prod stubs
87.5. Common repo with contracts
87.5.1. Repo structure
87.5.2. Workflow
87.5.3. Consumer
87.5.4. Producer
87.5.5. How can I define messaging contracts per topic not per producer?
For Maven Project
For Gradle Project
87.6. Do I need a Binary Storage? Can’t I use Git?
87.6.1. Protocol convention
87.6.2. Producer
Keeping contracts with the producer and stubs in an external repository
87.6.3. Consumer
87.7. Can I use the Pact Broker?
87.7.1. Pact Consumer
87.7.2. Producer
87.7.3. Pact Consumer (Producer Contract approach)
87.8. How can I debug the request/response being sent by the generated tests client?
87.8.1. How can I debug the mapping/request/response being sent by WireMock?
87.8.2. How can I see what got registered in the HTTP server stub?
87.8.3. Can I reference text from file?
88. Spring Cloud Contract Verifier Setup
88.1. Gradle Project
88.1.1. Prerequisites
88.1.2. Add Gradle Plugin with Dependencies
88.1.3. Gradle and Rest Assured 2.0
88.1.4. Snapshot Versions for Gradle
88.1.5. Add stubs
88.1.6. Run the Plugin
88.1.7. Default Setup
88.1.8. Configure Plugin
88.1.9. Configuration Options
88.1.10. Single Base Class for All Tests
88.1.11. Different Base Classes for Contracts
88.1.12. Invoking Generated Tests
88.1.13. Pushing stubs to SCM
88.1.14. Spring Cloud Contract Verifier on the Consumer Side
88.2. Maven Project
88.2.1. Add maven plugin
88.2.2. Maven and Rest Assured 2.0
88.2.3. Snapshot versions for Maven
88.2.4. Add stubs
88.2.5. Run plugin
88.2.6. Configure plugin
88.2.7. Configuration Options
88.2.8. Single Base Class for All Tests
88.2.9. Different base classes for contracts
88.2.10. Invoking generated tests
88.2.11. Pushing stubs to SCM
88.2.12. Maven Plugin and STS
88.2.13. Maven Plugin with Spock Tests
88.3. Stubs and Transitive Dependencies
88.4. Scenarios
88.5. Docker Project
88.5.1. Short intro to Maven, JARs and Binary storage
88.5.2. How it works
Environment Variables
88.5.3. Example of usage
88.5.4. Server side (nodejs)
89. Spring Cloud Contract Verifier Messaging
89.1. Integrations
89.2. Manual Integration Testing
89.3. Publisher-Side Test Generation
89.3.1. Scenario 1: No Input Message
89.3.2. Scenario 2: Output Triggered by Input
89.3.3. Scenario 3: No Output Message
89.4. Consumer Stub Generation
90. Spring Cloud Contract Stub Runner
90.1. Snapshot versions
90.2. Publishing Stubs as JARs
90.3. Stub Runner Core
90.3.1. Retrieving stubs
Stub downloading
Classpath scanning
90.3.2. Running stubs
Running using main app
HTTP Stubs
Viewing registered mappings
Messaging Stubs
90.4. Stub Runner JUnit Rule and Stub Runner JUnit5 Extension
90.4.1. Maven settings
90.4.2. Providing fixed ports
90.4.3. Fluent API
90.4.4. Stub Runner with Spring
90.5. Stub Runner Spring Cloud
90.5.1. Stubbing Service Discovery
Test profiles and service discovery
90.5.2. Additional Configuration
90.6. Stub Runner Boot Application
90.6.1. How to use it?
Stub Runner Server
Stub Runner Server Fat Jar
Spring Cloud CLI
90.6.2. Endpoints
HTTP
Messaging
90.6.3. Example
90.6.4. Stub Runner Boot with Service Discovery
90.7. Stubs Per Consumer
90.8. Common
90.8.1. Common Properties for JUnit and Spring
90.8.2. Stub Runner Stubs IDs
90.9. Stub Runner Docker
90.9.1. How to use it
90.9.2. Example of client side usage in a non JVM project
91. Stub Runner for Messaging
91.1. Stub triggering
91.1.1. Trigger by Label
91.1.2. Trigger by Group and Artifact Ids
91.1.3. Trigger by Artifact Ids
91.1.4. Trigger All Messages
91.2. Stub Runner Camel
91.2.1. Adding it to the project
91.2.2. Disabling the functionality
91.2.3. Examples
Stubs structure
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.3. Stub Runner Integration
91.3.1. Adding the Runner to the Project
91.3.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.4. Stub Runner Stream
91.4.1. Adding the Runner to the Project
91.4.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.5. Stub Runner Spring AMQP
91.5.1. Adding the Runner to the Project
Triggering the message
Spring AMQP Test Configuration
92. Contract DSL
92.1. Limitations
92.2. Common Top-Level elements
92.2.1. Description
92.2.2. Name
92.2.3. Ignoring Contracts
92.2.4. Passing Values from Files
92.2.5. HTTP Top-Level Elements
92.3. Request
92.4. Response
92.5. Dynamic properties
92.5.1. Dynamic properties inside the body
92.5.2. Regular expressions
92.5.3. Passing Optional Parameters
92.5.4. Executing Custom Methods on the Server Side
92.5.5. Referencing the Request from the Response
92.5.6. Registering Your Own WireMock Extension
92.5.7. Dynamic Properties in the Matchers Sections
92.6. JAX-RS Support
92.7. Async Support
92.8. Working with Context Paths
92.9. Working with Web Flux
92.10. Messaging Top-Level Elements
92.10.1. Output Triggered by a Method
92.10.2. Output Triggered by a Message
92.10.3. Consumer/Producer
92.10.4. Common
92.11. Multiple Contracts in One File
92.12. Generating Spring REST Docs snippets from the contracts
93. Customization
93.1. Extending the DSL
93.1.1. Common JAR
93.1.2. Adding the Dependency to the Project
93.1.3. Test the Dependency in the Project’s Dependencies
93.1.4. Test a Dependency in the Plugin’s Dependencies
93.1.5. Referencing classes in DSLs
94. Using the Pluggable Architecture
94.1. Custom Contract Converter
94.1.1. Pact Converter
94.1.2. Pact Contract
94.1.3. Pact for Producers
94.1.4. Pact for Consumers
94.2. Using the Custom Test Generator
94.3. Using the Custom Stub Generator
94.4. Using the Custom Stub Runner
94.5. Using the Custom Stub Downloader
94.6. Using the SCM Stub Downloader
94.7. Using the Pact Stub Downloader
95. Spring Cloud Contract WireMock
95.1. Registering Stubs Automatically
95.2. Using Files to Specify the Stub Bodies
95.3. Alternative: Using JUnit Rules
95.4. Relaxed SSL Validation for Rest Template
95.5. WireMock and Spring MVC Mocks
95.6. Customization of WireMock configuration
95.7. Generating Stubs using REST Docs
95.8. Generating Contracts by Using REST Docs
96. Migrations
96.1. 1.0.x → 1.1.x
96.1.1. New structure of generated stubs
96.2. 1.1.x → 1.2.x
96.2.1. Custom HttpServerStub
96.2.2. New packages for generated tests
96.2.3. New Methods in TemplateProcessor
96.2.4. RestAssured 3.0
96.3. 1.2.x → 2.0.x
97. Links
XIV. Spring Cloud Vault
98. Quick Start
99. Client Side Usage
99.1. Authentication
100. Authentication methods
100.1. Token authentication
100.2. AppId authentication
100.2.1. Custom UserId
100.3. AppRole authentication
100.4. AWS-EC2 authentication
100.5. AWS-IAM authentication
100.6. Azure MSI authentication
100.7. TLS certificate authentication
100.8. Cubbyhole authentication
101. GCP-GCE authentication
102. GCP-IAM authentication
102.1. Kubernetes authentication
103. Secret Backends
103.1. Generic Backend
103.2. Versioned Key-Value Backend
103.3. Consul
103.4. RabbitMQ
103.5. AWS
104. Database backends
104.1. Database
104.2. Apache Cassandra
104.3. MongoDB
104.4. MySQL
104.5. PostgreSQL
105. Configure PropertySourceLocator behavior
106. Service Registry Configuration
107. Vault Client Fail Fast
108. Vault Client SSL configuration
109. Lease lifecycle management (renewal and revocation)
XV. Spring Cloud Gateway
110. How to Include Spring Cloud Gateway
111. Glossary
112. How It Works
113. Route Predicate Factories
113.1. After Route Predicate Factory
113.2. Before Route Predicate Factory
113.3. Between Route Predicate Factory
113.4. Cookie Route Predicate Factory
113.5. Header Route Predicate Factory
113.6. Host Route Predicate Factory
113.7. Method Route Predicate Factory
113.8. Path Route Predicate Factory
113.9. Query Route Predicate Factory
113.10. RemoteAddr Route Predicate Factory
113.10.1. Modifying the way remote addresses are resolved
114. GatewayFilter Factories
114.1. AddRequestHeader GatewayFilter Factory
114.2. AddRequestParameter GatewayFilter Factory
114.3. AddResponseHeader GatewayFilter Factory
114.4. Hystrix GatewayFilter Factory
114.5. FallbackHeaders GatewayFilter Factory
114.6. PrefixPath GatewayFilter Factory
114.7. PreserveHostHeader GatewayFilter Factory
114.8. RequestRateLimiter GatewayFilter Factory
114.8.1. Redis RateLimiter
114.9. RedirectTo GatewayFilter Factory
114.10. RemoveNonProxyHeaders GatewayFilter Factory
114.11. RemoveRequestHeader GatewayFilter Factory
114.12. RemoveResponseHeader GatewayFilter Factory
114.13. RewritePath GatewayFilter Factory
114.14. RewriteResponseHeader GatewayFilter Factory
114.15. SaveSession GatewayFilter Factory
114.16. SecureHeaders GatewayFilter Factory
114.17. SetPath GatewayFilter Factory
114.18. SetResponseHeader GatewayFilter Factory
114.19. SetStatus GatewayFilter Factory
114.20. StripPrefix GatewayFilter Factory
114.21. Retry GatewayFilter Factory
114.22. RequestSize GatewayFilter Factory
115. Global Filters
115.1. Combined Global Filter and GatewayFilter Ordering
115.2. Forward Routing Filter
115.3. LoadBalancerClient Filter
115.4. Netty Routing Filter
115.5. Netty Write Response Filter
115.6. RouteToRequestUrl Filter
115.7. Websocket Routing Filter
115.8. Gateway Metrics Filter
115.9. Making An Exchange As Routed
116. TLS / SSL
116.1. TLS Handshake
117. Configuration
117.1. Fluent Java Routes API
117.2. DiscoveryClient Route Definition Locator
118. Reactor Netty Access Logs
119. CORS Configuration
120. Actuator API
121. Developer Guide
121.1. Writing Custom Route Predicate Factories
121.2. Writing Custom GatewayFilter Factories
121.3. Writing Custom Global Filters
121.4. Writing Custom Route Locators and Writers
122. Building a Simple Gateway Using Spring MVC or Webflux
XVI. Spring Cloud Function
123. Introduction
124. Getting Started
125. Building and Running a Function
126. Function Catalog and Flexible Function Signatures
126.1. Java 8 function support
126.2. Kotlin Lambda support
127. Standalone Web Applications
128. Standalone Streaming Applications
129. Deploying a Packaged Function
130. Functional Bean Definitions
130.1. Comparing Functional with Traditional Bean Definitions
130.2. Testing Functional Applications
130.3. Limitations of Functional Bean Declaration
131. Dynamic Compilation
132. Serverless Platform Adapters
132.1. AWS Lambda
132.1.1. Introduction
132.1.2. Notes on JAR Layout
132.1.3. Upload
132.1.4. Platfom Specific Features
HTTP and API Gateway
132.2. Azure Functions
132.2.1. Notes on JAR Layout
132.2.2. Build
132.2.3. Running the sample
132.3. Apache Openwhisk
132.3.1. Quick Start
XVII. Appendix: Compendium of Configuration Properties

Spring Cloud provides tools for developers to quickly build some of + Spring Cloud

Spring Cloud


Table of Contents

1. Features
I. Cloud Native Applications
2. Spring Cloud Context: Application Context Services
2.1. The Bootstrap Application Context
2.2. Application Context Hierarchies
2.3. Changing the Location of Bootstrap Properties
2.4. Overriding the Values of Remote Properties
2.5. Customizing the Bootstrap Configuration
2.6. Customizing the Bootstrap Property Sources
2.7. Logging Configuration
2.8. Environment Changes
2.9. Refresh Scope
2.10. Encryption and Decryption
2.11. Endpoints
3. Spring Cloud Commons: Common Abstractions
3.1. @EnableDiscoveryClient
3.1.1. Health Indicator
3.1.2. Ordering DiscoveryClient instances
3.2. ServiceRegistry
3.2.1. ServiceRegistry Auto-Registration
ServiceRegistry Auto-Registration Events
3.2.2. Service Registry Actuator Endpoint
3.3. Spring RestTemplate as a Load Balancer Client
3.4. Spring WebClient as a Load Balancer Client
3.4.1. Retrying Failed Requests
3.5. Multiple RestTemplate objects
3.6. Spring WebFlux WebClient as a Load Balancer Client
3.7. Ignore Network Interfaces
3.8. HTTP Client Factories
3.9. Enabled Features
3.9.1. Feature types
3.9.2. Declaring features
3.10. Spring Cloud Compatibility Verification
II. Spring Cloud Config
4. Quick Start
4.1. Client Side Usage
5. Spring Cloud Config Server
5.1. Environment Repository
5.1.1. Git Backend
Skipping SSL Certificate Validation
Setting HTTP Connection Timeout
Placeholders in Git URI
Pattern Matching and Multiple Repositories
Authentication
Authentication with AWS CodeCommit
Git SSH configuration using properties
Placeholders in Git Search Paths
Force pull in Git Repositories
Deleting untracked branches in Git Repositories
Git Refresh Rate
5.1.2. Version Control Backend Filesystem Use
5.1.3. File System Backend
5.1.4. Vault Backend
Multiple Properties Sources
5.1.5. Accessing Backends Through a Proxy
5.1.6. Sharing Configuration With All Applications
File Based Repositories
Vault Server
5.1.7. JDBC Backend
5.1.8. Composite Environment Repositories
Custom Composite Environment Repositories
5.1.9. Property Overrides
5.2. Health Indicator
5.3. Security
5.4. Encryption and Decryption
5.5. Key Management
5.6. Creating a Key Store for Testing
5.7. Using Multiple Keys and Key Rotation
5.8. Serving Encrypted Properties
6. Serving Alternative Formats
7. Serving Plain Text
8. Embedding the Config Server
9. Push Notifications and Spring Cloud Bus
10. Spring Cloud Config Client
10.1. Config First Bootstrap
10.2. Discovery First Bootstrap
10.3. Config Client Fail Fast
10.4. Config Client Retry
10.5. Locating Remote Configuration Resources
10.6. Specifying Multiple Urls for the Config Server
10.7. Configuring Read Timeouts
10.8. Security
10.8.1. Health Indicator
10.8.2. Providing A Custom RestTemplate
10.8.3. Vault
10.9. Nested Keys In Vault
III. Spring Cloud Netflix
11. Service Discovery: Eureka Clients
11.1. How to Include Eureka Client
11.2. Registering with Eureka
11.3. Authenticating with the Eureka Server
11.4. Status Page and Health Indicator
11.5. Registering a Secure Application
11.6. Eureka’s Health Checks
11.7. Eureka Metadata for Instances and Clients
11.7.1. Using Eureka on Cloud Foundry
11.7.2. Using Eureka on AWS
11.7.3. Changing the Eureka Instance ID
11.8. Using the EurekaClient
11.8.1. EurekaClient without Jersey
11.9. Alternatives to the Native Netflix EurekaClient
11.10. Why Is It so Slow to Register a Service?
11.11. Zones
12. Service Discovery: Eureka Server
12.1. How to Include Eureka Server
12.2. How to Run a Eureka Server
12.3. High Availability, Zones and Regions
12.4. Standalone Mode
12.5. Peer Awareness
12.6. When to Prefer IP Address
12.7. Securing The Eureka Server
13. Circuit Breaker: Hystrix Clients
13.1. How to Include Hystrix
13.2. Propagating the Security Context or Using Spring Scopes
13.3. Health Indicator
13.4. Hystrix Metrics Stream
14. Circuit Breaker: Hystrix Dashboard
15. Hystrix Timeouts And Ribbon Clients
15.1. How to Include the Hystrix Dashboard
15.2. Turbine
15.2.1. Clusters Endpoint
15.3. Turbine Stream
16. Client Side Load Balancer: Ribbon
16.1. How to Include Ribbon
16.2. Customizing the Ribbon Client
16.3. Customizing the Default for All Ribbon Clients
16.4. Customizing the Ribbon Client by Setting Properties
16.5. Using Ribbon with Eureka
16.6. Example: How to Use Ribbon Without Eureka
16.7. Example: Disable Eureka Use in Ribbon
16.8. Using the Ribbon API Directly
16.9. Caching of Ribbon Configuration
16.10. How to Configure Hystrix Thread Pools
16.11. How to Provide a Key to Ribbon’s IRule
17. External Configuration: Archaius
18. Router and Filter: Zuul
18.1. How to Include Zuul
18.2. Embedded Zuul Reverse Proxy
18.3. Zuul Http Client
18.4. Cookies and Sensitive Headers
18.5. Ignored Headers
18.6. Management Endpoints
18.6.1. Routes Endpoint
18.6.2. Filters Endpoint
18.7. Strangulation Patterns and Local Forwards
18.8. Uploading Files through Zuul
18.9. Query String Encoding
18.10. Plain Embedded Zuul
18.11. Disable Zuul Filters
18.12. Providing Hystrix Fallbacks For Routes
18.13. Zuul Timeouts
18.14. Rewriting the Location header
18.15. Enabling Cross Origin Requests
18.16. Metrics
18.17. Zuul Developer Guide
18.17.1. The Zuul Servlet
18.17.2. Zuul RequestContext
18.17.3. @EnableZuulProxy vs. @EnableZuulServer
18.17.4. @EnableZuulServer Filters
18.17.5. @EnableZuulProxy Filters
18.17.6. Custom Zuul Filter Examples
How to Write a Pre Filter
How to Write a Route Filter
How to Write a Post Filter
18.17.7. How Zuul Errors Work
18.17.8. Zuul Eager Application Context Loading
19. Polyglot support with Sidecar
20. Retrying Failed Requests
20.1. BackOff Policies
20.2. Configuration
20.2.1. Zuul
21. HTTP Clients
IV. Spring Cloud OpenFeign
22. Declarative REST Client: Feign
22.1. How to Include Feign
22.2. Overriding Feign Defaults
22.3. Creating Feign Clients Manually
22.4. Feign Hystrix Support
22.5. Feign Hystrix Fallbacks
22.6. Feign and @Primary
22.7. Feign Inheritance Support
22.8. Feign request/response compression
22.9. Feign logging
V. Spring Cloud Stream
23. A Brief History of Spring’s Data Integration Journey
24. Quick Start
24.1. Creating a Sample Application by Using Spring Initializr
24.2. Importing the Project into Your IDE
24.3. Adding a Message Handler, Building, and Running
25. What’s New in 2.0?
25.1. New Features and Components
25.2. Notable Enhancements
25.2.1. Both Actuator and Web Dependencies Are Now Optional
25.2.2. Content-type Negotiation Improvements
25.3. Notable Deprecations
25.3.1. Java Serialization (Java Native and Kryo)
25.3.2. Deprecated Classes and Methods
26. Introducing Spring Cloud Stream
27. Main Concepts
27.1. Application Model
27.1.1. Fat JAR
27.2. The Binder Abstraction
27.3. Persistent Publish-Subscribe Support
27.4. Consumer Groups
27.5. Consumer Types
27.5.1. Durability
27.6. Partitioning Support
28. Programming Model
28.1. Destination Binders
28.2. Destination Bindings
28.3. Producing and Consuming Messages
28.3.1. Spring Integration Support
28.3.2. Using @StreamListener Annotation
28.3.3. Using @StreamListener for Content-based routing
28.3.4. Spring Cloud Function support
Functional Composition
28.3.5. Using Polled Consumers
Overview
Handling Errors
28.4. Error Handling
28.4.1. Application Error Handling
28.4.2. System Error Handling
Drop Failed Messages
DLQ - Dead Letter Queue
Re-queue Failed Messages
28.4.3. Retry Template
28.5. Reactive Programming Support
28.5.1. Reactor-based Handlers
28.5.2. Reactive Sources
29. Binders
29.1. Producers and Consumers
29.2. Binder SPI
29.3. Binder Detection
29.3.1. Classpath Detection
29.4. Multiple Binders on the Classpath
29.5. Connecting to Multiple Systems
29.6. Binding visualization and control
29.7. Binder Configuration Properties
30. Configuration Options
30.1. Binding Service Properties
30.2. Binding Properties
30.2.1. Common Binding Properties
30.2.2. Consumer Properties
30.2.3. Producer Properties
30.3. Using Dynamically Bound Destinations
31. Content Type Negotiation
31.1. Mechanics
31.1.1. Content Type versus Argument Type
31.1.2. Message Converters
31.2. Provided MessageConverters
31.3. User-defined Message Converters
32. Schema Evolution Support
32.1. Schema Registry Client
32.1.1. Schema Registry Client Properties
32.2. Avro Schema Registry Client Message Converters
32.2.1. Avro Schema Registry Message Converter Properties
32.3. Apache Avro Message Converters
32.4. Converters with Schema Support
32.5. Schema Registry Server
32.5.1. Schema Registry Server API
Registering a New Schema
Retrieving an Existing Schema by Subject, Format, and Version
Retrieving an Existing Schema by Subject and Format
Retrieving an Existing Schema by ID
Deleting a Schema by Subject, Format, and Version
Deleting a Schema by ID
Deleting a Schema by Subject
32.5.2. Using Confluent’s Schema Registry
32.6. Schema Registration and Resolution
32.6.1. Schema Registration Process (Serialization)
32.6.2. Schema Resolution Process (Deserialization)
33. Inter-Application Communication
33.1. Connecting Multiple Application Instances
33.2. Instance Index and Instance Count
33.3. Partitioning
33.3.1. Configuring Output Bindings for Partitioning
33.3.2. Configuring Input Bindings for Partitioning
34. Testing
34.1. Disabling the Test Binder Autoconfiguration
35. Health Indicator
36. Metrics Emitter
37. Samples
37.1. Deploying Stream Applications on CloudFoundry
VI. Binder Implementations
38. Apache Kafka Binder
38.1. Usage
38.2. Apache Kafka Binder Overview
38.3. Configuration Options
38.3.1. Kafka Binder Properties
38.3.2. Kafka Consumer Properties
38.3.3. Kafka Producer Properties
38.3.4. Usage examples
Example: Setting autoCommitOffset to false and Relying on Manual Acking
Example: Security Configuration
Example: Pausing and Resuming the Consumer
38.4. Error Channels
38.5. Kafka Metrics
38.6. Dead-Letter Topic Processing
38.7. Partitioning with the Kafka Binder
39. Apache Kafka Streams Binder
39.1. Usage
39.2. Kafka Streams Binder Overview
39.2.1. Streams DSL
39.3. Configuration Options
39.3.1. Kafka Streams Properties
39.3.2. TimeWindow properties:
39.4. Multiple Input Bindings
39.4.1. Multiple Input Bindings as a Sink
39.4.2. Multiple Input Bindings as a Processor
39.5. Multiple Output Bindings (aka Branching)
39.6. Message Conversion
39.6.1. Outbound serialization
39.6.2. Inbound Deserialization
39.7. Error Handling
39.7.1. Handling Deserialization Exceptions
39.7.2. Handling Non-Deserialization Exceptions
39.8. State Store
39.9. Interactive Queries
39.10. Accessing the underlying KafkaStreams object
39.11. State Cleanup
40. RabbitMQ Binder
40.1. Usage
40.2. RabbitMQ Binder Overview
40.3. Configuration Options
40.3.1. RabbitMQ Binder Properties
40.3.2. RabbitMQ Consumer Properties
40.3.3. Advanced Listener Container Configuration
40.3.4. Rabbit Producer Properties
40.4. Retry With the RabbitMQ Binder
40.4.1. Putting it All Together
40.5. Error Channels
40.6. Dead-Letter Queue Processing
40.6.1. Non-Partitioned Destinations
40.6.2. Partitioned Destinations
republishToDlq=false
republishToDlq=true
40.7. Partitioning with the RabbitMQ Binder
VII. Spring Cloud Bus
41. Quick Start
42. Bus Endpoints
42.1. Bus Refresh Endpoint
42.2. Bus Env Endpoint
43. Addressing an Instance
44. Addressing All Instances of a Service
45. Service ID Must Be Unique
46. Customizing the Message Broker
47. Tracing Bus Events
48. Broadcasting Your Own Events
48.1. Registering events in custom packages
VIII. Spring Cloud Sleuth
49. Introduction
49.1. Terminology
49.2. Purpose
49.2.1. Distributed Tracing with Zipkin
49.2.2. Visualizing errors
49.2.3. Distributed Tracing with Brave
49.2.4. Live examples
49.2.5. Log correlation
JSON Logback with Logstash
49.2.6. Propagating Span Context
Baggage versus Span Tags
49.3. Adding Sleuth to the Project
49.3.1. Only Sleuth (log correlation)
49.3.2. Sleuth with Zipkin via HTTP
49.3.3. Sleuth with Zipkin over RabbitMQ or Kafka
50. Additional Resources
51. Features
51.1. Introduction to Brave
51.1.1. Tracing
51.1.2. Local Tracing
51.1.3. Customizing Spans
51.1.4. Implicitly Looking up the Current Span
51.1.5. RPC tracing
One-Way tracing
52. Sampling
52.1. Declarative sampling
52.2. Custom sampling
52.3. Sampling in Spring Cloud Sleuth
53. Propagation
53.1. Propagating extra fields
53.1.1. Prefixed fields
53.1.2. Extracting a Propagated Context
53.1.3. Sharing span IDs between Client and Server
53.1.4. Implementing Propagation
54. Current Tracing Component
55. Current Span
55.1. Setting a span in scope manually
56. Instrumentation
57. Span lifecycle
57.1. Creating and finishing spans
57.2. Continuing Spans
57.3. Creating a Span with an explicit Parent
58. Naming spans
58.1. @SpanName Annotation
58.2. toString() method
59. Managing Spans with Annotations
59.1. Rationale
59.2. Creating New Spans
59.3. Continuing Spans
59.4. Advanced Tag Setting
59.4.1. Custom extractor
59.4.2. Resolving Expressions for a Value
59.4.3. Using the toString() method
60. Customizations
60.1. HTTP
60.2. TracingFilter
60.3. Custom service name
60.4. Customization of Reported Spans
60.5. Host Locator
61. Sending Spans to Zipkin
62. Zipkin Stream Span Consumer
63. Integrations
63.1. OpenTracing
63.2. Runnable and Callable
63.3. Hystrix
63.3.1. Custom Concurrency Strategy
63.3.2. Manual Command setting
63.4. RxJava
63.5. HTTP integration
63.5.1. HTTP Filter
63.5.2. HandlerInterceptor
63.5.3. Async Servlet support
63.5.4. WebFlux support
63.5.5. Dubbo RPC support
63.6. HTTP Client Integration
63.6.1. Synchronous Rest Template
63.6.2. Asynchronous Rest Template
Multiple Asynchronous Rest Templates
63.6.3. WebClient
63.6.4. Traverson
63.6.5. Apache HttpClientBuilder and HttpAsyncClientBuilder
63.6.6. Netty HttpClient
63.6.7. UserInfoRestTemplateCustomizer
63.7. Feign
63.8. Asynchronous Communication
63.8.1. @Async Annotated methods
63.8.2. @Scheduled Annotated Methods
63.8.3. Executor, ExecutorService, and ScheduledExecutorService
Customization of Executors
63.9. Messaging
63.9.1. Spring Integration and Spring Cloud Stream
63.9.2. Spring RabbitMq
63.9.3. Spring Kafka
63.9.4. Spring JMS
63.10. Zuul
64. Running examples
IX. Spring Cloud Consul
65. Install Consul
66. Consul Agent
67. Service Discovery with Consul
67.1. How to activate
67.2. Registering with Consul
67.3. HTTP Health Check
67.3.1. Metadata and Consul tags
67.3.2. Making the Consul Instance ID Unique
67.3.3. Applying Headers to Health Check Requests
67.4. Looking up services
67.4.1. Using Ribbon
67.4.2. Using the DiscoveryClient
67.5. Consul Catalog Watch
68. Distributed Configuration with Consul
68.1. How to activate
68.2. Customizing
68.3. Config Watch
68.4. YAML or Properties with Config
68.5. git2consul with Config
68.6. Fail Fast
69. Consul Retry
70. Spring Cloud Bus with Consul
70.1. How to activate
71. Circuit Breaker with Hystrix
72. Hystrix metrics aggregation with Turbine and Consul
X. Spring Cloud Zookeeper
73. Install Zookeeper
74. Service Discovery with Zookeeper
74.1. Activating
74.2. Registering with Zookeeper
74.3. Using the DiscoveryClient
75. Using Spring Cloud Zookeeper with Spring Cloud Netflix Components
75.1. Ribbon with Zookeeper
76. Spring Cloud Zookeeper and Service Registry
76.1. Instance Status
77. Zookeeper Dependencies
77.1. Using the Zookeeper Dependencies
77.2. Activating Zookeeper Dependencies
77.3. Setting up Zookeeper Dependencies
77.3.1. Aliases
77.3.2. Path
77.3.3. Load Balancer Type
77.3.4. Content-Type Template and Version
77.3.5. Default Headers
77.3.6. Required Dependencies
77.3.7. Stubs
77.4. Configuring Spring Cloud Zookeeper Dependencies
78. Spring Cloud Zookeeper Dependency Watcher
78.1. Activating
78.2. Registering a Listener
78.3. Using the Presence Checker
79. Distributed Configuration with Zookeeper
79.1. Activating
79.2. Customizing
79.3. Access Control Lists (ACLs)
XI. Spring Cloud Security
80. Quickstart
80.1. OAuth2 Single Sign On
80.2. OAuth2 Protected Resource
81. More Detail
81.1. Single Sign On
81.2. Token Relay
81.2.1. Client Token Relay
81.2.2. Client Token Relay in Zuul Proxy
81.2.3. Resource Server Token Relay
82. Configuring Authentication Downstream of a Zuul Proxy
XII. Spring Cloud for Cloud Foundry
83. Discovery
84. Single Sign On
XIII. Spring Cloud Contract
85. Spring Cloud Contract
86. Spring Cloud Contract Verifier Introduction
86.1. History
86.2. Why a Contract Verifier?
86.2.1. Testing issues
86.3. Purposes
86.4. How It Works
86.4.1. A Three-second Tour
On the Producer Side
On the Consumer Side
86.4.2. A Three-minute Tour
On the Producer Side
On the Consumer Side
86.4.3. Defining the Contract
86.4.4. Client Side
86.4.5. Server Side
86.5. Step-by-step Guide to Consumer Driven Contracts (CDC)
86.5.1. Technical note
86.5.2. Consumer side (Loan Issuance)
86.5.3. Producer side (Fraud Detection server)
86.5.4. Consumer Side (Loan Issuance) Final Step
86.6. Dependencies
86.7. Additional Links
86.7.1. Spring Cloud Contract video
86.7.2. Readings
86.8. Samples
87. Spring Cloud Contract FAQ
87.1. Why use Spring Cloud Contract Verifier and not X ?
87.2. I don’t want to write a contract in Groovy!
87.3. What is this value(consumer(), producer()) ?
87.4. How to do Stubs versioning?
87.4.1. API Versioning
87.4.2. JAR versioning
87.4.3. Dev or prod stubs
87.5. Common repo with contracts
87.5.1. Repo structure
87.5.2. Workflow
87.5.3. Consumer
87.5.4. Producer
87.5.5. How can I define messaging contracts per topic not per producer?
For Maven Project
For Gradle Project
87.6. Do I need a Binary Storage? Can’t I use Git?
87.6.1. Protocol convention
87.6.2. Producer
Keeping contracts with the producer and stubs in an external repository
87.6.3. Consumer
87.7. Can I use the Pact Broker?
87.7.1. Pact Consumer
87.7.2. Producer
87.7.3. Pact Consumer (Producer Contract approach)
87.8. How can I debug the request/response being sent by the generated tests client?
87.8.1. How can I debug the mapping/request/response being sent by WireMock?
87.8.2. How can I see what got registered in the HTTP server stub?
87.8.3. Can I reference text from file?
88. Spring Cloud Contract Verifier Setup
88.1. Gradle Project
88.1.1. Prerequisites
88.1.2. Add Gradle Plugin with Dependencies
88.1.3. Gradle and Rest Assured 2.0
88.1.4. Snapshot Versions for Gradle
88.1.5. Add stubs
88.1.6. Run the Plugin
88.1.7. Default Setup
88.1.8. Configure Plugin
88.1.9. Configuration Options
88.1.10. Single Base Class for All Tests
88.1.11. Different Base Classes for Contracts
88.1.12. Invoking Generated Tests
88.1.13. Pushing stubs to SCM
88.1.14. Spring Cloud Contract Verifier on the Consumer Side
88.2. Maven Project
88.2.1. Add maven plugin
88.2.2. Maven and Rest Assured 2.0
88.2.3. Snapshot versions for Maven
88.2.4. Add stubs
88.2.5. Run plugin
88.2.6. Configure plugin
88.2.7. Configuration Options
88.2.8. Single Base Class for All Tests
88.2.9. Different base classes for contracts
88.2.10. Invoking generated tests
88.2.11. Pushing stubs to SCM
88.2.12. Maven Plugin and STS
88.2.13. Maven Plugin with Spock Tests
88.3. Stubs and Transitive Dependencies
88.4. Scenarios
88.5. Docker Project
88.5.1. Short intro to Maven, JARs and Binary storage
88.5.2. How it works
Environment Variables
88.5.3. Example of usage
88.5.4. Server side (nodejs)
89. Spring Cloud Contract Verifier Messaging
89.1. Integrations
89.2. Manual Integration Testing
89.3. Publisher-Side Test Generation
89.3.1. Scenario 1: No Input Message
89.3.2. Scenario 2: Output Triggered by Input
89.3.3. Scenario 3: No Output Message
89.4. Consumer Stub Generation
90. Spring Cloud Contract Stub Runner
90.1. Snapshot versions
90.2. Publishing Stubs as JARs
90.3. Stub Runner Core
90.3.1. Retrieving stubs
Stub downloading
Classpath scanning
90.3.2. Running stubs
Running using main app
HTTP Stubs
Viewing registered mappings
Messaging Stubs
90.4. Stub Runner JUnit Rule and Stub Runner JUnit5 Extension
90.4.1. Maven settings
90.4.2. Providing fixed ports
90.4.3. Fluent API
90.4.4. Stub Runner with Spring
90.5. Stub Runner Spring Cloud
90.5.1. Stubbing Service Discovery
Test profiles and service discovery
90.5.2. Additional Configuration
90.6. Stub Runner Boot Application
90.6.1. How to use it?
Stub Runner Server
Stub Runner Server Fat Jar
Spring Cloud CLI
90.6.2. Endpoints
HTTP
Messaging
90.6.3. Example
90.6.4. Stub Runner Boot with Service Discovery
90.7. Stubs Per Consumer
90.8. Common
90.8.1. Common Properties for JUnit and Spring
90.8.2. Stub Runner Stubs IDs
90.9. Stub Runner Docker
90.9.1. How to use it
90.9.2. Example of client side usage in a non JVM project
91. Stub Runner for Messaging
91.1. Stub triggering
91.1.1. Trigger by Label
91.1.2. Trigger by Group and Artifact Ids
91.1.3. Trigger by Artifact Ids
91.1.4. Trigger All Messages
91.2. Stub Runner Camel
91.2.1. Adding it to the project
91.2.2. Disabling the functionality
91.2.3. Examples
Stubs structure
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.3. Stub Runner Integration
91.3.1. Adding the Runner to the Project
91.3.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.4. Stub Runner Stream
91.4.1. Adding the Runner to the Project
91.4.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
91.5. Stub Runner Spring AMQP
91.5.1. Adding the Runner to the Project
Triggering the message
Spring AMQP Test Configuration
92. Contract DSL
92.1. Limitations
92.2. Common Top-Level elements
92.2.1. Description
92.2.2. Name
92.2.3. Ignoring Contracts
92.2.4. Passing Values from Files
92.2.5. HTTP Top-Level Elements
92.3. Request
92.4. Response
92.5. Dynamic properties
92.5.1. Dynamic properties inside the body
92.5.2. Regular expressions
92.5.3. Passing Optional Parameters
92.5.4. Executing Custom Methods on the Server Side
92.5.5. Referencing the Request from the Response
92.5.6. Registering Your Own WireMock Extension
92.5.7. Dynamic Properties in the Matchers Sections
92.6. JAX-RS Support
92.7. Async Support
92.8. Working with Context Paths
92.9. Working with Web Flux
92.10. Messaging Top-Level Elements
92.10.1. Output Triggered by a Method
92.10.2. Output Triggered by a Message
92.10.3. Consumer/Producer
92.10.4. Common
92.11. Multiple Contracts in One File
92.12. Generating Spring REST Docs snippets from the contracts
93. Customization
93.1. Extending the DSL
93.1.1. Common JAR
93.1.2. Adding the Dependency to the Project
93.1.3. Test the Dependency in the Project’s Dependencies
93.1.4. Test a Dependency in the Plugin’s Dependencies
93.1.5. Referencing classes in DSLs
94. Using the Pluggable Architecture
94.1. Custom Contract Converter
94.1.1. Pact Converter
94.1.2. Pact Contract
94.1.3. Pact for Producers
94.1.4. Pact for Consumers
94.2. Using the Custom Test Generator
94.3. Using the Custom Stub Generator
94.4. Using the Custom Stub Runner
94.5. Using the Custom Stub Downloader
94.6. Using the SCM Stub Downloader
94.7. Using the Pact Stub Downloader
95. Spring Cloud Contract WireMock
95.1. Registering Stubs Automatically
95.2. Using Files to Specify the Stub Bodies
95.3. Alternative: Using JUnit Rules
95.4. Relaxed SSL Validation for Rest Template
95.5. WireMock and Spring MVC Mocks
95.6. Customization of WireMock configuration
95.7. Generating Stubs using REST Docs
95.8. Generating Contracts by Using REST Docs
96. Migrations
96.1. 1.0.x → 1.1.x
96.1.1. New structure of generated stubs
96.2. 1.1.x → 1.2.x
96.2.1. Custom HttpServerStub
96.2.2. New packages for generated tests
96.2.3. New Methods in TemplateProcessor
96.2.4. RestAssured 3.0
96.3. 1.2.x → 2.0.x
97. Links
XIV. Spring Cloud Vault
98. Quick Start
99. Client Side Usage
99.1. Authentication
100. Authentication methods
100.1. Token authentication
100.2. AppId authentication
100.2.1. Custom UserId
100.3. AppRole authentication
100.4. AWS-EC2 authentication
100.5. AWS-IAM authentication
100.6. Azure MSI authentication
100.7. TLS certificate authentication
100.8. Cubbyhole authentication
101. GCP-GCE authentication
102. GCP-IAM authentication
102.1. Kubernetes authentication
103. Secret Backends
103.1. Generic Backend
103.2. Versioned Key-Value Backend
103.3. Consul
103.4. RabbitMQ
103.5. AWS
104. Database backends
104.1. Database
104.2. Apache Cassandra
104.3. MongoDB
104.4. MySQL
104.5. PostgreSQL
105. Configure PropertySourceLocator behavior
106. Service Registry Configuration
107. Vault Client Fail Fast
108. Vault Client SSL configuration
109. Lease lifecycle management (renewal and revocation)
XV. Spring Cloud Gateway
110. How to Include Spring Cloud Gateway
111. Glossary
112. How It Works
113. Route Predicate Factories
113.1. After Route Predicate Factory
113.2. Before Route Predicate Factory
113.3. Between Route Predicate Factory
113.4. Cookie Route Predicate Factory
113.5. Header Route Predicate Factory
113.6. Host Route Predicate Factory
113.7. Method Route Predicate Factory
113.8. Path Route Predicate Factory
113.9. Query Route Predicate Factory
113.10. RemoteAddr Route Predicate Factory
113.10.1. Modifying the way remote addresses are resolved
114. GatewayFilter Factories
114.1. AddRequestHeader GatewayFilter Factory
114.2. AddRequestParameter GatewayFilter Factory
114.3. AddResponseHeader GatewayFilter Factory
114.4. Hystrix GatewayFilter Factory
114.5. FallbackHeaders GatewayFilter Factory
114.6. PrefixPath GatewayFilter Factory
114.7. PreserveHostHeader GatewayFilter Factory
114.8. RequestRateLimiter GatewayFilter Factory
114.8.1. Redis RateLimiter
114.9. RedirectTo GatewayFilter Factory
114.10. RemoveNonProxyHeaders GatewayFilter Factory
114.11. RemoveRequestHeader GatewayFilter Factory
114.12. RemoveResponseHeader GatewayFilter Factory
114.13. RewritePath GatewayFilter Factory
114.14. RewriteResponseHeader GatewayFilter Factory
114.15. SaveSession GatewayFilter Factory
114.16. SecureHeaders GatewayFilter Factory
114.17. SetPath GatewayFilter Factory
114.18. SetResponseHeader GatewayFilter Factory
114.19. SetStatus GatewayFilter Factory
114.20. StripPrefix GatewayFilter Factory
114.21. Retry GatewayFilter Factory
114.22. RequestSize GatewayFilter Factory
115. Global Filters
115.1. Combined Global Filter and GatewayFilter Ordering
115.2. Forward Routing Filter
115.3. LoadBalancerClient Filter
115.4. Netty Routing Filter
115.5. Netty Write Response Filter
115.6. RouteToRequestUrl Filter
115.7. Websocket Routing Filter
115.8. Gateway Metrics Filter
115.9. Making An Exchange As Routed
116. TLS / SSL
116.1. TLS Handshake
117. Configuration
117.1. Fluent Java Routes API
117.2. DiscoveryClient Route Definition Locator
118. Reactor Netty Access Logs
119. CORS Configuration
120. Actuator API
121. Developer Guide
121.1. Writing Custom Route Predicate Factories
121.2. Writing Custom GatewayFilter Factories
121.3. Writing Custom Global Filters
121.4. Writing Custom Route Locators and Writers
122. Building a Simple Gateway Using Spring MVC or Webflux
XVI. Spring Cloud Function
123. Introduction
124. Getting Started
125. Building and Running a Function
126. Function Catalog and Flexible Function Signatures
126.1. Java 8 function support
126.2. Kotlin Lambda support
127. Standalone Web Applications
128. Standalone Streaming Applications
129. Deploying a Packaged Function
130. Functional Bean Definitions
130.1. Comparing Functional with Traditional Bean Definitions
130.2. Testing Functional Applications
130.3. Limitations of Functional Bean Declaration
131. Dynamic Compilation
132. Serverless Platform Adapters
132.1. AWS Lambda
132.1.1. Introduction
132.1.2. Notes on JAR Layout
132.1.3. Upload
132.1.4. Platfom Specific Features
HTTP and API Gateway
132.2. Azure Functions
132.2.1. Notes on JAR Layout
132.2.2. Build
132.2.3. Running the sample
132.3. Apache Openwhisk
132.3.1. Quick Start
XVII. Spring Cloud Kubernetes
133. Why do you need Spring Cloud Kubernetes?
XVIII. DiscoveryClient for Kubernetes
XIX. Kubernetes PropertySource implementations
134. ConfigMap PropertySource
135. Secrets PropertySource
136. PropertySource Reload
XX. Ribbon discovery in Kubernetes
XXI. Kubernetes Awareness
137. Kubernetes Profile Autoconfiguration
XXII. Pod Health Indicator
XXIII. Leader Election
XXIV. Security Configurations inside Kubernetes
138. Namespace
139. Service Account
XXV. Examples
XXVI. Other Resources
140. Building
140.1. Basic Compile and Test
140.2. Documentation
140.3. Working with the code
140.3.1. Importing into eclipse with m2eclipse
140.3.2. Importing into eclipse without m2eclipse
141. Contributing
141.1. Sign the Contributor License Agreement
141.2. Code of Conduct
141.3. Code Conventions and Housekeeping
XXVII. Appendix: Compendium of Configuration Properties

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus). Coordination of @@ -13921,4 +13921,330 @@ ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "runner. EXPOSE 8080

[Note]Note

you could use a Spring Cloud Function app, instead of just a jar with a POF in it, in which case you would have to change the way the app runs in the container so that it picks up the main class as a source file. For example, you could change the ENTRYPOINT above and add --spring.main.sources=com.example.SampleApplication.

Build the Docker image:

docker build -t [username/appname] .

Push the Docker image:

docker push [username/appname]

Use the OpenWhisk CLI (e.g. after vagrant ssh) to create the action:

wsk action create example --docker [username/appname]

Invoke the action:

wsk action invoke example --result --param payload foo
 {
     "result": "FOO"
-}

Part XVII. Appendix: Compendium of Configuration Properties

Name

Default

Description

aws.paramstore.default-context

application

 

aws.paramstore.enabled

true

Is AWS Parameter Store support enabled.

aws.paramstore.fail-fast

true

Throw exceptions during config lookup if true, otherwise, log warnings.

aws.paramstore.name

 

Alternative to spring.application.name to use in looking up values in AWS Parameter Store.

aws.paramstore.prefix

/config

Prefix indicating first level for every property. Value must start with a forward slash followed by a valid path segment or be empty. Defaults to "/config".

aws.paramstore.profile-separator

_

 

encrypt.fail-on-error

true

Flag to say that a process should fail if there is an encryption or decryption error.

encrypt.key

 

A symmetric key. As a stronger alternative, consider using a keystore.

encrypt.key-store.alias

 

Alias for a key in the store.

encrypt.key-store.location

 

Location of the key store file, e.g. classpath:/keystore.jks.

encrypt.key-store.password

 

Password that locks the keystore.

encrypt.key-store.secret

 

Secret protecting the key (defaults to the same as the password).

encrypt.rsa.algorithm

 

The RSA algorithm to use (DEFAULT or OEAP). Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.rsa.salt

deadbeef

Salt for the random secret used to encrypt cipher text. Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.rsa.strong

false

Flag to indicate that "strong" AES encryption should be used internally. If true, then the GCM algorithm is applied to the AES encrypted bytes. Default is false (in which case "standard" CBC is used instead). Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.salt

deadbeef

A salt for the symmetric key, in the form of a hex-encoded byte array. As a stronger alternative, consider using a keystore.

endpoints.zookeeper.enabled

true

Enable the /zookeeper endpoint to inspect the state of zookeeper.

eureka.client.healthcheck.enabled

true

Enables the Eureka health check handler.

health.config.enabled

false

Flag to indicate that the config server health indicator should be installed.

health.config.time-to-live

0

Time to live for cached result, in milliseconds. Default 300000 (5 min).

hystrix.metrics.enabled

true

Enable Hystrix metrics polling. Defaults to true.

hystrix.metrics.polling-interval-ms

2000

Interval between subsequent polling of metrics. Defaults to 2000 ms.

hystrix.shareSecurityContext

false

Enables auto-configuration of the Hystrix concurrency strategy plugin hook who will transfer the SecurityContext from your main thread to the one used by the Hystrix command.

management.endpoint.bindings.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.bindings.enabled

true

Whether to enable the bindings endpoint.

management.endpoint.bus-env.enabled

true

Whether to enable the bus-env endpoint.

management.endpoint.bus-refresh.enabled

true

Whether to enable the bus-refresh endpoint.

management.endpoint.channels.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.channels.enabled

true

Whether to enable the channels endpoint.

management.endpoint.consul.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.consul.enabled

true

Whether to enable the consul endpoint.

management.endpoint.env.post.enabled

true

Enable changing the Environment through a POST to /env.

management.endpoint.features.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.features.enabled

true

Whether to enable the features endpoint.

management.endpoint.gateway.enabled

true

Whether to enable the gateway endpoint.

management.endpoint.hystrix.config

 

Hystrix settings. These are traditionally set using servlet parameters. Refer to the documentation of Hystrix for more details.

management.endpoint.hystrix.stream.enabled

true

Whether to enable the hystrix.stream endpoint.

management.endpoint.pause.enabled

true

Enable the /pause endpoint (to send Lifecycle.stop()).

management.endpoint.refresh.enabled

true

Enable the /refresh endpoint to refresh configuration and re-initialize refresh scoped beans.

management.endpoint.restart.enabled

true

Enable the /restart endpoint to restart the application context.

management.endpoint.resume.enabled

true

Enable the /resume endpoint (to send Lifecycle.start()).

management.endpoint.service-registry.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.service-registry.enabled

true

Whether to enable the service-registry endpoint.

management.health.refresh.enabled

true

Enable the health endpoint for the refresh scope.

management.health.zookeeper.enabled

true

Enable the health endpoint for zookeeper.

management.metrics.binders.hystrix.enabled

true

Enables creation of OK Http Client factory beans.

maven.checksum-policy

  

maven.connect-timeout

  

maven.local-repository

  

maven.offline

  

maven.proxy

  

maven.remote-repositories

  

maven.request-timeout

  

maven.resolve-pom

  

maven.update-policy

  

proxy.auth.load-balanced

false

 

proxy.auth.routes

 

Authentication strategy per route.

ribbon.eager-load.clients

  

ribbon.eager-load.enabled

false

 

ribbon.http.client.enabled

false

Deprecated property to enable Ribbon RestClient.

ribbon.okhttp.enabled

false

Enables the use of the OK HTTP Client with Ribbon.

ribbon.restclient.enabled

false

Enables the use of the deprecated Ribbon RestClient.

ribbon.secure-ports

  

spring.cloud.bus.ack.destination-service

 

Service that wants to listen to acks. By default null (meaning all services).

spring.cloud.bus.ack.enabled

true

Flag to switch off acks (default on).

spring.cloud.bus.destination

springCloudBus

Name of Spring Cloud Stream destination for messages.

spring.cloud.bus.enabled

true

Flag to indicate that the bus is enabled.

spring.cloud.bus.env.enabled

true

Flag to switch off environment change events (default on).

spring.cloud.bus.id

application

The identifier for this application instance.

spring.cloud.bus.refresh.enabled

true

Flag to switch off refresh events (default on).

spring.cloud.bus.trace.enabled

false

Flag to switch on tracing of acks (default off).

spring.cloud.cloudfoundry.discovery.default-server-port

80

Port to use when no port is defined by ribbon.

spring.cloud.cloudfoundry.discovery.enabled

true

Flag to indicate that discovery is enabled.

spring.cloud.cloudfoundry.discovery.heartbeat-frequency

5000

Frequency in milliseconds of poll for heart beat. The client will poll on this frequency and broadcast a list of service ids.

spring.cloud.cloudfoundry.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.cloudfoundry.org

 

Organization name to initially target.

spring.cloud.cloudfoundry.password

 

Password for user to authenticate and obtain token.

spring.cloud.cloudfoundry.skip-ssl-validation

false

 

spring.cloud.cloudfoundry.space

 

Space name to initially target.

spring.cloud.cloudfoundry.url

 

URL of Cloud Foundry API (Cloud Controller).

spring.cloud.cloudfoundry.username

 

Username to authenticate (usually an email address).

spring.cloud.compatibility-verifier.compatible-boot-versions

2.1.x

Default accepted versions for the Spring Boot dependency. You can set {@code x} for the patch version if you don’t want to specify a concrete value. Example: {@code 3.4.x}

spring.cloud.compatibility-verifier.enabled

false

Enables creation of Spring Cloud compatibility verification.

spring.cloud.config.allow-override

true

Flag to indicate that {@link #isOverrideSystemProperties() systemPropertiesOverride} can be used. Set to false to prevent users from changing the default accidentally. Default true.

spring.cloud.config.discovery.enabled

false

Flag to indicate that config server discovery is enabled (config server URL will be looked up via discovery).

spring.cloud.config.discovery.service-id

configserver

Service id to locate config server.

spring.cloud.config.enabled

true

Flag to say that remote configuration is enabled. Default true;

spring.cloud.config.fail-fast

false

Flag to indicate that failure to connect to the server is fatal (default false).

spring.cloud.config.headers

 

Additional headers used to create the client request.

spring.cloud.config.label

 

The label name to use to pull remote configuration properties. The default is set on the server (generally "master" for a git based server).

spring.cloud.config.name

 

Name of application used to fetch remote properties.

spring.cloud.config.override-none

false

Flag to indicate that when {@link #setAllowOverride(boolean) allowOverride} is true, external properties should take lowest priority and should not override any existing property sources (including local config files). Default false.

spring.cloud.config.override-system-properties

true

Flag to indicate that the external properties should override system properties. Default true.

spring.cloud.config.password

 

The password to use (HTTP Basic) when contacting the remote server.

spring.cloud.config.profile

default

The default profile to use when fetching remote configuration (comma-separated). Default is "default".

spring.cloud.config.request-read-timeout

0

timeout on waiting to read data from the Config Server.

spring.cloud.config.retry.initial-interval

1000

Initial retry interval in milliseconds.

spring.cloud.config.retry.max-attempts

6

Maximum number of attempts.

spring.cloud.config.retry.max-interval

2000

Maximum interval for backoff.

spring.cloud.config.retry.multiplier

1.1

Multiplier for next interval.

spring.cloud.config.send-state

true

Flag to indicate whether to send state. Default true.

spring.cloud.config.server.accept-empty

true

Flag to indicate that If HTTP 404 needs to be sent if Application is not Found

spring.cloud.config.server.bootstrap

false

Flag indicating that the config server should initialize its own Environment with properties from the remote repository. Off by default because it delays startup but can be useful when embedding the server in another application.

spring.cloud.config.server.default-application-name

application

Default application name when incoming requests do not have a specific one.

spring.cloud.config.server.default-label

 

Default repository label when incoming requests do not have a specific label.

spring.cloud.config.server.default-profile

default

Default application profile when incoming requests do not have a specific one.

spring.cloud.config.server.encrypt.enabled

true

Enable decryption of environment properties before sending to client.

spring.cloud.config.server.git.basedir

 

Base directory for local working copy of repository.

spring.cloud.config.server.git.clone-on-start

false

Flag to indicate that the repository should be cloned on startup (not on demand). Generally leads to slower startup but faster first query.

spring.cloud.config.server.git.default-label

 

The default label to be used with the remore repository

spring.cloud.config.server.git.delete-untracked-branches

false

Flag to indicate that the branch should be deleted locally if it’s origin tracked branch was removed.

spring.cloud.config.server.git.force-pull

false

Flag to indicate that the repository should force pull. If true discard any local changes and take from remote repository.

spring.cloud.config.server.git.host-key

 

Valid SSH host key. Must be set if hostKeyAlgorithm is also set.

spring.cloud.config.server.git.host-key-algorithm

 

One of ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, or ecdsa-sha2-nistp521. Must be set if hostKey is also set.

spring.cloud.config.server.git.ignore-local-ssh-settings

false

If true, use property-based instead of file-based SSH config.

spring.cloud.config.server.git.known-hosts-file

 

Location of custom .known_hosts file.

spring.cloud.config.server.git.order

 

The order of the environment repository.

spring.cloud.config.server.git.passphrase

 

Passphrase for unlocking your ssh private key.

spring.cloud.config.server.git.password

 

Password for authentication with remote repository.

spring.cloud.config.server.git.preferred-authentications

 

Override server authentication method order. This should allow for evading login prompts if server has keyboard-interactive authentication before the publickey method.

spring.cloud.config.server.git.private-key

 

Valid SSH private key. Must be set if ignoreLocalSshSettings is true and Git URI is SSH format.

spring.cloud.config.server.git.proxy

 

HTTP proxy configuration.

spring.cloud.config.server.git.refresh-rate

0

Time (in seconds) between refresh of the git repository

spring.cloud.config.server.git.repos

 

Map of repository identifier to location and other properties.

spring.cloud.config.server.git.search-paths

 

Search paths to use within local working copy. By default searches only the root.

spring.cloud.config.server.git.skip-ssl-validation

false

Flag to indicate that SSL certificate validation should be bypassed when communicating with a repository served over an HTTPS connection.

spring.cloud.config.server.git.strict-host-key-checking

true

If false, ignore errors with host key

spring.cloud.config.server.git.timeout

5

Timeout (in seconds) for obtaining HTTP or SSH connection (if applicable), defaults to 5 seconds.

spring.cloud.config.server.git.uri

 

URI of remote repository.

spring.cloud.config.server.git.username

 

Username for authentication with remote repository.

spring.cloud.config.server.health.repositories

  

spring.cloud.config.server.jdbc.order

0

 

spring.cloud.config.server.jdbc.sql

SELECT KEY, VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?

SQL used to query database for keys and values

spring.cloud.config.server.native.add-label-locations

true

Flag to determine whether label locations should be added.

spring.cloud.config.server.native.default-label

master

 

spring.cloud.config.server.native.fail-on-error

false

Flag to determine how to handle exceptions during decryption (default false).

spring.cloud.config.server.native.order

  

spring.cloud.config.server.native.search-locations

[]

Locations to search for configuration files. Defaults to the same as a Spring Boot app so [classpath:/,classpath:/config/,file:./,file:./config/].

spring.cloud.config.server.native.version

 

Version string to be reported for native repository

spring.cloud.config.server.overrides

 

Extra map for a property source to be sent to all clients unconditionally.

spring.cloud.config.server.prefix

 

Prefix for configuration resource paths (default is empty). Useful when embedding in another application when you don’t want to change the context path or servlet path.

spring.cloud.config.server.strip-document-from-yaml

true

Flag to indicate that YAML documents that are text or collections (not a map) should be returned in "native" form.

spring.cloud.config.server.svn.basedir

 

Base directory for local working copy of repository.

spring.cloud.config.server.svn.default-label

 

The default label to be used with the remore repository

spring.cloud.config.server.svn.order

 

The order of the environment repository.

spring.cloud.config.server.svn.passphrase

 

Passphrase for unlocking your ssh private key.

spring.cloud.config.server.svn.password

 

Password for authentication with remote repository.

spring.cloud.config.server.svn.search-paths

 

Search paths to use within local working copy. By default searches only the root.

spring.cloud.config.server.svn.strict-host-key-checking

true

Reject incoming SSH host keys from remote servers not in the known host list.

spring.cloud.config.server.svn.uri

 

URI of remote repository.

spring.cloud.config.server.svn.username

 

Username for authentication with remote repository.

spring.cloud.config.server.vault.backend

secret

Vault backend. Defaults to secret.

spring.cloud.config.server.vault.default-key

application

The key in vault shared by all applications. Defaults to application. Set to empty to disable.

spring.cloud.config.server.vault.host

127.0.0.1

Vault host. Defaults to 127.0.0.1.

spring.cloud.config.server.vault.kv-version

1

Value to indicate which version of Vault kv backend is used. Defaults to 1.

spring.cloud.config.server.vault.order

  

spring.cloud.config.server.vault.port

8200

Vault port. Defaults to 8200.

spring.cloud.config.server.vault.profile-separator

,

Vault profile separator. Defaults to comma.

spring.cloud.config.server.vault.proxy

 

HTTP proxy configuration.

spring.cloud.config.server.vault.scheme

http

Vault scheme. Defaults to http.

spring.cloud.config.server.vault.skip-ssl-validation

false

Flag to indicate that SSL certificate validation should be bypassed when communicating with a repository served over an HTTPS connection.

spring.cloud.config.server.vault.timeout

5

Timeout (in seconds) for obtaining HTTP connection, defaults to 5 seconds.

spring.cloud.config.token

 

Security Token passed thru to underlying environment repository.

spring.cloud.config.uri

[http://localhost:8888]

The URI of the remote server (default http://localhost:8888).

spring.cloud.config.username

 

The username to use (HTTP Basic) when contacting the remote server.

spring.cloud.consul.config.acl-token

  

spring.cloud.consul.config.data-key

data

If format is Format.PROPERTIES or Format.YAML then the following field is used as key to look up consul for configuration.

spring.cloud.consul.config.default-context

application

 

spring.cloud.consul.config.enabled

true

 

spring.cloud.consul.config.fail-fast

true

Throw exceptions during config lookup if true, otherwise, log warnings.

spring.cloud.consul.config.format

  

spring.cloud.consul.config.name

 

Alternative to spring.application.name to use in looking up values in consul KV.

spring.cloud.consul.config.prefix

config

 

spring.cloud.consul.config.profile-separator

,

 

spring.cloud.consul.config.watch.delay

1000

The value of the fixed delay for the watch in millis. Defaults to 1000.

spring.cloud.consul.config.watch.enabled

true

If the watch is enabled. Defaults to true.

spring.cloud.consul.config.watch.wait-time

55

The number of seconds to wait (or block) for watch query, defaults to 55. Needs to be less than default ConsulClient (defaults to 60). To increase ConsulClient timeout create a ConsulClient bean with a custom ConsulRawClient with a custom HttpClient.

spring.cloud.consul.discovery.acl-token

  

spring.cloud.consul.discovery.catalog-services-watch-delay

1000

The delay between calls to watch consul catalog in millis, default is 1000.

spring.cloud.consul.discovery.catalog-services-watch-timeout

2

The number of seconds to block while watching consul catalog, default is 2.

spring.cloud.consul.discovery.datacenters

 

Map of serviceId’s → datacenter to query for in server list. This allows looking up services in another datacenters.

spring.cloud.consul.discovery.default-query-tag

 

Tag to query for in service list if one is not listed in serverListQueryTags.

spring.cloud.consul.discovery.default-zone-metadata-name

zone

Service instance zone comes from metadata. This allows changing the metadata tag name.

spring.cloud.consul.discovery.deregister

true

Disable automatic de-registration of service in consul.

spring.cloud.consul.discovery.enabled

true

Is service discovery enabled?

spring.cloud.consul.discovery.fail-fast

true

Throw exceptions during service registration if true, otherwise, log warnings (defaults to true).

spring.cloud.consul.discovery.health-check-critical-timeout

 

Timeout to deregister services critical for longer than timeout (e.g. 30m). Requires consul version 7.x or higher.

spring.cloud.consul.discovery.health-check-headers

 

Headers to be applied to the Health Check calls

spring.cloud.consul.discovery.health-check-interval

10s

How often to perform the health check (e.g. 10s), defaults to 10s.

spring.cloud.consul.discovery.health-check-path

/actuator/health

Alternate server path to invoke for health checking

spring.cloud.consul.discovery.health-check-timeout

 

Timeout for health check (e.g. 10s).

spring.cloud.consul.discovery.health-check-tls-skip-verify

 

Skips certificate verification during service checks if true, otherwise runs certificate verification.

spring.cloud.consul.discovery.health-check-url

 

Custom health check url to override default

spring.cloud.consul.discovery.heartbeat.enabled

false

 

spring.cloud.consul.discovery.heartbeat.interval-ratio

  

spring.cloud.consul.discovery.heartbeat.ttl-unit

s

 

spring.cloud.consul.discovery.heartbeat.ttl-value

30

 

spring.cloud.consul.discovery.hostname

 

Hostname to use when accessing server

spring.cloud.consul.discovery.instance-group

 

Service instance group

spring.cloud.consul.discovery.instance-id

 

Unique service instance id

spring.cloud.consul.discovery.instance-zone

 

Service instance zone

spring.cloud.consul.discovery.ip-address

 

IP address to use when accessing service (must also set preferIpAddress to use)

spring.cloud.consul.discovery.lifecycle.enabled

true

 

spring.cloud.consul.discovery.management-port

 

Port to register the management service under (defaults to management port)

spring.cloud.consul.discovery.management-suffix

management

Suffix to use when registering management service

spring.cloud.consul.discovery.management-tags

 

Tags to use when registering management service

spring.cloud.consul.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.consul.discovery.port

 

Port to register the service under (defaults to listening port)

spring.cloud.consul.discovery.prefer-agent-address

false

Source of how we will determine the address to use

spring.cloud.consul.discovery.prefer-ip-address

false

Use ip address rather than hostname during registration

spring.cloud.consul.discovery.query-passing

false

Add the 'passing` parameter to /v1/health/service/serviceName. This pushes health check passing to the server.

spring.cloud.consul.discovery.register

true

Register as a service in consul.

spring.cloud.consul.discovery.register-health-check

true

Register health check in consul. Useful during development of a service.

spring.cloud.consul.discovery.scheme

http

Whether to register an http or https service

spring.cloud.consul.discovery.server-list-query-tags

 

Map of serviceId’s → tag to query for in server list. This allows filtering services by a single tag.

spring.cloud.consul.discovery.service-name

 

Service name

spring.cloud.consul.discovery.tags

 

Tags to use when registering service

spring.cloud.consul.enabled

true

Is spring cloud consul enabled

spring.cloud.consul.host

localhost

Consul agent hostname. Defaults to 'localhost'.

spring.cloud.consul.port

8500

Consul agent port. Defaults to '8500'.

spring.cloud.consul.retry.initial-interval

1000

Initial retry interval in milliseconds.

spring.cloud.consul.retry.max-attempts

6

Maximum number of attempts.

spring.cloud.consul.retry.max-interval

2000

Maximum interval for backoff.

spring.cloud.consul.retry.multiplier

1.1

Multiplier for next interval.

spring.cloud.consul.scheme

 

Consul agent scheme (HTTP/HTTPS). If there is no scheme in address - client will use HTTP.

spring.cloud.consul.tls.certificate-password

 

Password to open the certificate.

spring.cloud.consul.tls.certificate-path

 

File path to the certificate.

spring.cloud.consul.tls.key-store-instance-type

 

Type of key framework to use.

spring.cloud.consul.tls.key-store-password

 

Password to an external keystore

spring.cloud.consul.tls.key-store-path

 

Path to an external keystore

spring.cloud.discovery.client.cloudfoundry.order

  

spring.cloud.discovery.client.composite-indicator.enabled

true

Enables discovery client composite health indicator.

spring.cloud.discovery.client.health-indicator.enabled

true

 

spring.cloud.discovery.client.health-indicator.include-description

false

 

spring.cloud.discovery.client.simple.instances

  

spring.cloud.discovery.client.simple.local.instance-id

 

The unique identifier or name for the service instance.

spring.cloud.discovery.client.simple.local.metadata

 

Metadata for the service instance. Can be used by discovery clients to modify their behaviour per instance, e.g. when load balancing.

spring.cloud.discovery.client.simple.local.service-id

 

The identifier or name for the service. Multiple instances might share the same service ID.

spring.cloud.discovery.client.simple.local.uri

 

The URI of the service instance. Will be parsed to extract the scheme, host, and port.

spring.cloud.discovery.client.simple.order

  

spring.cloud.discovery.enabled

true

Enables discovery client health indicators.

spring.cloud.features.enabled

true

Enables the features endpoint.

spring.cloud.function.compile

 

Configuration for function bodies, which will be compiled. The key in the map is the function name and the value is a map containing a key "lambda" which is the body to compile, and optionally a "type" (defaults to "function"). Can also contain "inputType" and "outputType" in case it is ambiguous.

spring.cloud.function.imports

 

Configuration for a set of files containing function bodies, which will be imported and compiled. The key in the map is the function name and the value is another map, containing a "location" of the file to compile and (optionally) a "type" (defaults to "function").

spring.cloud.function.task.consumer

  

spring.cloud.function.task.function

  

spring.cloud.function.task.supplier

  

spring.cloud.function.web.path

 

Path to web resources for functions (should start with / if not empty).

spring.cloud.function.web.supplier.auto-startup

true

 

spring.cloud.function.web.supplier.debug

true

 

spring.cloud.function.web.supplier.enabled

false

 

spring.cloud.function.web.supplier.headers

  

spring.cloud.function.web.supplier.name

  

spring.cloud.function.web.supplier.template-url

  

spring.cloud.gateway.default-filters

 

List of filter definitions that are applied to every route.

spring.cloud.gateway.discovery.locator.enabled

false

Flag that enables DiscoveryClient gateway integration

spring.cloud.gateway.discovery.locator.filters

  

spring.cloud.gateway.discovery.locator.include-expression

true

SpEL expression that will evaluate whether to include a service in gateway integration or not, defaults to: true

spring.cloud.gateway.discovery.locator.lower-case-service-id

false

Option to lower case serviceId in predicates and filters, defaults to false. Useful with eureka when it automatically uppercases serviceId. so MYSERIVCE, would match /myservice/**

spring.cloud.gateway.discovery.locator.predicates

  

spring.cloud.gateway.discovery.locator.route-id-prefix

 

The prefix for the routeId, defaults to discoveryClient.getClass().getSimpleName() + "_". Service Id will be appended to create the routeId.

spring.cloud.gateway.discovery.locator.url-expression

'lb://'+serviceId

SpEL expression that create the uri for each route, defaults to: 'lb://'+serviceId

spring.cloud.gateway.enabled

true

Enables gateway functionality.

spring.cloud.gateway.filter.remove-hop-by-hop.headers

  

spring.cloud.gateway.filter.remove-hop-by-hop.order

  

spring.cloud.gateway.filter.secure-headers.content-security-policy

default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline'

 

spring.cloud.gateway.filter.secure-headers.content-type-options

nosniff

 

spring.cloud.gateway.filter.secure-headers.download-options

noopen

 

spring.cloud.gateway.filter.secure-headers.frame-options

DENY

 

spring.cloud.gateway.filter.secure-headers.permitted-cross-domain-policies

none

 

spring.cloud.gateway.filter.secure-headers.referrer-policy

no-referrer

 

spring.cloud.gateway.filter.secure-headers.strict-transport-security

max-age=631138519

 

spring.cloud.gateway.filter.secure-headers.xss-protection-header

1 ; mode=block

 

spring.cloud.gateway.forwarded.enabled

true

Enables the ForwardedHeadersFilter.

spring.cloud.gateway.globalcors.cors-configurations

  

spring.cloud.gateway.httpclient.connect-timeout

 

The connect timeout in millis, the default is 45s.

spring.cloud.gateway.httpclient.pool.acquire-timeout

 

Only for type FIXED, the maximum time in millis to wait for aquiring.

spring.cloud.gateway.httpclient.pool.max-connections

 

Only for type FIXED, the maximum number of connections before starting pending acquisition on existing ones.

spring.cloud.gateway.httpclient.pool.name

proxy

The channel pool map name, defaults to proxy.

spring.cloud.gateway.httpclient.pool.type

 

Type of pool for HttpClient to use, defaults to ELASTIC.

spring.cloud.gateway.httpclient.proxy.host

 

Hostname for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.non-proxy-hosts-pattern

 

Regular expression (Java) for a configured list of hosts that should be reached directly, bypassing the proxy

spring.cloud.gateway.httpclient.proxy.password

 

Password for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.port

 

Port for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.username

 

Username for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.response-timeout

 

The response timeout.

spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout

3000ms

SSL close_notify flush timeout. Default to 3000 ms.

spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout

 

SSL close_notify read timeout. Default to 0 ms.

spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.default-configuration-type

 

The default ssl configuration type. Defaults to TCP.

spring.cloud.gateway.httpclient.ssl.handshake-timeout

10000ms

SSL handshake timeout. Default to 10000 ms

spring.cloud.gateway.httpclient.ssl.handshake-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.trusted-x509-certificates

 

Trusted certificates for verifying the remote endpoint’s certificate.

spring.cloud.gateway.httpclient.ssl.use-insecure-trust-manager

false

Installs the netty InsecureTrustManagerFactory. This is insecure and not suitable for production.

spring.cloud.gateway.metrics.enabled

false

Enables the collection of metrics data.

spring.cloud.gateway.proxy.headers

 

Fixed header values that will be added to all downstream requests.

spring.cloud.gateway.proxy.sensitive

 

A set of sensitive header names that will not be sent downstream by default.

spring.cloud.gateway.redis-rate-limiter.burst-capacity-header

X-RateLimit-Burst-Capacity

The name of the header that returns the burst capacity configuration.

spring.cloud.gateway.redis-rate-limiter.config

  

spring.cloud.gateway.redis-rate-limiter.include-headers

true

Whether or not to include headers containing rate limiter information, defaults to true.

spring.cloud.gateway.redis-rate-limiter.remaining-header

X-RateLimit-Remaining

The name of the header that returns number of remaining requests during the current second.

spring.cloud.gateway.redis-rate-limiter.replenish-rate-header

X-RateLimit-Replenish-Rate

The name of the header that returns the replenish rate configuration.

spring.cloud.gateway.routes

 

List of Routes

spring.cloud.gateway.streaming-media-types

  

spring.cloud.gateway.x-forwarded.enabled

true

If the XForwardedHeadersFilter is enabled.

spring.cloud.gateway.x-forwarded.for-append

true

If appending X-Forwarded-For as a list is enabled.

spring.cloud.gateway.x-forwarded.for-enabled

true

If X-Forwarded-For is enabled.

spring.cloud.gateway.x-forwarded.host-append

true

If appending X-Forwarded-Host as a list is enabled.

spring.cloud.gateway.x-forwarded.host-enabled

true

If X-Forwarded-Host is enabled.

spring.cloud.gateway.x-forwarded.order

0

The order of the XForwardedHeadersFilter.

spring.cloud.gateway.x-forwarded.port-append

true

If appending X-Forwarded-Port as a list is enabled.

spring.cloud.gateway.x-forwarded.port-enabled

true

If X-Forwarded-Port is enabled.

spring.cloud.gateway.x-forwarded.prefix-append

true

If appending X-Forwarded-Prefix as a list is enabled.

spring.cloud.gateway.x-forwarded.prefix-enabled

true

If X-Forwarded-Prefix is enabled.

spring.cloud.gateway.x-forwarded.proto-append

true

If appending X-Forwarded-Proto as a list is enabled.

spring.cloud.gateway.x-forwarded.proto-enabled

true

If X-Forwarded-Proto is enabled.

spring.cloud.httpclientfactories.apache.enabled

true

Enables creation of Apache Http Client factory beans.

spring.cloud.httpclientfactories.ok.enabled

true

Enables creation of OK Http Client factory beans.

spring.cloud.hypermedia.refresh.fixed-delay

5000

 

spring.cloud.hypermedia.refresh.initial-delay

10000

 

spring.cloud.inetutils.default-hostname

localhost

The default hostname. Used in case of errors.

spring.cloud.inetutils.default-ip-address

127.0.0.1

The default IP address. Used in case of errors.

spring.cloud.inetutils.ignored-interfaces

 

List of Java regular expressions for network interfaces that will be ignored.

spring.cloud.inetutils.preferred-networks

 

List of Java regular expressions for network addresses that will be preferred.

spring.cloud.inetutils.timeout-seconds

1

Timeout, in seconds, for calculating hostname.

spring.cloud.inetutils.use-only-site-local-interfaces

false

Whether to use only interfaces with site local addresses. See {@link InetAddress#isSiteLocalAddress()} for more details.

spring.cloud.loadbalancer.retry.enabled

true

 

spring.cloud.refresh.enabled

true

Enables autoconfiguration for the refresh scope and associated features.

spring.cloud.refresh.extra-refreshable

true

Additional class names for beans to post process into refresh scope.

spring.cloud.service-registry.auto-registration.enabled

true

Whether service auto-registration is enabled. Defaults to true.

spring.cloud.service-registry.auto-registration.fail-fast

false

Whether startup fails if there is no AutoServiceRegistration. Defaults to false.

spring.cloud.service-registry.auto-registration.register-management

true

Whether to register the management as a service. Defaults to true.

spring.cloud.stream.binders

 

Additional per-binder properties (see {@link BinderProperties}) if more then one binder of the same type is used (i.e., connect to multiple instances of RabbitMq). Here you can specify multiple binder configurations, each with different environment settings. For example; spring.cloud.stream.binders.rabbit1.environment. . . , spring.cloud.stream.binders.rabbit2.environment. . .

spring.cloud.stream.binding-retry-interval

30

Retry interval (in seconds) used to schedule binding attempts. Default: 30 sec.

spring.cloud.stream.bindings

 

Additional binding properties (see {@link BinderProperties}) per binding name (e.g., 'input`). For example; This sets the content-type for the 'input' binding of a Sink application: 'spring.cloud.stream.bindings.input.contentType=text/plain'

spring.cloud.stream.consul.binder.event-timeout

5

 

spring.cloud.stream.default-binder

 

The name of the binder to use by all bindings in the event multiple binders available (e.g., 'rabbit');

spring.cloud.stream.dynamic-destinations

[]

A list of destinations that can be bound dynamically. If set, only listed destinations can be bound.

spring.cloud.stream.function.definition

 

Definition of functions to bind. If several functions need to be composed into one, use pipes (e.g., 'fooFunc

barFunc')

spring.cloud.stream.instance-count

1

The number of deployed instances of an application. Default: 1. NOTE: Could also be managed per individual binding "spring.cloud.stream.bindings.foo.consumer.instance-count" where 'foo' is the name of the binding.

spring.cloud.stream.instance-index

0

The instance id of the application: a number from 0 to instanceCount-1. Used for partitioning and with Kafka. NOTE: Could also be managed per individual binding "spring.cloud.stream.bindings.foo.consumer.instance-index" where 'foo' is the name of the binding.

spring.cloud.stream.integration.message-handler-not-propagated-headers

 

Message header names that will NOT be copied from the inbound message.

spring.cloud.stream.kafka.binder.auto-add-partitions

false

 

spring.cloud.stream.kafka.binder.auto-create-topics

true

 

spring.cloud.stream.kafka.binder.brokers

[localhost]

 

spring.cloud.stream.kafka.binder.configuration

 

Arbitrary kafka properties that apply to both producers and consumers.

spring.cloud.stream.kafka.binder.consumer-properties

 

Arbitrary kafka consumer properties.

spring.cloud.stream.kafka.binder.fetch-size

0

 

spring.cloud.stream.kafka.binder.header-mapper-bean-name

 

The bean name of a custom header mapper to use instead of a {@link org.springframework.kafka.support.DefaultKafkaHeaderMapper}.

spring.cloud.stream.kafka.binder.headers

[]

 

spring.cloud.stream.kafka.binder.health-timeout

60

Time to wait to get partition information in seconds; default 60.

spring.cloud.stream.kafka.binder.jaas

 
 

spring.cloud.stream.kafka.binder.max-wait

100

 

spring.cloud.stream.kafka.binder.min-partition-count

1

 

spring.cloud.stream.kafka.binder.offset-update-count

0

 

spring.cloud.stream.kafka.binder.offset-update-shutdown-timeout

2000

 

spring.cloud.stream.kafka.binder.offset-update-time-window

10000

 

spring.cloud.stream.kafka.binder.producer-properties

 

Arbitrary kafka producer properties.

spring.cloud.stream.kafka.binder.queue-size

8192

 

spring.cloud.stream.kafka.binder.replication-factor

1

 

spring.cloud.stream.kafka.binder.required-acks

1

 

spring.cloud.stream.kafka.binder.socket-buffer-size

2097152

 

spring.cloud.stream.kafka.binder.transaction.producer.admin

 
 

spring.cloud.stream.kafka.binder.transaction.producer.batch-timeout

 
 

spring.cloud.stream.kafka.binder.transaction.producer.buffer-size

 
 

spring.cloud.stream.kafka.binder.transaction.producer.compression-type

 
 

spring.cloud.stream.kafka.binder.transaction.producer.configuration

 
 

spring.cloud.stream.kafka.binder.transaction.producer.error-channel-enabled

 
 

spring.cloud.stream.kafka.binder.transaction.producer.header-mode

 
 

spring.cloud.stream.kafka.binder.transaction.producer.header-patterns

 
 

spring.cloud.stream.kafka.binder.transaction.producer.message-key-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-count

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-key-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-key-extractor-name

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-selector-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-selector-name

 
 

spring.cloud.stream.kafka.binder.transaction.producer.required-groups

 
 

spring.cloud.stream.kafka.binder.transaction.producer.sync

 
 

spring.cloud.stream.kafka.binder.transaction.producer.use-native-encoding

 
 

spring.cloud.stream.kafka.binder.transaction.transaction-id-prefix

 
 

spring.cloud.stream.kafka.binder.zk-connection-timeout

10000

ZK Connection timeout in milliseconds.

spring.cloud.stream.kafka.binder.zk-nodes

[localhost]

 

spring.cloud.stream.kafka.binder.zk-session-timeout

10000

ZK session timeout in milliseconds.

spring.cloud.stream.kafka.bindings

 
 

spring.cloud.stream.kafka.streams.binder.application-id

 
 

spring.cloud.stream.kafka.streams.binder.auto-add-partitions

 
 

spring.cloud.stream.kafka.streams.binder.auto-create-topics

 
 

spring.cloud.stream.kafka.streams.binder.brokers

 
 

spring.cloud.stream.kafka.streams.binder.configuration

 
 

spring.cloud.stream.kafka.streams.binder.consumer-properties

 
 

spring.cloud.stream.kafka.streams.binder.fetch-size

 
 

spring.cloud.stream.kafka.streams.binder.header-mapper-bean-name

 
 

spring.cloud.stream.kafka.streams.binder.headers

 
 

spring.cloud.stream.kafka.streams.binder.health-timeout

 
 

spring.cloud.stream.kafka.streams.binder.jaas

 
 

spring.cloud.stream.kafka.streams.binder.max-wait

 
 

spring.cloud.stream.kafka.streams.binder.min-partition-count

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-count

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-shutdown-timeout

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-time-window

 
 

spring.cloud.stream.kafka.streams.binder.producer-properties

 
 

spring.cloud.stream.kafka.streams.binder.queue-size

 
 

spring.cloud.stream.kafka.streams.binder.replication-factor

 
 

spring.cloud.stream.kafka.streams.binder.required-acks

 
 

spring.cloud.stream.kafka.streams.binder.serde-error

 

{@link org.apache.kafka.streams.errors.DeserializationExceptionHandler} to use when there is a Serde error. {@link KafkaStreamsBinderConfigurationProperties.SerdeError} values are used to provide the exception handler on consumer binding.

spring.cloud.stream.kafka.streams.binder.socket-buffer-size

 
 

spring.cloud.stream.kafka.streams.binder.zk-connection-timeout

 
 

spring.cloud.stream.kafka.streams.binder.zk-nodes

 
 

spring.cloud.stream.kafka.streams.binder.zk-session-timeout

 
 

spring.cloud.stream.kafka.streams.bindings

 
 

spring.cloud.stream.kafka.streams.time-window.advance-by

0

 

spring.cloud.stream.kafka.streams.time-window.length

0

 

spring.cloud.stream.metrics.export-properties

 

List of properties that are going to be appended to each message. This gets populate by onApplicationEvent, once the context refreshes to avoid overhead of doing per message basis.

spring.cloud.stream.metrics.key

 

The name of the metric being emitted. Should be an unique value per application. Defaults to: ${spring.application.name:${vcap.application.name:${spring.config.name:application}}}

spring.cloud.stream.metrics.meter-filter

 

Pattern to control the 'meters' one wants to capture. By default all 'meters' will be captured. For example, 'spring.integration.*' will only capture metric information for meters whose name starts with 'spring.integration'.

spring.cloud.stream.metrics.properties

 

Application properties that should be added to the metrics payload For example: spring.application**

spring.cloud.stream.metrics.schedule-interval

60s

Interval expressed as Duration for scheduling metrics snapshots publishing. Defaults to 60 seconds

spring.cloud.stream.override-cloud-connectors

false

This property is only applicable when the cloud profile is active and Spring Cloud Connectors are provided with the application. If the property is false (the default), the binder detects a suitable bound service (for example, a RabbitMQ service bound in Cloud Foundry for the RabbitMQ binder) and uses it for creating connections (usually through Spring Cloud Connectors). When set to true, this property instructs binders to completely ignore the bound services and rely on Spring Boot properties (for example, relying on the spring.rabbitmq.* properties provided in the environment for the RabbitMQ binder). The typical usage of this property is to be nested in a customized environment when connecting to multiple systems.

spring.cloud.stream.rabbit.binder.admin-addresses

[]

Urls for management plugins; only needed for queue affinity.

spring.cloud.stream.rabbit.binder.admin-adresses

 
 

spring.cloud.stream.rabbit.binder.compression-level

0

Compression level for compressed bindings; see 'java.util.zip.Deflator'.

spring.cloud.stream.rabbit.binder.connection-name-prefix

 

Prefix for connection names from this binder.

spring.cloud.stream.rabbit.binder.nodes

[]

Cluster member node names; only needed for queue affinity.

spring.cloud.stream.rabbit.bindings

 
 

spring.cloud.stream.schema-registry-client.cached

false

 

spring.cloud.stream.schema-registry-client.endpoint

 
 

spring.cloud.stream.schema.avro.dynamic-schema-generation-enabled

false

 

spring.cloud.stream.schema.avro.prefix

vnd

 

spring.cloud.stream.schema.avro.reader-schema

 
 

spring.cloud.stream.schema.avro.schema-imports

 

A list of files or directories that should be loaded first thus making them importable by subsequent schemas. Note that imported files should not reference each other. @parameter

spring.cloud.stream.schema.avro.schema-locations

 

The source directory of Apache Avro schema. This schema is used by this converter. If this schema depends on other schemas consider defining those those dependent ones in the {@link #schemaImports} @parameter

spring.cloud.stream.schema.server.allow-schema-deletion

false

Boolean flag to enable/disable schema deletion.

spring.cloud.stream.schema.server.path

 

Prefix for configuration resource paths (default is empty). Useful when embedding in another application when you don’t want to change the context path or servlet path.

spring.cloud.task.batch.command-line-runner-order

0

The order for the {@code CommandLineRunner} used to run batch jobs when {@code spring.cloud.task.batch.fail-on-job-failure=true}. Defaults to 0 (same as the {@link org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner}).

spring.cloud.task.batch.events.chunk-order

 

Properties for chunk listener order

spring.cloud.task.batch.events.chunk.enabled

true

This property is used to determine if a task should listen for batch chunk events.

spring.cloud.task.batch.events.enabled

true

This property is used to determine if a task should listen for batch events.

spring.cloud.task.batch.events.item-process-order

 

Properties for itemProcess listener order

spring.cloud.task.batch.events.item-process.enabled

true

This property is used to determine if a task should listen for batch item processed events.

spring.cloud.task.batch.events.item-read-order

 

Properties for itemRead listener order

spring.cloud.task.batch.events.item-read.enabled

true

This property is used to determine if a task should listen for batch item read events.

spring.cloud.task.batch.events.item-write-order

 

Properties for itemWrite listener order

spring.cloud.task.batch.events.item-write.enabled

true

This property is used to determine if a task should listen for batch item write events.

spring.cloud.task.batch.events.job-execution-order

 

Properties for jobExecution listener order

spring.cloud.task.batch.events.job-execution.enabled

true

This property is used to determine if a task should listen for batch job execution events.

spring.cloud.task.batch.events.skip-order

 

Properties for skip listener order

spring.cloud.task.batch.events.skip.enabled

true

This property is used to determine if a task should listen for batch skip events.

spring.cloud.task.batch.events.step-execution-order

 

Properties for stepExecution listener order

spring.cloud.task.batch.events.step-execution.enabled

true

This property is used to determine if a task should listen for batch step execution events.

spring.cloud.task.batch.fail-on-job-failure

false

This property is used to determine if a task app should return with a non zero exit code if a batch job fails.

spring.cloud.task.batch.fail-on-job-failure-poll-interval

5000

Fixed delay in milliseconds that Spring Cloud Task will wait when checking if {@link org.springframework.batch.core.JobExecution}s have completed, when spring.cloud.task.batch.failOnJobFailure is set to true. Defaults to 5000.

spring.cloud.task.batch.fail-on-job-failurewait-time

0

Maximum wait time in milliseconds that Spring Cloud Task will wait for tasks to complete when spring.cloud.task.batch.failOnJobFailure is set to true. Defaults to 0. 0 indicates no wait time is enforced.

spring.cloud.task.batch.job-names

 

Comma-separated list of job names to execute on startup (for instance, job1,job2). By default, all Jobs found in the context are executed.

spring.cloud.task.batch.listener.enabled

true

This property is used to determine if a task will be linked to the batch jobs that are run.

spring.cloud.task.closecontext-enabled

false

When set to true the context is closed at the end of the task. Else the context remains open.

spring.cloud.task.events.enabled

true

This property is used to determine if a task app should emit task events.

spring.cloud.task.executionid

 

An id that will be used by the task when updating the task execution.

spring.cloud.task.external-execution-id

 

An id that can be associated with a task.

spring.cloud.task.parent-execution-id

 

The id of the parent task execution id that launched this task execution. Defaults to null if task execution had no parent.

spring.cloud.task.single-instance-enabled

false

This property is used to determine if a task will execute if another task with the same app name is running.

spring.cloud.task.single-instance-lock-check-interval

500

Declares the time (in millis) that a task execution will wait between checks. Default time is: 500 millis.

spring.cloud.task.single-instance-lock-ttl

 

Declares the maximum amount of time (in millis) that a task execution can hold a lock to prevent another task from executing with a specific task name when the single-instance-enabled is set to true. Default time is: Integer.MAX_VALUE.

spring.cloud.task.table-prefix

TASK_

The prefix to append to the table names created by Spring Cloud Task.

spring.cloud.util.enabled

true

Enables creation of Spring Cloud utility beans.

spring.cloud.vault.app-id.app-id-path

app-id

Mount path of the AppId authentication backend.

spring.cloud.vault.app-id.network-interface

 

Network interface hint for the "MAC_ADDRESS" UserId mechanism.

spring.cloud.vault.app-id.user-id

MAC_ADDRESS

UserId mechanism. Can be either "MAC_ADDRESS", "IP_ADDRESS", a string or a class name.

spring.cloud.vault.app-role.app-role-path

approle

Mount path of the AppRole authentication backend.

spring.cloud.vault.app-role.role

 

Name of the role, optional, used for pull-mode.

spring.cloud.vault.app-role.role-id

 

The RoleId.

spring.cloud.vault.app-role.secret-id

 

The SecretId.

spring.cloud.vault.application-name

application

Application name for AppId authentication.

spring.cloud.vault.authentication

 
 

spring.cloud.vault.aws-ec2.aws-ec2-path

aws-ec2

Mount path of the AWS-EC2 authentication backend.

spring.cloud.vault.aws-ec2.identity-document

http://169.254.169.254/latest/dynamic/instance-identity/pkcs7

URL of the AWS-EC2 PKCS7 identity document.

spring.cloud.vault.aws-ec2.nonce

 

Nonce used for AWS-EC2 authentication. An empty nonce defaults to nonce generation.

spring.cloud.vault.aws-ec2.role

 

Name of the role, optional.

spring.cloud.vault.aws-iam.aws-path

aws

Mount path of the AWS authentication backend.

spring.cloud.vault.aws-iam.role

 

Name of the role, optional. Defaults to the friendly IAM name if not set.

spring.cloud.vault.aws-iam.server-name

 

Name of the server used to set {@code X-Vault-AWS-IAM-Server-ID} header in the headers of login requests.

spring.cloud.vault.aws.access-key-property

cloud.aws.credentials.accessKey

Target property for the obtained access key.

spring.cloud.vault.aws.backend

aws

aws backend path.

spring.cloud.vault.aws.enabled

false

Enable aws backend usage.

spring.cloud.vault.aws.role

 

Role name for credentials.

spring.cloud.vault.aws.secret-key-property

cloud.aws.credentials.secretKey

Target property for the obtained secret key.

spring.cloud.vault.azure-msi.azure-path

azure

Mount path of the Azure MSI authentication backend.

spring.cloud.vault.azure-msi.role

 

Name of the role.

spring.cloud.vault.cassandra.backend

cassandra

Cassandra backend path.

spring.cloud.vault.cassandra.enabled

false

Enable cassandra backend usage.

spring.cloud.vault.cassandra.password-property

spring.data.cassandra.password

Target property for the obtained password.

spring.cloud.vault.cassandra.role

 

Role name for credentials.

spring.cloud.vault.cassandra.username-property

spring.data.cassandra.username

Target property for the obtained username.

spring.cloud.vault.config.lifecycle.enabled

true

Enable lifecycle management.

spring.cloud.vault.config.order

0

Used to set a {@link org.springframework.core.env.PropertySource} priority. This is useful to use Vault as an override on other property sources. @see org.springframework.core.PriorityOrdered

spring.cloud.vault.connection-timeout

5000

Connection timeout;

spring.cloud.vault.consul.backend

consul

Consul backend path.

spring.cloud.vault.consul.enabled

false

Enable consul backend usage.

spring.cloud.vault.consul.role

 

Role name for credentials.

spring.cloud.vault.consul.token-property

spring.cloud.consul.token

Target property for the obtained token.

spring.cloud.vault.database.backend

database

Database backend path.

spring.cloud.vault.database.enabled

false

Enable database backend usage.

spring.cloud.vault.database.password-property

spring.datasource.password

Target property for the obtained password.

spring.cloud.vault.database.role

 

Role name for credentials.

spring.cloud.vault.database.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.discovery.enabled

false

Flag to indicate that Vault server discovery is enabled (vault server URL will be looked up via discovery).

spring.cloud.vault.discovery.service-id

vault

Service id to locate Vault.

spring.cloud.vault.enabled

true

Enable Vault config server.

spring.cloud.vault.fail-fast

false

Fail fast if data cannot be obtained from Vault.

spring.cloud.vault.gcp-gce.gcp-path

gcp

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.gcp-gce.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.gcp-gce.service-account

 

Optional service account id. Using the default id if left unconfigured.

spring.cloud.vault.gcp-iam.credentials.encoded-key

 

The base64 encoded contents of an OAuth2 account private key in JSON format.

spring.cloud.vault.gcp-iam.credentials.location

 

Location of the OAuth2 credentials private key. <p> Since this is a Resource, the private key can be in a multitude of locations, such as a local file system, classpath, URL, etc.

spring.cloud.vault.gcp-iam.gcp-path

gcp

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.gcp-iam.jwt-validity

15m

Validity of the JWT token.

spring.cloud.vault.gcp-iam.project-id

 

Overrides the GCP project Id.

spring.cloud.vault.gcp-iam.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.gcp-iam.service-account-id

 

Overrides the GCP service account Id.

spring.cloud.vault.generic.application-name

application

Application name to be used for the context.

spring.cloud.vault.generic.backend

secret

Name of the default backend.

spring.cloud.vault.generic.default-context

application

Name of the default context.

spring.cloud.vault.generic.enabled

true

Enable the generic backend.

spring.cloud.vault.generic.profile-separator

/

Profile-separator to combine application name and profile.

spring.cloud.vault.host

localhost

Vault server host.

spring.cloud.vault.kubernetes.kubernetes-path

kubernetes

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.kubernetes.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.kubernetes.service-account-token-file

/var/run/secrets/kubernetes.io/serviceaccount/token

Path to the service account token file.

spring.cloud.vault.kv.application-name

application

Application name to be used for the context.

spring.cloud.vault.kv.backend

secret

Name of the default backend.

spring.cloud.vault.kv.backend-version

2

Key-Value backend version. Currently supported versions are: <ul> <li>Version 1 (unversioned key-value backend).</li> <li>Version 2 (versioned key-value backend).</li> </ul>

spring.cloud.vault.kv.default-context

application

Name of the default context.

spring.cloud.vault.kv.enabled

false

Enable the kev-value backend.

spring.cloud.vault.kv.profile-separator

/

Profile-separator to combine application name and profile.

spring.cloud.vault.mongodb.backend

mongodb

Cassandra backend path.

spring.cloud.vault.mongodb.enabled

false

Enable mongodb backend usage.

spring.cloud.vault.mongodb.password-property

spring.data.mongodb.password

Target property for the obtained password.

spring.cloud.vault.mongodb.role

 

Role name for credentials.

spring.cloud.vault.mongodb.username-property

spring.data.mongodb.username

Target property for the obtained username.

spring.cloud.vault.mysql.backend

mysql

mysql backend path.

spring.cloud.vault.mysql.enabled

false

Enable mysql backend usage.

spring.cloud.vault.mysql.password-property

spring.datasource.password

Target property for the obtained username.

spring.cloud.vault.mysql.role

 

Role name for credentials.

spring.cloud.vault.mysql.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.port

8200

Vault server port.

spring.cloud.vault.postgresql.backend

postgresql

postgresql backend path.

spring.cloud.vault.postgresql.enabled

false

Enable postgresql backend usage.

spring.cloud.vault.postgresql.password-property

spring.datasource.password

Target property for the obtained username.

spring.cloud.vault.postgresql.role

 

Role name for credentials.

spring.cloud.vault.postgresql.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.rabbitmq.backend

rabbitmq

rabbitmq backend path.

spring.cloud.vault.rabbitmq.enabled

false

Enable rabbitmq backend usage.

spring.cloud.vault.rabbitmq.password-property

spring.rabbitmq.password

Target property for the obtained password.

spring.cloud.vault.rabbitmq.role

 

Role name for credentials.

spring.cloud.vault.rabbitmq.username-property

spring.rabbitmq.username

Target property for the obtained username.

spring.cloud.vault.read-timeout

15000

Read timeout;

spring.cloud.vault.scheme

https

Protocol scheme. Can be either "http" or "https".

spring.cloud.vault.ssl.cert-auth-path

cert

Mount path of the TLS cert authentication backend.

spring.cloud.vault.ssl.key-store

 

Trust store that holds certificates and private keys.

spring.cloud.vault.ssl.key-store-password

 

Password used to access the key store.

spring.cloud.vault.ssl.trust-store

 

Trust store that holds SSL certificates.

spring.cloud.vault.ssl.trust-store-password

 

Password used to access the trust store.

spring.cloud.vault.token

 

Static vault token. Required if {@link #authentication} is {@code TOKEN}.

spring.cloud.vault.uri

 

Vault URI. Can be set with scheme, host and port.

spring.cloud.zookeeper.base-sleep-time-ms

50

Initial amount of time to wait between retries

spring.cloud.zookeeper.block-until-connected-unit

 

The unit of time related to blocking on connection to Zookeeper

spring.cloud.zookeeper.block-until-connected-wait

10

Wait time to block on connection to Zookeeper

spring.cloud.zookeeper.connect-string

localhost:2181

Connection string to the Zookeeper cluster

spring.cloud.zookeeper.default-health-endpoint

 

Default health endpoint that will be checked to verify that a dependency is alive

spring.cloud.zookeeper.dependencies

 

Mapping of alias to ZookeeperDependency. From Ribbon perspective the alias is actually serviceID since Ribbon can’t accept nested structures in serviceID

spring.cloud.zookeeper.dependency-configurations

 
 

spring.cloud.zookeeper.dependency-names

 
 

spring.cloud.zookeeper.discovery.enabled

true

 

spring.cloud.zookeeper.discovery.initial-status

 

The initial status of this instance (defaults to {@link StatusConstants#STATUS_UP}).

spring.cloud.zookeeper.discovery.instance-host

 

Predefined host with which a service can register itself in Zookeeper. Corresponds to the {code address} from the URI spec.

spring.cloud.zookeeper.discovery.instance-id

 

Id used to register with zookeeper. Defaults to a random UUID.

spring.cloud.zookeeper.discovery.instance-port

 

Port to register the service under (defaults to listening port)

spring.cloud.zookeeper.discovery.instance-ssl-port

 

Ssl port of the registered service.

spring.cloud.zookeeper.discovery.metadata

 

Gets the metadata name/value pairs associated with this instance. This information is sent to zookeeper and can be used by other instances.

spring.cloud.zookeeper.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.zookeeper.discovery.register

true

Register as a service in zookeeper.

spring.cloud.zookeeper.discovery.root

/services

Root Zookeeper folder in which all instances are registered

spring.cloud.zookeeper.discovery.uri-spec

{scheme}://{address}:{port}

The URI specification to resolve during service registration in Zookeeper

spring.cloud.zookeeper.enabled

true

Is Zookeeper enabled

spring.cloud.zookeeper.max-retries

10

Max number of times to retry

spring.cloud.zookeeper.max-sleep-ms

500

Max time in ms to sleep on each retry

spring.cloud.zookeeper.prefix

 

Common prefix that will be applied to all Zookeeper dependencies' paths

spring.integration.poller.fixed-delay

1000

Fixed delay for default poller.

spring.integration.poller.max-messages-per-poll

1

Maximum messages per poll for the default poller.

spring.sleuth.annotation.enabled

true

 

spring.sleuth.async.configurer.enabled

true

Enable default AsyncConfigurer.

spring.sleuth.async.enabled

true

Enable instrumenting async related components so that the tracing information is passed between threads.

spring.sleuth.async.ignored-beans

 

List of {@link java.util.concurrent.Executor} bean names that should be ignored and not wrapped in a trace representation.

spring.sleuth.baggage-keys

 

List of baggage key names that should be propagated out of process. These keys will be prefixed with baggage before the actual key. This property is set in order to be backward compatible with previous Sleuth versions. @see brave.propagation.ExtraFieldPropagation.FactoryBuilder#addPrefixedFields(String, java.util.Collection)

spring.sleuth.enabled

true

 

spring.sleuth.feign.enabled

true

Enable span information propagation when using Feign.

spring.sleuth.feign.processor.enabled

true

Enable post processor that wraps Feign Context in its tracing representations.

spring.sleuth.http.enabled

true

 

spring.sleuth.http.legacy.enabled

false

 

spring.sleuth.hystrix.strategy.enabled

true

Enable custom HystrixConcurrencyStrategy that wraps all Callable instances into their Sleuth representative - the TraceCallable.

spring.sleuth.integration.enabled

true

Enable Spring Integration sleuth instrumentation.

spring.sleuth.integration.patterns

[!hystrixStreamOutput*, *]

An array of patterns against which channel names will be matched. @see org.springframework.integration.config.GlobalChannelInterceptor#patterns(). Defaults to any channel name not matching the Hystrix Stream channel name.

spring.sleuth.integration.websockets.enabled

true

Enable tracing for WebSockets.

spring.sleuth.keys.http.headers

 

Additional headers that should be added as tags if they exist. If the header value is multi-valued, the tag value will be a comma-separated, single-quoted list.

spring.sleuth.keys.http.prefix

http.

Prefix for header names if they are added as tags.

spring.sleuth.log.slf4j.enabled

true

Enable a {@link Slf4jScopeDecorator} that prints tracing information in the logs.

spring.sleuth.log.slf4j.whitelisted-mdc-keys

 

A list of keys to be put from baggage to MDC.

spring.sleuth.messaging.enabled

false

Should messaging be turned on.

spring.sleuth.messaging.jms.enabled

false

 

spring.sleuth.messaging.jms.remote-service-name

jms

 

spring.sleuth.messaging.kafka.enabled

false

 

spring.sleuth.messaging.kafka.remote-service-name

kafka

 

spring.sleuth.messaging.rabbit.enabled

false

 

spring.sleuth.messaging.rabbit.remote-service-name

rabbitmq

 

spring.sleuth.opentracing.enabled

true

 

spring.sleuth.propagation-keys

 

List of fields that are referenced the same in-process as it is on the wire. For example, the name "x-vcap-request-id" would be set as-is including the prefix. <p> Note: {@code fieldName} will be implicitly lower-cased. @see brave.propagation.ExtraFieldPropagation.FactoryBuilder#addField(String)

spring.sleuth.reactor.enabled.enabled

true

When true enables instrumentation for reactor.

spring.sleuth.rxjava.schedulers.hook.enabled

true

Enable support for RxJava via RxJavaSchedulersHook.

spring.sleuth.rxjava.schedulers.ignoredthreads

[HystrixMetricPoller, ^RxComputation.*$]

Thread names for which spans will not be sampled.

spring.sleuth.sampler.probability

0.1

Probability of requests that should be sampled. E.g. 1.0 - 100% requests should be sampled. The precision is whole-numbers only (i.e. there’s no support for 0.1% of the traces).

spring.sleuth.scheduled.enabled

true

Enable tracing for {@link org.springframework.scheduling.annotation.Scheduled}.

spring.sleuth.scheduled.skip-pattern

org.springframework.cloud.netflix.hystrix.stream.HystrixStreamTask

Pattern for the fully qualified name of a class that should be skipped.

spring.sleuth.supports-join

true

True means the tracing system supports sharing a span ID between a client and server.

spring.sleuth.trace-id128

false

When true, generate 128-bit trace IDs instead of 64-bit ones.

spring.sleuth.web.additional-skip-pattern

 

Additional pattern for URLs that should be skipped in tracing. This will be appended to the {@link SleuthWebProperties#skipPattern}.

spring.sleuth.web.client.enabled

true

Enable interceptor injecting into {@link org.springframework.web.client.RestTemplate}.

spring.sleuth.web.client.skip-pattern

 

Pattern for URLs that should be skipped in client side tracing.

spring.sleuth.web.enabled

true

When true enables instrumentation for web applications.

spring.sleuth.web.exception-throwing-filter-enabled

true

Flag to toggle the presence of a filter that logs thrown exceptions.

spring.sleuth.web.filter-order

 

Order in which the tracing filters should be registered. Defaults to {@link TraceHttpAutoConfiguration#TRACING_FILTER_ORDER}.

spring.sleuth.web.skip-pattern

/api-docs.*

/autoconfig

/configprops

/dump

/health

/info

/metrics.*

/mappings

/trace

/swagger.*

.*\.png

.*\.css

.*\.js

.*\.html

/favicon.ico

/hystrix.stream

/application/.*

/actuator.*

/cloudfoundryapplication

Pattern for URLs that should be skipped in tracing.

spring.sleuth.zuul.enabled

true

Enable span information propagation when using Zuul.

spring.zipkin.base-url

http://localhost:9411/

URL of the zipkin query server instance. You can also provide the service id of the Zipkin server if Zipkin’s registered in service discovery (e.g. http://zipkinserver/)

spring.zipkin.compression.enabled

false

 

spring.zipkin.discovery-client-enabled

 

If set to {@code false}, will treat the {@link ZipkinProperties#baseUrl} as a URL always

spring.zipkin.enabled

true

Enables sending spans to Zipkin

spring.zipkin.encoder

 

Encoding type of spans sent to Zipkin. Set to {@link SpanBytesEncoder#JSON_V1} if your server is not recent.

spring.zipkin.locator.discovery.enabled

false

Enabling of locating the host name via service discovery

spring.zipkin.message-timeout

1

Timeout in seconds before pending spans will be sent in batches to Zipkin

spring.zipkin.sender.type

 

Means of sending spans to Zipkin

spring.zipkin.service.name

 

The name of the service, from which the Span was sent via HTTP, that should appear in Zipkin

stubrunner.amqp.enabled

false

Whether to enable support for Stub Runner and AMQP.

stubrunner.amqp.mockCOnnection

true

Whether to enable support for Stub Runner and AMQP mocked connection factory.

stubrunner.classifier

stubs

The classifier to use by default in ivy co-ordinates for a stub.

stubrunner.cloud.consul.enabled

true

Whether to enable stubs registration in Consul.

stubrunner.cloud.delegate.enabled

true

Whether to enable DiscoveryClient’s Stub Runner implementation.

stubrunner.cloud.enabled

true

Whether to enable Spring Cloud support for Stub Runner.

stubrunner.cloud.eureka.enabled

true

Whether to enable stubs registration in Eureka.

stubrunner.cloud.ribbon.enabled

true

Whether to enable Stub Runner’s Ribbon integration.

stubrunner.cloud.stubbed.discovery.enabled

true

Whether Service Discovery should be stubbed for Stub Runner. If set to false, stubs will get registered in real service discovery.

stubrunner.cloud.zookeeper.enabled

true

Whether to enable stubs registration in Zookeeper.

stubrunner.consumer-name

 

You can override the default {@code spring.application.name} of this field by setting a value to this parameter.

stubrunner.delete-stubs-after-test

true

If set to {@code false} will NOT delete stubs from a temporary folder after running tests

stubrunner.ids

[]

The ids of the stubs to run in "ivy" notation ([groupId]:artifactId:[version]:[classifier][:port]). {@code groupId}, {@code classifier}, {@code version} and {@code port} can be optional.

stubrunner.ids-to-service-ids

 

Mapping of Ivy notation based ids to serviceIds inside your application Example "a:b" → "myService" "artifactId" → "myOtherService"

stubrunner.integration.enabled

true

Whether to enable Stub Runner integration with Spring Integration.

stubrunner.mappings-output-folder

 

Dumps the mappings of each HTTP server to the selected folder

stubrunner.max-port

15000

Max value of a port for the automatically started WireMock server

stubrunner.min-port

10000

Min value of a port for the automatically started WireMock server

stubrunner.password

 

Repository password

stubrunner.properties

 

Map of properties that can be passed to custom {@link org.springframework.cloud.contract.stubrunner.StubDownloaderBuilder}

stubrunner.proxy-host

 

Repository proxy host

stubrunner.proxy-port

 

Repository proxy port

stubrunner.stream.enabled

true

Whether to enable Stub Runner integration with Spring Cloud Stream.

stubrunner.stubs-mode

 

Pick where the stubs should come from

stubrunner.stubs-per-consumer

false

Should only stubs for this particular consumer get registered in HTTP server stub.

stubrunner.username

 

Repository username

wiremock.rest-template-ssl-enabled

false

 

wiremock.server.files

 
 

wiremock.server.https-port

-1

 

wiremock.server.port

8080

 

wiremock.server.stubs

 
\ No newline at end of file +}

Part XVII. Spring Cloud Kubernetes

133. Why do you need Spring Cloud Kubernetes?

Spring Cloud Kubernetes provide Spring Cloud common interfaces implementations to consume Kubernetes native services. +The main objective of the projects provided in this repository is to facilitate the integration of Spring Cloud/Spring Boot applications running inside Kubernetes.

Part XVIII. DiscoveryClient for Kubernetes

This project provides an implementation of Discovery Client +for Kubernetes. +This allows you to query Kubernetes endpoints (see services) by name. +A service is typically exposed by the Kubernetes API server as a collection of endpoints which represent http, https addresses that a client can +access from a Spring Boot application running as a pod. This discovery feature is also used by the Spring Cloud Kubernetes Ribbon project +to fetch the list of the endpoints defined for an application to be load balanced.

This is something that you get for free just by adding the following dependency inside your project:

<dependency>
+    <groupId>org.springframework.cloud</groupId>
+    <artifactId>spring-cloud-starter-kubernetes</artifactId>
+    <version>${latest.version}</version>
+</dependency>

To enable loading of the DiscoveryClient, add @EnableDiscoveryClient to the according configuration or application class like this:

@SpringBootApplication
+@EnableDiscoveryClient
+public class Application {
+  public static void main(String[] args) {
+    SpringApplication.run(Application.class, args);
+  }
+}

Then you can inject the client in your code simply by:

@Autowired
+private DiscoveryClient discoveryClient;

If for any reason you need to disable the DiscoveryClient you can simply set the following property in application.properties:

spring.cloud.kubernetes.discovery.enabled=false

Some Spring Cloud components use the DiscoveryClient in order to obtain info about the local service instance. For +this to work you need to align the Kubernetes service name with the spring.application.name property.

Part XIX. Kubernetes PropertySource implementations

The most common approach to configure your Spring Boot application is to create an application.properties|yaml or +an application-profile.properties|yaml file containing key-value pairs providing customization values to your +application or Spring Boot starters. Users may override these properties by specifying system properties or environment +variables.

134. ConfigMap PropertySource

Kubernetes provides a resource named ConfigMap to externalize the +parameters to pass to your application in the form of key-value pairs or embedded application.properties|yaml files. +The Spring Cloud Kubernetes Config project makes Kubernetes `ConfigMap`s available +during application bootstrapping and triggers hot reloading of beans or Spring context when changes are detected on +observed `ConfigMap`s.

The default behavior is to create a ConfigMapPropertySource based on a Kubernetes ConfigMap which has metadata.name of either the name of +your Spring application (as defined by its spring.application.name property) or a custom name defined within the +bootstrap.properties file under the following key spring.cloud.kubernetes.config.name.

However, more advanced configuration are possible where multiple ConfigMaps can be used +This is made possible by the spring.cloud.kubernetes.config.sources list. +For example one could define the following ConfigMaps

spring:
+  application:
+    name: cloud-k8s-app
+  cloud:
+    kubernetes:
+      config:
+        name: default-name
+        namespace: default-namespace
+        sources:
+         # Spring Cloud Kubernetes will lookup a ConfigMap named c1 in namespace default-namespace
+         - name: c1
+         # Spring Cloud Kubernetes will lookup a ConfigMap named default-name in whatever namespace n2
+         - namespace: n2
+         # Spring Cloud Kubernetes will lookup a ConfigMap named c3 in namespace n3
+         - namespace: n3
+           name: c3

In the example above, it spring.cloud.kubernetes.config.namespace had not been set, +then the ConfigMap named c1 would be looked up in the namespace that the application runs

Any matching ConfigMap that is found, will be processed as follows:

  • apply individual configuration properties.
  • apply as yaml the content of any property named application.yaml
  • apply as properties file the content of any property named application.properties

The single exception to the aforementioned flow is when the ConfigMap contains a single key that indicates +the file is a YAML or Properties file. In that case the name of the key does NOT have to be application.yaml or +application.properties (it can be anything) and the value of the property will be treated correctly. +This features facilitates the use case where the ConfigMap was created using something like:

kubectl create configmap game-config --from-file=/path/to/app-config.yaml

Example:

Let’s assume that we have a Spring Boot application named demo that uses properties to read its thread pool +configuration.

  • pool.size.core
  • pool.size.maximum

This can be externalized to config map in yaml format:

kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: demo
+data:
+  pool.size.core: 1
+  pool.size.max: 16

Individual properties work fine for most cases but sometimes embedded yaml is more convenient. In this case we will +use a single property named application.yaml to embed our yaml:

 ```yaml
+kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: demo
+data:
+  application.yaml: |-
+    pool:
+      size:
+        core: 1
+        max:16
The following also works:
+
+ ```yaml
+kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: demo
+data:
+  custom-name.yaml: |-
+    pool:
+      size:
+        core: 1
+        max:16

Spring Boot applications can also be configured differently depending on active profiles which will be merged together +when the ConfigMap is read. It is possible to provide different property values for different profiles using an +application.properties|yaml property, specifying profile-specific values each in their own document +(indicated by the --- sequence) as follows:

kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: demo
+data:
+  application.yml: |-
+    greeting:
+      message: Say Hello to the World
+    farewell:
+      message: Say Goodbye
+    ---
+    spring:
+      profiles: development
+    greeting:
+      message: Say Hello to the Developers
+    farewell:
+      message: Say Goodbye to the Developers
+    ---
+    spring:
+      profiles: production
+    greeting:
+      message: Say Hello to the Ops

In the above case, the configuration loaded into your Spring Application with the development profile will be:

  greeting:
+    message: Say Hello to the Developers
+  farewell:
+    message: Say Goodbye to the Developers

whereas if the production profile is active, the configuration will be:

  greeting:
+    message: Say Hello to the Ops
+  farewell:
+    message: Say Goodbye

If both profiles are active, the property which appears last within the configmap will overwrite preceding values.

To tell to Spring Boot which profile should be enabled at bootstrap, a system property can be passed to the Java +command launching your Spring Boot application using an env variable that you will define with the OpenShift +DeploymentConfig or Kubernetes ReplicationConfig resource file as follows:

apiVersion: v1
+kind: DeploymentConfig
+spec:
+  replicas: 1
+  ...
+    spec:
+      containers:
+      - env:
+        - name: JAVA_APP_DIR
+          value: /deployments
+        - name: JAVA_OPTIONS
+          value: -Dspring.profiles.active=developer

Notes: +- check the security configuration section, to access config maps from inside a pod you need to have the correct +Kubernetes service accounts, roles and role bindings.

Table 134.1. Properties:

NameTypeDefaultDescription

spring.cloud.kubernetes.config.enableApi

Boolean

true

Enable/Disable consuming ConfigMaps via APIs

spring.cloud.kubernetes.config.enabled

Boolean

true

Enable Secrets PropertySource

spring.cloud.kubernetes.config.name

String

${spring.application.name}

Sets the name of ConfigMap to lookup

spring.cloud.kubernetes.config.namespace

String

Client namespace

Sets the Kubernetes namespace where to lookup

spring.cloud.kubernetes.config.paths

List

null

Sets the paths where ConfigMaps are mounted


135. Secrets PropertySource

Kubernetes has the notion of [Secrets](https://kubernetes.io/docs/concepts/configuration/secret/) for storing +sensitive data such as password, OAuth tokens, etc. This project provides integration with Secrets to make secrets +accessible by Spring Boot applications. This feature can be explicitly enabled/disabled using the spring.cloud.kubernetes.secrets.enabled property.

The SecretsPropertySource when enabled will lookup Kubernetes for Secrets from the following sources: +1. reading recursively from secrets mounts +2. named after the application (as defined by spring.application.name) +3. matching some labels

Please note that by default, consuming Secrets via API (points 2 and 3 above) is not enabled for security reasons + and it is recommend that containers share secrets via mounted volumes.

If the secrets are found their data is made available to the application.

Example:

Let’s assume that we have a spring boot application named demo that uses properties to read its database +configuration. We can create a Kubernetes secret using the following command:

oc create secret generic db-secret --from-literal=username=user --from-literal=password=p455w0rd

This would create the following secret (shown using oc get secrets db-secret -o yaml):

apiVersion: v1
+data:
+  password: cDQ1NXcwcmQ=
+  username: dXNlcg==
+kind: Secret
+metadata:
+  creationTimestamp: 2017-07-04T09:15:57Z
+  name: db-secret
+  namespace: default
+  resourceVersion: "357496"
+  selfLink: /api/v1/namespaces/default/secrets/db-secret
+  uid: 63c89263-6099-11e7-b3da-76d6186905a8
+type: Opaque

Note that the data contains Base64-encoded versions of the literal provided by the create command.

This secret can then be used by your application for example by exporting the secret’s value as environment variables:

apiVersion: v1
+kind: Deployment
+metadata:
+  name: ${project.artifactId}
+spec:
+   template:
+     spec:
+       containers:
+         - env:
+            - name: DB_USERNAME
+              valueFrom:
+                 secretKeyRef:
+                   name: db-secret
+                   key: username
+            - name: DB_PASSWORD
+              valueFrom:
+                 secretKeyRef:
+                   name: db-secret
+                   key: password

You can select the Secrets to consume in a number of ways:

  1. By listing the directories where secrets are mapped: +` +-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets/db-secret,etc/secrets/postgresql +`

    If you have all the secrets mapped to a common root, you can set them like:
    ```
    +-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets
    +```
  2. By setting a named secret: +` +-Dspring.cloud.kubernetes.secrets.name=db-secret +`
  3. By defining a list of labels: +` +-Dspring.cloud.kubernetes.secrets.labels.broker=activemq +-Dspring.cloud.kubernetes.secrets.labels.db=postgresql +`

Table 135.1. Properties:

NameTypeDefaultDescription

spring.cloud.kubernetes.secrets.enableApi

Boolean

false

Enable/Disable consuming secrets via APIs (examples 2 and 3)

spring.cloud.kubernetes.secrets.enabled

Boolean

true

Enable Secrets PropertySource

spring.cloud.kubernetes.secrets.name

String

${spring.application.name}

Sets the name of the secret to lookup

spring.cloud.kubernetes.secrets.namespace

String

Client namespace

Sets the Kubernetes namespace where to lookup

spring.cloud.kubernetes.secrets.labels

Map

null

Sets the labels used to lookup secrets

spring.cloud.kubernetes.secrets.paths

List

null

Sets the paths where secrets are mounted (example 1)


Notes: +- The property spring.cloud.kubernetes.secrets.labels behaves as defined by +Map-based binding. +- The property spring.cloud.kubernetes.secrets.paths behaves as defined by +Collection-based binding. +- Access to secrets via API may be restricted for security reasons, the preferred way is to mount secret to the POD.

Example of application using secrets (though it hasn’t been updated to use the new spring-cloud-kubernetes project): +spring-boot-camel-config

136. PropertySource Reload

Some applications may need to detect changes on external property sources and update their internal status to reflect the new configuration. +The reload feature of Spring Cloud Kubernetes is able to trigger an application reload when a related ConfigMap or +Secret changes.

This feature is disabled by default and can be enabled using the configuration property spring.cloud.kubernetes.reload.enabled=true + (eg. in the application.properties file).

The following levels of reload are supported (property spring.cloud.kubernetes.reload.strategy): +- refresh (default): only configuration beans annotated with @ConfigurationProperties or @RefreshScope are reloaded. +This reload level leverages the refresh feature of Spring Cloud Context. +- restart_context: the whole Spring ApplicationContext is gracefully restarted. Beans are recreated with the new configuration. +- shutdown: the Spring ApplicationContext is shut down to activate a restart of the container. + When using this level, make sure that the lifecycle of all non-daemon threads is bound to the ApplicationContext + and that a replication controller or replica set is configured to restart the pod.

Example:

Assuming that the reload feature is enabled with default settings (refresh mode), the following bean will be refreshed when the config map changes:

@Configuration
+@ConfigurationProperties(prefix = "bean")
+public class MyConfig {
+
+    private String message = "a message that can be changed live";
+
+    // getter and setters
+
+}

A way to see that changes effectively happen is creating another bean that prints the message periodically.

@Component
+public class MyBean {
+
+    @Autowired
+    private MyConfig config;
+
+    @Scheduled(fixedDelay = 5000)
+    public void hello() {
+        System.out.println("The message is: " + config.getMessage());
+    }
+}

The message printed by the application can be changed using a ConfigMap as follows:

apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: reload-example
+data:
+  application.properties: |-
+    bean.message=Hello World!

Any change to the property named bean.message in the ConfigMap associated to the pod will be reflected in the +output. More generally speaking, changes associated to properties prefixed with the value defined by the prefix +field of the @ConfigurationProperties annotation will be detected and reflected in the application. +[Associating a ConfigMap to a pod](#configmap-propertysource) is explained above.

The full example is available in [spring-cloud-kubernetes-reload-example](spring-cloud-kubernetes-examples/kubernetes-reload-example).

The reload feature supports two operating modes: +- event (default): watches for changes in config maps or secrets using the Kubernetes API (web socket). +Any event will produce a re-check on the configuration and a reload in case of changes. +The view role on the service account is required in order to listen for config map changes. A higher level role (eg. edit) is required for secrets +(secrets are not monitored by default). +- polling: re-creates the configuration periodically from config maps and secrets to see if it has changed. +The polling period can be configured using the property spring.cloud.kubernetes.reload.period and defaults to 15 seconds. +It requires the same role as the monitored property source. +This means, for example, that using polling on file mounted secret sources does not require particular privileges.

Table 136.1. Properties:

NameTypeDefaultDescription

spring.cloud.kubernetes.reload.period

Long

15000

The period in milliseconds for verifying changes when using the polling strategy

spring.cloud.kubernetes.reload.enabled

Boolean

false

Enables monitoring of property sources and configuration reload

spring.cloud.kubernetes.reload.monitoring-config-maps

Boolean

true

Allow monitoring changes in config maps

spring.cloud.kubernetes.reload.monitoring-secrets

Boolean

false

Allow monitoring changes in secrets

spring.cloud.kubernetes.reload.strategy

Enum

refresh

The strategy to use when firing a reload (refresh, restart_context, shutdown)

spring.cloud.kubernetes.reload.mode

Enum

event

Specifies how to listen for changes in property sources (event, polling)


Notes: +- Properties under spring.cloud.kubernetes.reload. should not be used in config maps or secrets: changing such properties at runtime may lead to unexpected results; +- Deleting a property or the whole config map does not restore the original state of the beans when using the refresh level.

Part XX. Ribbon discovery in Kubernetes

Spring Cloud client applications calling a microservice should be interested on relying on a client load-balancing +feature in order to automatically discover at which endpoint(s) it can reach a given service. This mechanism has been +implemented within the [spring-cloud-kubernetes-ribbon](spring-cloud-kubernetes-ribbon/pom.xml) project where a +Kubernetes client will populate a Ribbon ServerList containing information +about such endpoints.

The implementation is part of the following starter that you can use by adding its dependency to your pom file:

<dependency>
+    <groupId>org.springframework.cloud</groupId>
+    <artifactId>spring-cloud-starter-kubernetes-netflix</artifactId>
+    <version>${latest.version}</version>
+</dependency>

When the list of the endpoints is populated, the Kubernetes client will search the registered endpoints living in +the current namespace/project matching the service name defined using the Ribbon Client annotation:

@RibbonClient(name = "name-service")

You can configure Ribbon’s behavior by providing properties in your application.properties (via your application’s +dedicated ConfigMap) using the following format: <name of your service>.ribbon.<Ribbon configuration key> where:

  • <name of your service> corresponds to the service name you’re accessing over Ribbon, as configured using the +@RibbonClient annotation (e.g. name-service in the example above)
  • <Ribbon configuration key> is one of the Ribbon configuration key defined by +Ribbon’s CommonClientConfigKey class

Additionally, the spring-cloud-kubernetes-ribbon project defines two additional configuration keys to further +control how Ribbon interacts with Kubernetes. In particular, if an endpoint defines multiple ports, the default +behavior is to use the first one found. To select more specifically which port to use, in a multi-port service, use +the PortName key. If you want to specify in which Kubernetes' namespace the target service should be looked up, use +the KubernetesNamespace key, remembering in both instances to prefix these keys with your service name and +ribbon prefix as specified above.

Examples that are using this module for ribbon discovery are:

Note: The Ribbon discovery client can be disabled by setting this key within the application properties file +spring.cloud.kubernetes.ribbon.enabled=false.

Part XXI. Kubernetes Awareness

All of the features described above will work equally well regardless of whether your application is running inside +Kubernetes or not. This is really helpful for development and troubleshooting. +From a development point of view, this is really helpful as you can start your Spring Boot application and debug one +of the modules part of this project. It is not required to deploy it in Kubernetes +as the code of the project relies on the +[Fabric8 Kubernetes Java client](https://github.com/fabric8io/kubernetes-client) which is a fluent DSL able to +communicate using http protocol to the REST API of Kubernetes Server.

137. Kubernetes Profile Autoconfiguration

When the application runs as a pod inside Kubernetes a Spring profile named kubernetes will automatically get activated. +This allows the developer to customize the configuration, to define beans that will be applied when the Spring Boot application is deployed +within the Kubernetes platform (e.g. different dev and prod configuration).

Part XXII. Pod Health Indicator

Spring Boot uses HealthIndicator to expose info about the health of an application. +That makes it really useful for exposing health related information to the user and are also a good fit for use as readiness probes.

The Kubernetes health indicator which is part of the core module exposes the following info:

  • pod name, ip address, namespace, service account, node name and its ip address
  • flag that indicates if the Spring Boot application is internal or external to Kubernetes

Part XXIII. Leader Election

<TBD>

Part XXIV. Security Configurations inside Kubernetes

138. Namespace

Most of the components provided in this project need to know the namespace. For Kubernetes (1.3+) the namespace is made available to pod as part of the service account secret and automatically detected by the client. +For earlier version it needs to be specified as an env var to the pod. A quick way to do this is:

env:
+- name: "KUBERNETES_NAMESPACE"
+  valueFrom:
+    fieldRef:
+      fieldPath: "metadata.namespace"

139. Service Account

For distros of Kubernetes that support more fine-grained role-based access within the cluster, you need to make sure a pod that runs with spring-cloud-kubernetes has access to the Kubernetes API. +For any service accounts you assign to a deployment/pod, you need to make sure it has the correct roles. For example, you can add cluster-reader permissions to your default service account depending on the project you’re in:

Part XXV. Examples

List of examples using these projects:

<TBD>

Part XXVI. Other Resources

140. Building

140.1 Basic Compile and Test

To build the source you will need to install JDK 1.7.

Spring Cloud uses Maven for most build-related activities, and you +should be able to get off the ground quite quickly by cloning the +project you are interested in and typing

$ ./mvnw install
[Note]Note

You can also install Maven (>=3.3.3) yourself and run the mvn command +in place of ./mvnw in the examples below. If you do that you also +might need to add -P spring if your local Maven settings do not +contain repository declarations for spring pre-release artifacts.

[Note]Note

Be aware that you might need to increase the amount of memory +available to Maven by setting a MAVEN_OPTS environment variable with +a value like -Xmx512m -XX:MaxPermSize=128m. We try to cover this in +the .mvn configuration, so if you find you have to do it to make a +build succeed, please raise a ticket to get the settings added to +source control.

For hints on how to build the project look in .travis.yml if there +is one. There should be a "script" and maybe "install" command. Also +look at the "services" section to see if any services need to be +running locally (e.g. mongo or rabbit). Ignore the git-related bits +that you might find in "before_install" since they’re related to setting git +credentials and you already have those.

The projects that require middleware generally include a +docker-compose.yml, so consider using +Docker Compose to run the middeware servers +in Docker containers. See the README in the +scripts demo +repository for specific instructions about the common cases of mongo, +rabbit and redis.

[Note]Note

If all else fails, build with the command from .travis.yml (usually +./mvnw install).

140.2 Documentation

The spring-cloud-build module has a "docs" profile, and if you switch +that on it will try to build asciidoc sources from +src/main/asciidoc. As part of that process it will look for a +README.adoc and process it by loading all the includes, but not +parsing or rendering it, just copying it to ${main.basedir} +(defaults to $../../../.., i.e. the root of the project). If there are +any changes in the README it will then show up after a Maven build as +a modified file in the correct place. Just commit it and push the change.

140.3 Working with the code

If you don’t have an IDE preference we would recommend that you use +Spring Tools Suite or +Eclipse when working with the code. We use the +m2eclipse eclipse plugin for maven support. Other IDEs and tools +should also work without issue as long as they use Maven 3.3.3 or better.

140.3.1 Importing into eclipse with m2eclipse

We recommend the m2eclipse eclipse plugin when working with +eclipse. If you don’t already have m2eclipse installed it is available from the "eclipse +marketplace".

[Note]Note

Older versions of m2e do not support Maven 3.3, so once the +projects are imported into Eclipse you will also need to tell +m2eclipse to use the right profile for the projects. If you +see many different errors related to the POMs in the projects, check +that you have an up to date installation. If you can’t upgrade m2e, +add the "spring" profile to your settings.xml. Alternatively you can +copy the repository settings from the "spring" profile of the parent +pom into your settings.xml.

140.3.2 Importing into eclipse without m2eclipse

If you prefer not to use m2eclipse you can generate eclipse project metadata using the +following command:

$ ./mvnw eclipse:eclipse

The generated eclipse projects can be imported by selecting import existing projects +from the file menu.

141. Contributing

Spring Cloud is released under the non-restrictive Apache 2.0 license, +and follows a very standard Github development process, using Github +tracker for issues and merging pull requests into master. If you want +to contribute even something trivial please do not hesitate, but +follow the guidelines below.

141.1 Sign the Contributor License Agreement

Before we accept a non-trivial patch or pull request we will need you to sign the +Contributor License Agreement. +Signing the contributor’s agreement does not grant anyone commit rights to the main +repository, but it does mean that we can accept your contributions, and you will get an +author credit if we do. Active contributors might be asked to join the core team, and +given the ability to merge pull requests.

141.2 Code of Conduct

This project adheres to the Contributor Covenant code of +conduct. By participating, you are expected to uphold this code. Please report +unacceptable behavior to spring-code-of-conduct@pivotal.io.

141.3 Code Conventions and Housekeeping

None of these is essential for a pull request, but they will all help. They can also be +added after the original pull request but before a merge.

  • Use the Spring Framework code format conventions. If you use Eclipse +you can import formatter settings using the +eclipse-code-formatter.xml file from the +Spring +Cloud Build project. If using IntelliJ, you can use the +Eclipse Code Formatter +Plugin to import the same file.
  • Make sure all new .java files to have a simple Javadoc class comment with at least an +@author tag identifying you, and preferably at least a paragraph on what the class is +for.
  • Add the ASF license header comment to all new .java files (copy from existing files +in the project)
  • Add yourself as an @author to the .java files that you modify substantially (more +than cosmetic changes).
  • Add some Javadocs and, if you change the namespace, some XSD doc elements.
  • A few unit tests would help a lot as well — someone has to do it.
  • If no-one else is using your branch, please rebase it against the current master (or +other target branch in the main project).
  • When writing a commit message please follow these conventions, +if you are fixing an existing issue please add Fixes gh-XXXX at the end of the commit +message (where XXXX is the issue number).

Part XXVII. Appendix: Compendium of Configuration Properties

Name

Default

Description

aws.paramstore.default-context

application

 

aws.paramstore.enabled

true

Is AWS Parameter Store support enabled.

aws.paramstore.fail-fast

true

Throw exceptions during config lookup if true, otherwise, log warnings.

aws.paramstore.name

 

Alternative to spring.application.name to use in looking up values in AWS Parameter Store.

aws.paramstore.prefix

/config

Prefix indicating first level for every property. Value must start with a forward slash followed by a valid path segment or be empty. Defaults to "/config".

aws.paramstore.profile-separator

_

 

encrypt.fail-on-error

true

Flag to say that a process should fail if there is an encryption or decryption error.

encrypt.key

 

A symmetric key. As a stronger alternative, consider using a keystore.

encrypt.key-store.alias

 

Alias for a key in the store.

encrypt.key-store.location

 

Location of the key store file, e.g. classpath:/keystore.jks.

encrypt.key-store.password

 

Password that locks the keystore.

encrypt.key-store.secret

 

Secret protecting the key (defaults to the same as the password).

encrypt.rsa.algorithm

 

The RSA algorithm to use (DEFAULT or OEAP). Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.rsa.salt

deadbeef

Salt for the random secret used to encrypt cipher text. Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.rsa.strong

false

Flag to indicate that "strong" AES encryption should be used internally. If true, then the GCM algorithm is applied to the AES encrypted bytes. Default is false (in which case "standard" CBC is used instead). Once it is set, do not change it (or existing ciphers will not be decryptable).

encrypt.salt

deadbeef

A salt for the symmetric key, in the form of a hex-encoded byte array. As a stronger alternative, consider using a keystore.

endpoints.zookeeper.enabled

true

Enable the /zookeeper endpoint to inspect the state of zookeeper.

eureka.client.healthcheck.enabled

true

Enables the Eureka health check handler.

health.config.enabled

false

Flag to indicate that the config server health indicator should be installed.

health.config.time-to-live

0

Time to live for cached result, in milliseconds. Default 300000 (5 min).

hystrix.metrics.enabled

true

Enable Hystrix metrics polling. Defaults to true.

hystrix.metrics.polling-interval-ms

2000

Interval between subsequent polling of metrics. Defaults to 2000 ms.

hystrix.shareSecurityContext

false

Enables auto-configuration of the Hystrix concurrency strategy plugin hook who will transfer the SecurityContext from your main thread to the one used by the Hystrix command.

management.endpoint.bindings.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.bindings.enabled

true

Whether to enable the bindings endpoint.

management.endpoint.bus-env.enabled

true

Whether to enable the bus-env endpoint.

management.endpoint.bus-refresh.enabled

true

Whether to enable the bus-refresh endpoint.

management.endpoint.channels.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.channels.enabled

true

Whether to enable the channels endpoint.

management.endpoint.consul.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.consul.enabled

true

Whether to enable the consul endpoint.

management.endpoint.env.post.enabled

true

Enable changing the Environment through a POST to /env.

management.endpoint.features.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.features.enabled

true

Whether to enable the features endpoint.

management.endpoint.gateway.enabled

true

Whether to enable the gateway endpoint.

management.endpoint.hystrix.config

 

Hystrix settings. These are traditionally set using servlet parameters. Refer to the documentation of Hystrix for more details.

management.endpoint.hystrix.stream.enabled

true

Whether to enable the hystrix.stream endpoint.

management.endpoint.pause.enabled

true

Enable the /pause endpoint (to send Lifecycle.stop()).

management.endpoint.refresh.enabled

true

Enable the /refresh endpoint to refresh configuration and re-initialize refresh scoped beans.

management.endpoint.restart.enabled

true

Enable the /restart endpoint to restart the application context.

management.endpoint.resume.enabled

true

Enable the /resume endpoint (to send Lifecycle.start()).

management.endpoint.service-registry.cache.time-to-live

0ms

Maximum time that a response can be cached.

management.endpoint.service-registry.enabled

true

Whether to enable the service-registry endpoint.

management.health.refresh.enabled

true

Enable the health endpoint for the refresh scope.

management.health.zookeeper.enabled

true

Enable the health endpoint for zookeeper.

management.metrics.binders.hystrix.enabled

true

Enables creation of OK Http Client factory beans.

maven.checksum-policy

  

maven.connect-timeout

  

maven.local-repository

  

maven.offline

  

maven.proxy

  

maven.remote-repositories

  

maven.request-timeout

  

maven.resolve-pom

  

maven.update-policy

  

proxy.auth.load-balanced

false

 

proxy.auth.routes

 

Authentication strategy per route.

ribbon.eager-load.clients

  

ribbon.eager-load.enabled

false

 

ribbon.http.client.enabled

false

Deprecated property to enable Ribbon RestClient.

ribbon.okhttp.enabled

false

Enables the use of the OK HTTP Client with Ribbon.

ribbon.restclient.enabled

false

Enables the use of the deprecated Ribbon RestClient.

ribbon.secure-ports

  

spring.cloud.bus.ack.destination-service

 

Service that wants to listen to acks. By default null (meaning all services).

spring.cloud.bus.ack.enabled

true

Flag to switch off acks (default on).

spring.cloud.bus.destination

springCloudBus

Name of Spring Cloud Stream destination for messages.

spring.cloud.bus.enabled

true

Flag to indicate that the bus is enabled.

spring.cloud.bus.env.enabled

true

Flag to switch off environment change events (default on).

spring.cloud.bus.id

application

The identifier for this application instance.

spring.cloud.bus.refresh.enabled

true

Flag to switch off refresh events (default on).

spring.cloud.bus.trace.enabled

false

Flag to switch on tracing of acks (default off).

spring.cloud.cloudfoundry.discovery.default-server-port

80

Port to use when no port is defined by ribbon.

spring.cloud.cloudfoundry.discovery.enabled

true

Flag to indicate that discovery is enabled.

spring.cloud.cloudfoundry.discovery.heartbeat-frequency

5000

Frequency in milliseconds of poll for heart beat. The client will poll on this frequency and broadcast a list of service ids.

spring.cloud.cloudfoundry.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.cloudfoundry.org

 

Organization name to initially target.

spring.cloud.cloudfoundry.password

 

Password for user to authenticate and obtain token.

spring.cloud.cloudfoundry.skip-ssl-validation

false

 

spring.cloud.cloudfoundry.space

 

Space name to initially target.

spring.cloud.cloudfoundry.url

 

URL of Cloud Foundry API (Cloud Controller).

spring.cloud.cloudfoundry.username

 

Username to authenticate (usually an email address).

spring.cloud.compatibility-verifier.compatible-boot-versions

2.1.x

Default accepted versions for the Spring Boot dependency. You can set {@code x} for the patch version if you don’t want to specify a concrete value. Example: {@code 3.4.x}

spring.cloud.compatibility-verifier.enabled

false

Enables creation of Spring Cloud compatibility verification.

spring.cloud.config.allow-override

true

Flag to indicate that {@link #isOverrideSystemProperties() systemPropertiesOverride} can be used. Set to false to prevent users from changing the default accidentally. Default true.

spring.cloud.config.discovery.enabled

false

Flag to indicate that config server discovery is enabled (config server URL will be looked up via discovery).

spring.cloud.config.discovery.service-id

configserver

Service id to locate config server.

spring.cloud.config.enabled

true

Flag to say that remote configuration is enabled. Default true;

spring.cloud.config.fail-fast

false

Flag to indicate that failure to connect to the server is fatal (default false).

spring.cloud.config.headers

 

Additional headers used to create the client request.

spring.cloud.config.label

 

The label name to use to pull remote configuration properties. The default is set on the server (generally "master" for a git based server).

spring.cloud.config.name

 

Name of application used to fetch remote properties.

spring.cloud.config.override-none

false

Flag to indicate that when {@link #setAllowOverride(boolean) allowOverride} is true, external properties should take lowest priority and should not override any existing property sources (including local config files). Default false.

spring.cloud.config.override-system-properties

true

Flag to indicate that the external properties should override system properties. Default true.

spring.cloud.config.password

 

The password to use (HTTP Basic) when contacting the remote server.

spring.cloud.config.profile

default

The default profile to use when fetching remote configuration (comma-separated). Default is "default".

spring.cloud.config.request-read-timeout

0

timeout on waiting to read data from the Config Server.

spring.cloud.config.retry.initial-interval

1000

Initial retry interval in milliseconds.

spring.cloud.config.retry.max-attempts

6

Maximum number of attempts.

spring.cloud.config.retry.max-interval

2000

Maximum interval for backoff.

spring.cloud.config.retry.multiplier

1.1

Multiplier for next interval.

spring.cloud.config.send-state

true

Flag to indicate whether to send state. Default true.

spring.cloud.config.server.accept-empty

true

Flag to indicate that If HTTP 404 needs to be sent if Application is not Found

spring.cloud.config.server.bootstrap

false

Flag indicating that the config server should initialize its own Environment with properties from the remote repository. Off by default because it delays startup but can be useful when embedding the server in another application.

spring.cloud.config.server.default-application-name

application

Default application name when incoming requests do not have a specific one.

spring.cloud.config.server.default-label

 

Default repository label when incoming requests do not have a specific label.

spring.cloud.config.server.default-profile

default

Default application profile when incoming requests do not have a specific one.

spring.cloud.config.server.encrypt.enabled

true

Enable decryption of environment properties before sending to client.

spring.cloud.config.server.git.basedir

 

Base directory for local working copy of repository.

spring.cloud.config.server.git.clone-on-start

false

Flag to indicate that the repository should be cloned on startup (not on demand). Generally leads to slower startup but faster first query.

spring.cloud.config.server.git.default-label

 

The default label to be used with the remore repository

spring.cloud.config.server.git.delete-untracked-branches

false

Flag to indicate that the branch should be deleted locally if it’s origin tracked branch was removed.

spring.cloud.config.server.git.force-pull

false

Flag to indicate that the repository should force pull. If true discard any local changes and take from remote repository.

spring.cloud.config.server.git.host-key

 

Valid SSH host key. Must be set if hostKeyAlgorithm is also set.

spring.cloud.config.server.git.host-key-algorithm

 

One of ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, or ecdsa-sha2-nistp521. Must be set if hostKey is also set.

spring.cloud.config.server.git.ignore-local-ssh-settings

false

If true, use property-based instead of file-based SSH config.

spring.cloud.config.server.git.known-hosts-file

 

Location of custom .known_hosts file.

spring.cloud.config.server.git.order

 

The order of the environment repository.

spring.cloud.config.server.git.passphrase

 

Passphrase for unlocking your ssh private key.

spring.cloud.config.server.git.password

 

Password for authentication with remote repository.

spring.cloud.config.server.git.preferred-authentications

 

Override server authentication method order. This should allow for evading login prompts if server has keyboard-interactive authentication before the publickey method.

spring.cloud.config.server.git.private-key

 

Valid SSH private key. Must be set if ignoreLocalSshSettings is true and Git URI is SSH format.

spring.cloud.config.server.git.proxy

 

HTTP proxy configuration.

spring.cloud.config.server.git.refresh-rate

0

Time (in seconds) between refresh of the git repository

spring.cloud.config.server.git.repos

 

Map of repository identifier to location and other properties.

spring.cloud.config.server.git.search-paths

 

Search paths to use within local working copy. By default searches only the root.

spring.cloud.config.server.git.skip-ssl-validation

false

Flag to indicate that SSL certificate validation should be bypassed when communicating with a repository served over an HTTPS connection.

spring.cloud.config.server.git.strict-host-key-checking

true

If false, ignore errors with host key

spring.cloud.config.server.git.timeout

5

Timeout (in seconds) for obtaining HTTP or SSH connection (if applicable), defaults to 5 seconds.

spring.cloud.config.server.git.uri

 

URI of remote repository.

spring.cloud.config.server.git.username

 

Username for authentication with remote repository.

spring.cloud.config.server.health.repositories

  

spring.cloud.config.server.jdbc.order

0

 

spring.cloud.config.server.jdbc.sql

SELECT KEY, VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?

SQL used to query database for keys and values

spring.cloud.config.server.native.add-label-locations

true

Flag to determine whether label locations should be added.

spring.cloud.config.server.native.default-label

master

 

spring.cloud.config.server.native.fail-on-error

false

Flag to determine how to handle exceptions during decryption (default false).

spring.cloud.config.server.native.order

  

spring.cloud.config.server.native.search-locations

[]

Locations to search for configuration files. Defaults to the same as a Spring Boot app so [classpath:/,classpath:/config/,file:./,file:./config/].

spring.cloud.config.server.native.version

 

Version string to be reported for native repository

spring.cloud.config.server.overrides

 

Extra map for a property source to be sent to all clients unconditionally.

spring.cloud.config.server.prefix

 

Prefix for configuration resource paths (default is empty). Useful when embedding in another application when you don’t want to change the context path or servlet path.

spring.cloud.config.server.strip-document-from-yaml

true

Flag to indicate that YAML documents that are text or collections (not a map) should be returned in "native" form.

spring.cloud.config.server.svn.basedir

 

Base directory for local working copy of repository.

spring.cloud.config.server.svn.default-label

 

The default label to be used with the remore repository

spring.cloud.config.server.svn.order

 

The order of the environment repository.

spring.cloud.config.server.svn.passphrase

 

Passphrase for unlocking your ssh private key.

spring.cloud.config.server.svn.password

 

Password for authentication with remote repository.

spring.cloud.config.server.svn.search-paths

 

Search paths to use within local working copy. By default searches only the root.

spring.cloud.config.server.svn.strict-host-key-checking

true

Reject incoming SSH host keys from remote servers not in the known host list.

spring.cloud.config.server.svn.uri

 

URI of remote repository.

spring.cloud.config.server.svn.username

 

Username for authentication with remote repository.

spring.cloud.config.server.vault.backend

secret

Vault backend. Defaults to secret.

spring.cloud.config.server.vault.default-key

application

The key in vault shared by all applications. Defaults to application. Set to empty to disable.

spring.cloud.config.server.vault.host

127.0.0.1

Vault host. Defaults to 127.0.0.1.

spring.cloud.config.server.vault.kv-version

1

Value to indicate which version of Vault kv backend is used. Defaults to 1.

spring.cloud.config.server.vault.order

  

spring.cloud.config.server.vault.port

8200

Vault port. Defaults to 8200.

spring.cloud.config.server.vault.profile-separator

,

Vault profile separator. Defaults to comma.

spring.cloud.config.server.vault.proxy

 

HTTP proxy configuration.

spring.cloud.config.server.vault.scheme

http

Vault scheme. Defaults to http.

spring.cloud.config.server.vault.skip-ssl-validation

false

Flag to indicate that SSL certificate validation should be bypassed when communicating with a repository served over an HTTPS connection.

spring.cloud.config.server.vault.timeout

5

Timeout (in seconds) for obtaining HTTP connection, defaults to 5 seconds.

spring.cloud.config.token

 

Security Token passed thru to underlying environment repository.

spring.cloud.config.uri

[http://localhost:8888]

The URI of the remote server (default http://localhost:8888).

spring.cloud.config.username

 

The username to use (HTTP Basic) when contacting the remote server.

spring.cloud.consul.config.acl-token

  

spring.cloud.consul.config.data-key

data

If format is Format.PROPERTIES or Format.YAML then the following field is used as key to look up consul for configuration.

spring.cloud.consul.config.default-context

application

 

spring.cloud.consul.config.enabled

true

 

spring.cloud.consul.config.fail-fast

true

Throw exceptions during config lookup if true, otherwise, log warnings.

spring.cloud.consul.config.format

  

spring.cloud.consul.config.name

 

Alternative to spring.application.name to use in looking up values in consul KV.

spring.cloud.consul.config.prefix

config

 

spring.cloud.consul.config.profile-separator

,

 

spring.cloud.consul.config.watch.delay

1000

The value of the fixed delay for the watch in millis. Defaults to 1000.

spring.cloud.consul.config.watch.enabled

true

If the watch is enabled. Defaults to true.

spring.cloud.consul.config.watch.wait-time

55

The number of seconds to wait (or block) for watch query, defaults to 55. Needs to be less than default ConsulClient (defaults to 60). To increase ConsulClient timeout create a ConsulClient bean with a custom ConsulRawClient with a custom HttpClient.

spring.cloud.consul.discovery.acl-token

  

spring.cloud.consul.discovery.catalog-services-watch-delay

1000

The delay between calls to watch consul catalog in millis, default is 1000.

spring.cloud.consul.discovery.catalog-services-watch-timeout

2

The number of seconds to block while watching consul catalog, default is 2.

spring.cloud.consul.discovery.datacenters

 

Map of serviceId’s → datacenter to query for in server list. This allows looking up services in another datacenters.

spring.cloud.consul.discovery.default-query-tag

 

Tag to query for in service list if one is not listed in serverListQueryTags.

spring.cloud.consul.discovery.default-zone-metadata-name

zone

Service instance zone comes from metadata. This allows changing the metadata tag name.

spring.cloud.consul.discovery.deregister

true

Disable automatic de-registration of service in consul.

spring.cloud.consul.discovery.enabled

true

Is service discovery enabled?

spring.cloud.consul.discovery.fail-fast

true

Throw exceptions during service registration if true, otherwise, log warnings (defaults to true).

spring.cloud.consul.discovery.health-check-critical-timeout

 

Timeout to deregister services critical for longer than timeout (e.g. 30m). Requires consul version 7.x or higher.

spring.cloud.consul.discovery.health-check-headers

 

Headers to be applied to the Health Check calls

spring.cloud.consul.discovery.health-check-interval

10s

How often to perform the health check (e.g. 10s), defaults to 10s.

spring.cloud.consul.discovery.health-check-path

/actuator/health

Alternate server path to invoke for health checking

spring.cloud.consul.discovery.health-check-timeout

 

Timeout for health check (e.g. 10s).

spring.cloud.consul.discovery.health-check-tls-skip-verify

 

Skips certificate verification during service checks if true, otherwise runs certificate verification.

spring.cloud.consul.discovery.health-check-url

 

Custom health check url to override default

spring.cloud.consul.discovery.heartbeat.enabled

false

 

spring.cloud.consul.discovery.heartbeat.interval-ratio

  

spring.cloud.consul.discovery.heartbeat.ttl-unit

s

 

spring.cloud.consul.discovery.heartbeat.ttl-value

30

 

spring.cloud.consul.discovery.hostname

 

Hostname to use when accessing server

spring.cloud.consul.discovery.instance-group

 

Service instance group

spring.cloud.consul.discovery.instance-id

 

Unique service instance id

spring.cloud.consul.discovery.instance-zone

 

Service instance zone

spring.cloud.consul.discovery.ip-address

 

IP address to use when accessing service (must also set preferIpAddress to use)

spring.cloud.consul.discovery.lifecycle.enabled

true

 

spring.cloud.consul.discovery.management-port

 

Port to register the management service under (defaults to management port)

spring.cloud.consul.discovery.management-suffix

management

Suffix to use when registering management service

spring.cloud.consul.discovery.management-tags

 

Tags to use when registering management service

spring.cloud.consul.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.consul.discovery.port

 

Port to register the service under (defaults to listening port)

spring.cloud.consul.discovery.prefer-agent-address

false

Source of how we will determine the address to use

spring.cloud.consul.discovery.prefer-ip-address

false

Use ip address rather than hostname during registration

spring.cloud.consul.discovery.query-passing

false

Add the 'passing` parameter to /v1/health/service/serviceName. This pushes health check passing to the server.

spring.cloud.consul.discovery.register

true

Register as a service in consul.

spring.cloud.consul.discovery.register-health-check

true

Register health check in consul. Useful during development of a service.

spring.cloud.consul.discovery.scheme

http

Whether to register an http or https service

spring.cloud.consul.discovery.server-list-query-tags

 

Map of serviceId’s → tag to query for in server list. This allows filtering services by a single tag.

spring.cloud.consul.discovery.service-name

 

Service name

spring.cloud.consul.discovery.tags

 

Tags to use when registering service

spring.cloud.consul.enabled

true

Is spring cloud consul enabled

spring.cloud.consul.host

localhost

Consul agent hostname. Defaults to 'localhost'.

spring.cloud.consul.port

8500

Consul agent port. Defaults to '8500'.

spring.cloud.consul.retry.initial-interval

1000

Initial retry interval in milliseconds.

spring.cloud.consul.retry.max-attempts

6

Maximum number of attempts.

spring.cloud.consul.retry.max-interval

2000

Maximum interval for backoff.

spring.cloud.consul.retry.multiplier

1.1

Multiplier for next interval.

spring.cloud.consul.scheme

 

Consul agent scheme (HTTP/HTTPS). If there is no scheme in address - client will use HTTP.

spring.cloud.consul.tls.certificate-password

 

Password to open the certificate.

spring.cloud.consul.tls.certificate-path

 

File path to the certificate.

spring.cloud.consul.tls.key-store-instance-type

 

Type of key framework to use.

spring.cloud.consul.tls.key-store-password

 

Password to an external keystore

spring.cloud.consul.tls.key-store-path

 

Path to an external keystore

spring.cloud.discovery.client.cloudfoundry.order

  

spring.cloud.discovery.client.composite-indicator.enabled

true

Enables discovery client composite health indicator.

spring.cloud.discovery.client.health-indicator.enabled

true

 

spring.cloud.discovery.client.health-indicator.include-description

false

 

spring.cloud.discovery.client.simple.instances

  

spring.cloud.discovery.client.simple.local.instance-id

 

The unique identifier or name for the service instance.

spring.cloud.discovery.client.simple.local.metadata

 

Metadata for the service instance. Can be used by discovery clients to modify their behaviour per instance, e.g. when load balancing.

spring.cloud.discovery.client.simple.local.service-id

 

The identifier or name for the service. Multiple instances might share the same service ID.

spring.cloud.discovery.client.simple.local.uri

 

The URI of the service instance. Will be parsed to extract the scheme, host, and port.

spring.cloud.discovery.client.simple.order

  

spring.cloud.discovery.enabled

true

Enables discovery client health indicators.

spring.cloud.features.enabled

true

Enables the features endpoint.

spring.cloud.function.compile

 

Configuration for function bodies, which will be compiled. The key in the map is the function name and the value is a map containing a key "lambda" which is the body to compile, and optionally a "type" (defaults to "function"). Can also contain "inputType" and "outputType" in case it is ambiguous.

spring.cloud.function.imports

 

Configuration for a set of files containing function bodies, which will be imported and compiled. The key in the map is the function name and the value is another map, containing a "location" of the file to compile and (optionally) a "type" (defaults to "function").

spring.cloud.function.task.consumer

  

spring.cloud.function.task.function

  

spring.cloud.function.task.supplier

  

spring.cloud.function.web.path

 

Path to web resources for functions (should start with / if not empty).

spring.cloud.function.web.supplier.auto-startup

true

 

spring.cloud.function.web.supplier.debug

true

 

spring.cloud.function.web.supplier.enabled

false

 

spring.cloud.function.web.supplier.headers

  

spring.cloud.function.web.supplier.name

  

spring.cloud.function.web.supplier.template-url

  

spring.cloud.gateway.default-filters

 

List of filter definitions that are applied to every route.

spring.cloud.gateway.discovery.locator.enabled

false

Flag that enables DiscoveryClient gateway integration

spring.cloud.gateway.discovery.locator.filters

  

spring.cloud.gateway.discovery.locator.include-expression

true

SpEL expression that will evaluate whether to include a service in gateway integration or not, defaults to: true

spring.cloud.gateway.discovery.locator.lower-case-service-id

false

Option to lower case serviceId in predicates and filters, defaults to false. Useful with eureka when it automatically uppercases serviceId. so MYSERIVCE, would match /myservice/**

spring.cloud.gateway.discovery.locator.predicates

  

spring.cloud.gateway.discovery.locator.route-id-prefix

 

The prefix for the routeId, defaults to discoveryClient.getClass().getSimpleName() + "_". Service Id will be appended to create the routeId.

spring.cloud.gateway.discovery.locator.url-expression

'lb://'+serviceId

SpEL expression that create the uri for each route, defaults to: 'lb://'+serviceId

spring.cloud.gateway.enabled

true

Enables gateway functionality.

spring.cloud.gateway.filter.remove-hop-by-hop.headers

  

spring.cloud.gateway.filter.remove-hop-by-hop.order

  

spring.cloud.gateway.filter.secure-headers.content-security-policy

default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline'

 

spring.cloud.gateway.filter.secure-headers.content-type-options

nosniff

 

spring.cloud.gateway.filter.secure-headers.download-options

noopen

 

spring.cloud.gateway.filter.secure-headers.frame-options

DENY

 

spring.cloud.gateway.filter.secure-headers.permitted-cross-domain-policies

none

 

spring.cloud.gateway.filter.secure-headers.referrer-policy

no-referrer

 

spring.cloud.gateway.filter.secure-headers.strict-transport-security

max-age=631138519

 

spring.cloud.gateway.filter.secure-headers.xss-protection-header

1 ; mode=block

 

spring.cloud.gateway.forwarded.enabled

true

Enables the ForwardedHeadersFilter.

spring.cloud.gateway.globalcors.cors-configurations

  

spring.cloud.gateway.httpclient.connect-timeout

 

The connect timeout in millis, the default is 45s.

spring.cloud.gateway.httpclient.pool.acquire-timeout

 

Only for type FIXED, the maximum time in millis to wait for aquiring.

spring.cloud.gateway.httpclient.pool.max-connections

 

Only for type FIXED, the maximum number of connections before starting pending acquisition on existing ones.

spring.cloud.gateway.httpclient.pool.name

proxy

The channel pool map name, defaults to proxy.

spring.cloud.gateway.httpclient.pool.type

 

Type of pool for HttpClient to use, defaults to ELASTIC.

spring.cloud.gateway.httpclient.proxy.host

 

Hostname for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.non-proxy-hosts-pattern

 

Regular expression (Java) for a configured list of hosts that should be reached directly, bypassing the proxy

spring.cloud.gateway.httpclient.proxy.password

 

Password for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.port

 

Port for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.proxy.username

 

Username for proxy configuration of Netty HttpClient.

spring.cloud.gateway.httpclient.response-timeout

 

The response timeout.

spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout

3000ms

SSL close_notify flush timeout. Default to 3000 ms.

spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout

 

SSL close_notify read timeout. Default to 0 ms.

spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.default-configuration-type

 

The default ssl configuration type. Defaults to TCP.

spring.cloud.gateway.httpclient.ssl.handshake-timeout

10000ms

SSL handshake timeout. Default to 10000 ms

spring.cloud.gateway.httpclient.ssl.handshake-timeout-millis

  

spring.cloud.gateway.httpclient.ssl.trusted-x509-certificates

 

Trusted certificates for verifying the remote endpoint’s certificate.

spring.cloud.gateway.httpclient.ssl.use-insecure-trust-manager

false

Installs the netty InsecureTrustManagerFactory. This is insecure and not suitable for production.

spring.cloud.gateway.metrics.enabled

false

Enables the collection of metrics data.

spring.cloud.gateway.proxy.headers

 

Fixed header values that will be added to all downstream requests.

spring.cloud.gateway.proxy.sensitive

 

A set of sensitive header names that will not be sent downstream by default.

spring.cloud.gateway.redis-rate-limiter.burst-capacity-header

X-RateLimit-Burst-Capacity

The name of the header that returns the burst capacity configuration.

spring.cloud.gateway.redis-rate-limiter.config

  

spring.cloud.gateway.redis-rate-limiter.include-headers

true

Whether or not to include headers containing rate limiter information, defaults to true.

spring.cloud.gateway.redis-rate-limiter.remaining-header

X-RateLimit-Remaining

The name of the header that returns number of remaining requests during the current second.

spring.cloud.gateway.redis-rate-limiter.replenish-rate-header

X-RateLimit-Replenish-Rate

The name of the header that returns the replenish rate configuration.

spring.cloud.gateway.routes

 

List of Routes

spring.cloud.gateway.streaming-media-types

  

spring.cloud.gateway.x-forwarded.enabled

true

If the XForwardedHeadersFilter is enabled.

spring.cloud.gateway.x-forwarded.for-append

true

If appending X-Forwarded-For as a list is enabled.

spring.cloud.gateway.x-forwarded.for-enabled

true

If X-Forwarded-For is enabled.

spring.cloud.gateway.x-forwarded.host-append

true

If appending X-Forwarded-Host as a list is enabled.

spring.cloud.gateway.x-forwarded.host-enabled

true

If X-Forwarded-Host is enabled.

spring.cloud.gateway.x-forwarded.order

0

The order of the XForwardedHeadersFilter.

spring.cloud.gateway.x-forwarded.port-append

true

If appending X-Forwarded-Port as a list is enabled.

spring.cloud.gateway.x-forwarded.port-enabled

true

If X-Forwarded-Port is enabled.

spring.cloud.gateway.x-forwarded.prefix-append

true

If appending X-Forwarded-Prefix as a list is enabled.

spring.cloud.gateway.x-forwarded.prefix-enabled

true

If X-Forwarded-Prefix is enabled.

spring.cloud.gateway.x-forwarded.proto-append

true

If appending X-Forwarded-Proto as a list is enabled.

spring.cloud.gateway.x-forwarded.proto-enabled

true

If X-Forwarded-Proto is enabled.

spring.cloud.httpclientfactories.apache.enabled

true

Enables creation of Apache Http Client factory beans.

spring.cloud.httpclientfactories.ok.enabled

true

Enables creation of OK Http Client factory beans.

spring.cloud.hypermedia.refresh.fixed-delay

5000

 

spring.cloud.hypermedia.refresh.initial-delay

10000

 

spring.cloud.inetutils.default-hostname

localhost

The default hostname. Used in case of errors.

spring.cloud.inetutils.default-ip-address

127.0.0.1

The default IP address. Used in case of errors.

spring.cloud.inetutils.ignored-interfaces

 

List of Java regular expressions for network interfaces that will be ignored.

spring.cloud.inetutils.preferred-networks

 

List of Java regular expressions for network addresses that will be preferred.

spring.cloud.inetutils.timeout-seconds

1

Timeout, in seconds, for calculating hostname.

spring.cloud.inetutils.use-only-site-local-interfaces

false

Whether to use only interfaces with site local addresses. See {@link InetAddress#isSiteLocalAddress()} for more details.

spring.cloud.loadbalancer.retry.enabled

true

 

spring.cloud.refresh.enabled

true

Enables autoconfiguration for the refresh scope and associated features.

spring.cloud.refresh.extra-refreshable

true

Additional class names for beans to post process into refresh scope.

spring.cloud.service-registry.auto-registration.enabled

true

Whether service auto-registration is enabled. Defaults to true.

spring.cloud.service-registry.auto-registration.fail-fast

false

Whether startup fails if there is no AutoServiceRegistration. Defaults to false.

spring.cloud.service-registry.auto-registration.register-management

true

Whether to register the management as a service. Defaults to true.

spring.cloud.stream.binders

 

Additional per-binder properties (see {@link BinderProperties}) if more then one binder of the same type is used (i.e., connect to multiple instances of RabbitMq). Here you can specify multiple binder configurations, each with different environment settings. For example; spring.cloud.stream.binders.rabbit1.environment. . . , spring.cloud.stream.binders.rabbit2.environment. . .

spring.cloud.stream.binding-retry-interval

30

Retry interval (in seconds) used to schedule binding attempts. Default: 30 sec.

spring.cloud.stream.bindings

 

Additional binding properties (see {@link BinderProperties}) per binding name (e.g., 'input`). For example; This sets the content-type for the 'input' binding of a Sink application: 'spring.cloud.stream.bindings.input.contentType=text/plain'

spring.cloud.stream.consul.binder.event-timeout

5

 

spring.cloud.stream.default-binder

 

The name of the binder to use by all bindings in the event multiple binders available (e.g., 'rabbit');

spring.cloud.stream.dynamic-destinations

[]

A list of destinations that can be bound dynamically. If set, only listed destinations can be bound.

spring.cloud.stream.function.definition

 

Definition of functions to bind. If several functions need to be composed into one, use pipes (e.g., 'fooFunc

barFunc')

spring.cloud.stream.instance-count

1

The number of deployed instances of an application. Default: 1. NOTE: Could also be managed per individual binding "spring.cloud.stream.bindings.foo.consumer.instance-count" where 'foo' is the name of the binding.

spring.cloud.stream.instance-index

0

The instance id of the application: a number from 0 to instanceCount-1. Used for partitioning and with Kafka. NOTE: Could also be managed per individual binding "spring.cloud.stream.bindings.foo.consumer.instance-index" where 'foo' is the name of the binding.

spring.cloud.stream.integration.message-handler-not-propagated-headers

 

Message header names that will NOT be copied from the inbound message.

spring.cloud.stream.kafka.binder.auto-add-partitions

false

 

spring.cloud.stream.kafka.binder.auto-create-topics

true

 

spring.cloud.stream.kafka.binder.brokers

[localhost]

 

spring.cloud.stream.kafka.binder.configuration

 

Arbitrary kafka properties that apply to both producers and consumers.

spring.cloud.stream.kafka.binder.consumer-properties

 

Arbitrary kafka consumer properties.

spring.cloud.stream.kafka.binder.fetch-size

0

 

spring.cloud.stream.kafka.binder.header-mapper-bean-name

 

The bean name of a custom header mapper to use instead of a {@link org.springframework.kafka.support.DefaultKafkaHeaderMapper}.

spring.cloud.stream.kafka.binder.headers

[]

 

spring.cloud.stream.kafka.binder.health-timeout

60

Time to wait to get partition information in seconds; default 60.

spring.cloud.stream.kafka.binder.jaas

 
 

spring.cloud.stream.kafka.binder.max-wait

100

 

spring.cloud.stream.kafka.binder.min-partition-count

1

 

spring.cloud.stream.kafka.binder.offset-update-count

0

 

spring.cloud.stream.kafka.binder.offset-update-shutdown-timeout

2000

 

spring.cloud.stream.kafka.binder.offset-update-time-window

10000

 

spring.cloud.stream.kafka.binder.producer-properties

 

Arbitrary kafka producer properties.

spring.cloud.stream.kafka.binder.queue-size

8192

 

spring.cloud.stream.kafka.binder.replication-factor

1

 

spring.cloud.stream.kafka.binder.required-acks

1

 

spring.cloud.stream.kafka.binder.socket-buffer-size

2097152

 

spring.cloud.stream.kafka.binder.transaction.producer.admin

 
 

spring.cloud.stream.kafka.binder.transaction.producer.batch-timeout

 
 

spring.cloud.stream.kafka.binder.transaction.producer.buffer-size

 
 

spring.cloud.stream.kafka.binder.transaction.producer.compression-type

 
 

spring.cloud.stream.kafka.binder.transaction.producer.configuration

 
 

spring.cloud.stream.kafka.binder.transaction.producer.error-channel-enabled

 
 

spring.cloud.stream.kafka.binder.transaction.producer.header-mode

 
 

spring.cloud.stream.kafka.binder.transaction.producer.header-patterns

 
 

spring.cloud.stream.kafka.binder.transaction.producer.message-key-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-count

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-key-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-key-extractor-name

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-selector-expression

 
 

spring.cloud.stream.kafka.binder.transaction.producer.partition-selector-name

 
 

spring.cloud.stream.kafka.binder.transaction.producer.required-groups

 
 

spring.cloud.stream.kafka.binder.transaction.producer.sync

 
 

spring.cloud.stream.kafka.binder.transaction.producer.use-native-encoding

 
 

spring.cloud.stream.kafka.binder.transaction.transaction-id-prefix

 
 

spring.cloud.stream.kafka.binder.zk-connection-timeout

10000

ZK Connection timeout in milliseconds.

spring.cloud.stream.kafka.binder.zk-nodes

[localhost]

 

spring.cloud.stream.kafka.binder.zk-session-timeout

10000

ZK session timeout in milliseconds.

spring.cloud.stream.kafka.bindings

 
 

spring.cloud.stream.kafka.streams.binder.application-id

 
 

spring.cloud.stream.kafka.streams.binder.auto-add-partitions

 
 

spring.cloud.stream.kafka.streams.binder.auto-create-topics

 
 

spring.cloud.stream.kafka.streams.binder.brokers

 
 

spring.cloud.stream.kafka.streams.binder.configuration

 
 

spring.cloud.stream.kafka.streams.binder.consumer-properties

 
 

spring.cloud.stream.kafka.streams.binder.fetch-size

 
 

spring.cloud.stream.kafka.streams.binder.header-mapper-bean-name

 
 

spring.cloud.stream.kafka.streams.binder.headers

 
 

spring.cloud.stream.kafka.streams.binder.health-timeout

 
 

spring.cloud.stream.kafka.streams.binder.jaas

 
 

spring.cloud.stream.kafka.streams.binder.max-wait

 
 

spring.cloud.stream.kafka.streams.binder.min-partition-count

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-count

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-shutdown-timeout

 
 

spring.cloud.stream.kafka.streams.binder.offset-update-time-window

 
 

spring.cloud.stream.kafka.streams.binder.producer-properties

 
 

spring.cloud.stream.kafka.streams.binder.queue-size

 
 

spring.cloud.stream.kafka.streams.binder.replication-factor

 
 

spring.cloud.stream.kafka.streams.binder.required-acks

 
 

spring.cloud.stream.kafka.streams.binder.serde-error

 

{@link org.apache.kafka.streams.errors.DeserializationExceptionHandler} to use when there is a Serde error. {@link KafkaStreamsBinderConfigurationProperties.SerdeError} values are used to provide the exception handler on consumer binding.

spring.cloud.stream.kafka.streams.binder.socket-buffer-size

 
 

spring.cloud.stream.kafka.streams.binder.zk-connection-timeout

 
 

spring.cloud.stream.kafka.streams.binder.zk-nodes

 
 

spring.cloud.stream.kafka.streams.binder.zk-session-timeout

 
 

spring.cloud.stream.kafka.streams.bindings

 
 

spring.cloud.stream.kafka.streams.time-window.advance-by

0

 

spring.cloud.stream.kafka.streams.time-window.length

0

 

spring.cloud.stream.metrics.export-properties

 

List of properties that are going to be appended to each message. This gets populate by onApplicationEvent, once the context refreshes to avoid overhead of doing per message basis.

spring.cloud.stream.metrics.key

 

The name of the metric being emitted. Should be an unique value per application. Defaults to: ${spring.application.name:${vcap.application.name:${spring.config.name:application}}}

spring.cloud.stream.metrics.meter-filter

 

Pattern to control the 'meters' one wants to capture. By default all 'meters' will be captured. For example, 'spring.integration.*' will only capture metric information for meters whose name starts with 'spring.integration'.

spring.cloud.stream.metrics.properties

 

Application properties that should be added to the metrics payload For example: spring.application**

spring.cloud.stream.metrics.schedule-interval

60s

Interval expressed as Duration for scheduling metrics snapshots publishing. Defaults to 60 seconds

spring.cloud.stream.override-cloud-connectors

false

This property is only applicable when the cloud profile is active and Spring Cloud Connectors are provided with the application. If the property is false (the default), the binder detects a suitable bound service (for example, a RabbitMQ service bound in Cloud Foundry for the RabbitMQ binder) and uses it for creating connections (usually through Spring Cloud Connectors). When set to true, this property instructs binders to completely ignore the bound services and rely on Spring Boot properties (for example, relying on the spring.rabbitmq.* properties provided in the environment for the RabbitMQ binder). The typical usage of this property is to be nested in a customized environment when connecting to multiple systems.

spring.cloud.stream.rabbit.binder.admin-addresses

[]

Urls for management plugins; only needed for queue affinity.

spring.cloud.stream.rabbit.binder.admin-adresses

 
 

spring.cloud.stream.rabbit.binder.compression-level

0

Compression level for compressed bindings; see 'java.util.zip.Deflator'.

spring.cloud.stream.rabbit.binder.connection-name-prefix

 

Prefix for connection names from this binder.

spring.cloud.stream.rabbit.binder.nodes

[]

Cluster member node names; only needed for queue affinity.

spring.cloud.stream.rabbit.bindings

 
 

spring.cloud.stream.schema-registry-client.cached

false

 

spring.cloud.stream.schema-registry-client.endpoint

 
 

spring.cloud.stream.schema.avro.dynamic-schema-generation-enabled

false

 

spring.cloud.stream.schema.avro.prefix

vnd

 

spring.cloud.stream.schema.avro.reader-schema

 
 

spring.cloud.stream.schema.avro.schema-imports

 

A list of files or directories that should be loaded first thus making them importable by subsequent schemas. Note that imported files should not reference each other. @parameter

spring.cloud.stream.schema.avro.schema-locations

 

The source directory of Apache Avro schema. This schema is used by this converter. If this schema depends on other schemas consider defining those those dependent ones in the {@link #schemaImports} @parameter

spring.cloud.stream.schema.server.allow-schema-deletion

false

Boolean flag to enable/disable schema deletion.

spring.cloud.stream.schema.server.path

 

Prefix for configuration resource paths (default is empty). Useful when embedding in another application when you don’t want to change the context path or servlet path.

spring.cloud.task.batch.command-line-runner-order

0

The order for the {@code CommandLineRunner} used to run batch jobs when {@code spring.cloud.task.batch.fail-on-job-failure=true}. Defaults to 0 (same as the {@link org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner}).

spring.cloud.task.batch.events.chunk-order

 

Properties for chunk listener order

spring.cloud.task.batch.events.chunk.enabled

true

This property is used to determine if a task should listen for batch chunk events.

spring.cloud.task.batch.events.enabled

true

This property is used to determine if a task should listen for batch events.

spring.cloud.task.batch.events.item-process-order

 

Properties for itemProcess listener order

spring.cloud.task.batch.events.item-process.enabled

true

This property is used to determine if a task should listen for batch item processed events.

spring.cloud.task.batch.events.item-read-order

 

Properties for itemRead listener order

spring.cloud.task.batch.events.item-read.enabled

true

This property is used to determine if a task should listen for batch item read events.

spring.cloud.task.batch.events.item-write-order

 

Properties for itemWrite listener order

spring.cloud.task.batch.events.item-write.enabled

true

This property is used to determine if a task should listen for batch item write events.

spring.cloud.task.batch.events.job-execution-order

 

Properties for jobExecution listener order

spring.cloud.task.batch.events.job-execution.enabled

true

This property is used to determine if a task should listen for batch job execution events.

spring.cloud.task.batch.events.skip-order

 

Properties for skip listener order

spring.cloud.task.batch.events.skip.enabled

true

This property is used to determine if a task should listen for batch skip events.

spring.cloud.task.batch.events.step-execution-order

 

Properties for stepExecution listener order

spring.cloud.task.batch.events.step-execution.enabled

true

This property is used to determine if a task should listen for batch step execution events.

spring.cloud.task.batch.fail-on-job-failure

false

This property is used to determine if a task app should return with a non zero exit code if a batch job fails.

spring.cloud.task.batch.fail-on-job-failure-poll-interval

5000

Fixed delay in milliseconds that Spring Cloud Task will wait when checking if {@link org.springframework.batch.core.JobExecution}s have completed, when spring.cloud.task.batch.failOnJobFailure is set to true. Defaults to 5000.

spring.cloud.task.batch.fail-on-job-failurewait-time

0

Maximum wait time in milliseconds that Spring Cloud Task will wait for tasks to complete when spring.cloud.task.batch.failOnJobFailure is set to true. Defaults to 0. 0 indicates no wait time is enforced.

spring.cloud.task.batch.job-names

 

Comma-separated list of job names to execute on startup (for instance, job1,job2). By default, all Jobs found in the context are executed.

spring.cloud.task.batch.listener.enabled

true

This property is used to determine if a task will be linked to the batch jobs that are run.

spring.cloud.task.closecontext-enabled

false

When set to true the context is closed at the end of the task. Else the context remains open.

spring.cloud.task.events.enabled

true

This property is used to determine if a task app should emit task events.

spring.cloud.task.executionid

 

An id that will be used by the task when updating the task execution.

spring.cloud.task.external-execution-id

 

An id that can be associated with a task.

spring.cloud.task.parent-execution-id

 

The id of the parent task execution id that launched this task execution. Defaults to null if task execution had no parent.

spring.cloud.task.single-instance-enabled

false

This property is used to determine if a task will execute if another task with the same app name is running.

spring.cloud.task.single-instance-lock-check-interval

500

Declares the time (in millis) that a task execution will wait between checks. Default time is: 500 millis.

spring.cloud.task.single-instance-lock-ttl

 

Declares the maximum amount of time (in millis) that a task execution can hold a lock to prevent another task from executing with a specific task name when the single-instance-enabled is set to true. Default time is: Integer.MAX_VALUE.

spring.cloud.task.table-prefix

TASK_

The prefix to append to the table names created by Spring Cloud Task.

spring.cloud.util.enabled

true

Enables creation of Spring Cloud utility beans.

spring.cloud.vault.app-id.app-id-path

app-id

Mount path of the AppId authentication backend.

spring.cloud.vault.app-id.network-interface

 

Network interface hint for the "MAC_ADDRESS" UserId mechanism.

spring.cloud.vault.app-id.user-id

MAC_ADDRESS

UserId mechanism. Can be either "MAC_ADDRESS", "IP_ADDRESS", a string or a class name.

spring.cloud.vault.app-role.app-role-path

approle

Mount path of the AppRole authentication backend.

spring.cloud.vault.app-role.role

 

Name of the role, optional, used for pull-mode.

spring.cloud.vault.app-role.role-id

 

The RoleId.

spring.cloud.vault.app-role.secret-id

 

The SecretId.

spring.cloud.vault.application-name

application

Application name for AppId authentication.

spring.cloud.vault.authentication

 
 

spring.cloud.vault.aws-ec2.aws-ec2-path

aws-ec2

Mount path of the AWS-EC2 authentication backend.

spring.cloud.vault.aws-ec2.identity-document

http://169.254.169.254/latest/dynamic/instance-identity/pkcs7

URL of the AWS-EC2 PKCS7 identity document.

spring.cloud.vault.aws-ec2.nonce

 

Nonce used for AWS-EC2 authentication. An empty nonce defaults to nonce generation.

spring.cloud.vault.aws-ec2.role

 

Name of the role, optional.

spring.cloud.vault.aws-iam.aws-path

aws

Mount path of the AWS authentication backend.

spring.cloud.vault.aws-iam.role

 

Name of the role, optional. Defaults to the friendly IAM name if not set.

spring.cloud.vault.aws-iam.server-name

 

Name of the server used to set {@code X-Vault-AWS-IAM-Server-ID} header in the headers of login requests.

spring.cloud.vault.aws.access-key-property

cloud.aws.credentials.accessKey

Target property for the obtained access key.

spring.cloud.vault.aws.backend

aws

aws backend path.

spring.cloud.vault.aws.enabled

false

Enable aws backend usage.

spring.cloud.vault.aws.role

 

Role name for credentials.

spring.cloud.vault.aws.secret-key-property

cloud.aws.credentials.secretKey

Target property for the obtained secret key.

spring.cloud.vault.azure-msi.azure-path

azure

Mount path of the Azure MSI authentication backend.

spring.cloud.vault.azure-msi.role

 

Name of the role.

spring.cloud.vault.cassandra.backend

cassandra

Cassandra backend path.

spring.cloud.vault.cassandra.enabled

false

Enable cassandra backend usage.

spring.cloud.vault.cassandra.password-property

spring.data.cassandra.password

Target property for the obtained password.

spring.cloud.vault.cassandra.role

 

Role name for credentials.

spring.cloud.vault.cassandra.username-property

spring.data.cassandra.username

Target property for the obtained username.

spring.cloud.vault.config.lifecycle.enabled

true

Enable lifecycle management.

spring.cloud.vault.config.order

0

Used to set a {@link org.springframework.core.env.PropertySource} priority. This is useful to use Vault as an override on other property sources. @see org.springframework.core.PriorityOrdered

spring.cloud.vault.connection-timeout

5000

Connection timeout;

spring.cloud.vault.consul.backend

consul

Consul backend path.

spring.cloud.vault.consul.enabled

false

Enable consul backend usage.

spring.cloud.vault.consul.role

 

Role name for credentials.

spring.cloud.vault.consul.token-property

spring.cloud.consul.token

Target property for the obtained token.

spring.cloud.vault.database.backend

database

Database backend path.

spring.cloud.vault.database.enabled

false

Enable database backend usage.

spring.cloud.vault.database.password-property

spring.datasource.password

Target property for the obtained password.

spring.cloud.vault.database.role

 

Role name for credentials.

spring.cloud.vault.database.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.discovery.enabled

false

Flag to indicate that Vault server discovery is enabled (vault server URL will be looked up via discovery).

spring.cloud.vault.discovery.service-id

vault

Service id to locate Vault.

spring.cloud.vault.enabled

true

Enable Vault config server.

spring.cloud.vault.fail-fast

false

Fail fast if data cannot be obtained from Vault.

spring.cloud.vault.gcp-gce.gcp-path

gcp

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.gcp-gce.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.gcp-gce.service-account

 

Optional service account id. Using the default id if left unconfigured.

spring.cloud.vault.gcp-iam.credentials.encoded-key

 

The base64 encoded contents of an OAuth2 account private key in JSON format.

spring.cloud.vault.gcp-iam.credentials.location

 

Location of the OAuth2 credentials private key. <p> Since this is a Resource, the private key can be in a multitude of locations, such as a local file system, classpath, URL, etc.

spring.cloud.vault.gcp-iam.gcp-path

gcp

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.gcp-iam.jwt-validity

15m

Validity of the JWT token.

spring.cloud.vault.gcp-iam.project-id

 

Overrides the GCP project Id.

spring.cloud.vault.gcp-iam.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.gcp-iam.service-account-id

 

Overrides the GCP service account Id.

spring.cloud.vault.generic.application-name

application

Application name to be used for the context.

spring.cloud.vault.generic.backend

secret

Name of the default backend.

spring.cloud.vault.generic.default-context

application

Name of the default context.

spring.cloud.vault.generic.enabled

true

Enable the generic backend.

spring.cloud.vault.generic.profile-separator

/

Profile-separator to combine application name and profile.

spring.cloud.vault.host

localhost

Vault server host.

spring.cloud.vault.kubernetes.kubernetes-path

kubernetes

Mount path of the Kubernetes authentication backend.

spring.cloud.vault.kubernetes.role

 

Name of the role against which the login is being attempted.

spring.cloud.vault.kubernetes.service-account-token-file

/var/run/secrets/kubernetes.io/serviceaccount/token

Path to the service account token file.

spring.cloud.vault.kv.application-name

application

Application name to be used for the context.

spring.cloud.vault.kv.backend

secret

Name of the default backend.

spring.cloud.vault.kv.backend-version

2

Key-Value backend version. Currently supported versions are: <ul> <li>Version 1 (unversioned key-value backend).</li> <li>Version 2 (versioned key-value backend).</li> </ul>

spring.cloud.vault.kv.default-context

application

Name of the default context.

spring.cloud.vault.kv.enabled

false

Enable the kev-value backend.

spring.cloud.vault.kv.profile-separator

/

Profile-separator to combine application name and profile.

spring.cloud.vault.mongodb.backend

mongodb

Cassandra backend path.

spring.cloud.vault.mongodb.enabled

false

Enable mongodb backend usage.

spring.cloud.vault.mongodb.password-property

spring.data.mongodb.password

Target property for the obtained password.

spring.cloud.vault.mongodb.role

 

Role name for credentials.

spring.cloud.vault.mongodb.username-property

spring.data.mongodb.username

Target property for the obtained username.

spring.cloud.vault.mysql.backend

mysql

mysql backend path.

spring.cloud.vault.mysql.enabled

false

Enable mysql backend usage.

spring.cloud.vault.mysql.password-property

spring.datasource.password

Target property for the obtained username.

spring.cloud.vault.mysql.role

 

Role name for credentials.

spring.cloud.vault.mysql.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.port

8200

Vault server port.

spring.cloud.vault.postgresql.backend

postgresql

postgresql backend path.

spring.cloud.vault.postgresql.enabled

false

Enable postgresql backend usage.

spring.cloud.vault.postgresql.password-property

spring.datasource.password

Target property for the obtained username.

spring.cloud.vault.postgresql.role

 

Role name for credentials.

spring.cloud.vault.postgresql.username-property

spring.datasource.username

Target property for the obtained username.

spring.cloud.vault.rabbitmq.backend

rabbitmq

rabbitmq backend path.

spring.cloud.vault.rabbitmq.enabled

false

Enable rabbitmq backend usage.

spring.cloud.vault.rabbitmq.password-property

spring.rabbitmq.password

Target property for the obtained password.

spring.cloud.vault.rabbitmq.role

 

Role name for credentials.

spring.cloud.vault.rabbitmq.username-property

spring.rabbitmq.username

Target property for the obtained username.

spring.cloud.vault.read-timeout

15000

Read timeout;

spring.cloud.vault.scheme

https

Protocol scheme. Can be either "http" or "https".

spring.cloud.vault.ssl.cert-auth-path

cert

Mount path of the TLS cert authentication backend.

spring.cloud.vault.ssl.key-store

 

Trust store that holds certificates and private keys.

spring.cloud.vault.ssl.key-store-password

 

Password used to access the key store.

spring.cloud.vault.ssl.trust-store

 

Trust store that holds SSL certificates.

spring.cloud.vault.ssl.trust-store-password

 

Password used to access the trust store.

spring.cloud.vault.token

 

Static vault token. Required if {@link #authentication} is {@code TOKEN}.

spring.cloud.vault.uri

 

Vault URI. Can be set with scheme, host and port.

spring.cloud.zookeeper.base-sleep-time-ms

50

Initial amount of time to wait between retries

spring.cloud.zookeeper.block-until-connected-unit

 

The unit of time related to blocking on connection to Zookeeper

spring.cloud.zookeeper.block-until-connected-wait

10

Wait time to block on connection to Zookeeper

spring.cloud.zookeeper.connect-string

localhost:2181

Connection string to the Zookeeper cluster

spring.cloud.zookeeper.default-health-endpoint

 

Default health endpoint that will be checked to verify that a dependency is alive

spring.cloud.zookeeper.dependencies

 

Mapping of alias to ZookeeperDependency. From Ribbon perspective the alias is actually serviceID since Ribbon can’t accept nested structures in serviceID

spring.cloud.zookeeper.dependency-configurations

 
 

spring.cloud.zookeeper.dependency-names

 
 

spring.cloud.zookeeper.discovery.enabled

true

 

spring.cloud.zookeeper.discovery.initial-status

 

The initial status of this instance (defaults to {@link StatusConstants#STATUS_UP}).

spring.cloud.zookeeper.discovery.instance-host

 

Predefined host with which a service can register itself in Zookeeper. Corresponds to the {code address} from the URI spec.

spring.cloud.zookeeper.discovery.instance-id

 

Id used to register with zookeeper. Defaults to a random UUID.

spring.cloud.zookeeper.discovery.instance-port

 

Port to register the service under (defaults to listening port)

spring.cloud.zookeeper.discovery.instance-ssl-port

 

Ssl port of the registered service.

spring.cloud.zookeeper.discovery.metadata

 

Gets the metadata name/value pairs associated with this instance. This information is sent to zookeeper and can be used by other instances.

spring.cloud.zookeeper.discovery.order

0

Order of the discovery client used by CompositeDiscoveryClient for sorting available clients.

spring.cloud.zookeeper.discovery.register

true

Register as a service in zookeeper.

spring.cloud.zookeeper.discovery.root

/services

Root Zookeeper folder in which all instances are registered

spring.cloud.zookeeper.discovery.uri-spec

{scheme}://{address}:{port}

The URI specification to resolve during service registration in Zookeeper

spring.cloud.zookeeper.enabled

true

Is Zookeeper enabled

spring.cloud.zookeeper.max-retries

10

Max number of times to retry

spring.cloud.zookeeper.max-sleep-ms

500

Max time in ms to sleep on each retry

spring.cloud.zookeeper.prefix

 

Common prefix that will be applied to all Zookeeper dependencies' paths

spring.integration.poller.fixed-delay

1000

Fixed delay for default poller.

spring.integration.poller.max-messages-per-poll

1

Maximum messages per poll for the default poller.

spring.sleuth.annotation.enabled

true

 

spring.sleuth.async.configurer.enabled

true

Enable default AsyncConfigurer.

spring.sleuth.async.enabled

true

Enable instrumenting async related components so that the tracing information is passed between threads.

spring.sleuth.async.ignored-beans

 

List of {@link java.util.concurrent.Executor} bean names that should be ignored and not wrapped in a trace representation.

spring.sleuth.baggage-keys

 

List of baggage key names that should be propagated out of process. These keys will be prefixed with baggage before the actual key. This property is set in order to be backward compatible with previous Sleuth versions. @see brave.propagation.ExtraFieldPropagation.FactoryBuilder#addPrefixedFields(String, java.util.Collection)

spring.sleuth.enabled

true

 

spring.sleuth.feign.enabled

true

Enable span information propagation when using Feign.

spring.sleuth.feign.processor.enabled

true

Enable post processor that wraps Feign Context in its tracing representations.

spring.sleuth.http.enabled

true

 

spring.sleuth.http.legacy.enabled

false

 

spring.sleuth.hystrix.strategy.enabled

true

Enable custom HystrixConcurrencyStrategy that wraps all Callable instances into their Sleuth representative - the TraceCallable.

spring.sleuth.integration.enabled

true

Enable Spring Integration sleuth instrumentation.

spring.sleuth.integration.patterns

[!hystrixStreamOutput*, *]

An array of patterns against which channel names will be matched. @see org.springframework.integration.config.GlobalChannelInterceptor#patterns(). Defaults to any channel name not matching the Hystrix Stream channel name.

spring.sleuth.integration.websockets.enabled

true

Enable tracing for WebSockets.

spring.sleuth.keys.http.headers

 

Additional headers that should be added as tags if they exist. If the header value is multi-valued, the tag value will be a comma-separated, single-quoted list.

spring.sleuth.keys.http.prefix

http.

Prefix for header names if they are added as tags.

spring.sleuth.log.slf4j.enabled

true

Enable a {@link Slf4jScopeDecorator} that prints tracing information in the logs.

spring.sleuth.log.slf4j.whitelisted-mdc-keys

 

A list of keys to be put from baggage to MDC.

spring.sleuth.messaging.enabled

false

Should messaging be turned on.

spring.sleuth.messaging.jms.enabled

false

 

spring.sleuth.messaging.jms.remote-service-name

jms

 

spring.sleuth.messaging.kafka.enabled

false

 

spring.sleuth.messaging.kafka.remote-service-name

kafka

 

spring.sleuth.messaging.rabbit.enabled

false

 

spring.sleuth.messaging.rabbit.remote-service-name

rabbitmq

 

spring.sleuth.opentracing.enabled

true

 

spring.sleuth.propagation-keys

 

List of fields that are referenced the same in-process as it is on the wire. For example, the name "x-vcap-request-id" would be set as-is including the prefix. <p> Note: {@code fieldName} will be implicitly lower-cased. @see brave.propagation.ExtraFieldPropagation.FactoryBuilder#addField(String)

spring.sleuth.reactor.enabled.enabled

true

When true enables instrumentation for reactor.

spring.sleuth.rxjava.schedulers.hook.enabled

true

Enable support for RxJava via RxJavaSchedulersHook.

spring.sleuth.rxjava.schedulers.ignoredthreads

[HystrixMetricPoller, ^RxComputation.*$]

Thread names for which spans will not be sampled.

spring.sleuth.sampler.probability

0.1

Probability of requests that should be sampled. E.g. 1.0 - 100% requests should be sampled. The precision is whole-numbers only (i.e. there’s no support for 0.1% of the traces).

spring.sleuth.scheduled.enabled

true

Enable tracing for {@link org.springframework.scheduling.annotation.Scheduled}.

spring.sleuth.scheduled.skip-pattern

org.springframework.cloud.netflix.hystrix.stream.HystrixStreamTask

Pattern for the fully qualified name of a class that should be skipped.

spring.sleuth.supports-join

true

True means the tracing system supports sharing a span ID between a client and server.

spring.sleuth.trace-id128

false

When true, generate 128-bit trace IDs instead of 64-bit ones.

spring.sleuth.web.additional-skip-pattern

 

Additional pattern for URLs that should be skipped in tracing. This will be appended to the {@link SleuthWebProperties#skipPattern}.

spring.sleuth.web.client.enabled

true

Enable interceptor injecting into {@link org.springframework.web.client.RestTemplate}.

spring.sleuth.web.client.skip-pattern

 

Pattern for URLs that should be skipped in client side tracing.

spring.sleuth.web.enabled

true

When true enables instrumentation for web applications.

spring.sleuth.web.exception-throwing-filter-enabled

true

Flag to toggle the presence of a filter that logs thrown exceptions.

spring.sleuth.web.filter-order

 

Order in which the tracing filters should be registered. Defaults to {@link TraceHttpAutoConfiguration#TRACING_FILTER_ORDER}.

spring.sleuth.web.skip-pattern

/api-docs.*

/autoconfig

/configprops

/dump

/health

/info

/metrics.*

/mappings

/trace

/swagger.*

.*\.png

.*\.css

.*\.js

.*\.html

/favicon.ico

/hystrix.stream

/application/.*

/actuator.*

/cloudfoundryapplication

Pattern for URLs that should be skipped in tracing.

spring.sleuth.zuul.enabled

true

Enable span information propagation when using Zuul.

spring.zipkin.base-url

http://localhost:9411/

URL of the zipkin query server instance. You can also provide the service id of the Zipkin server if Zipkin’s registered in service discovery (e.g. http://zipkinserver/)

spring.zipkin.compression.enabled

false

 

spring.zipkin.discovery-client-enabled

 

If set to {@code false}, will treat the {@link ZipkinProperties#baseUrl} as a URL always

spring.zipkin.enabled

true

Enables sending spans to Zipkin

spring.zipkin.encoder

 

Encoding type of spans sent to Zipkin. Set to {@link SpanBytesEncoder#JSON_V1} if your server is not recent.

spring.zipkin.locator.discovery.enabled

false

Enabling of locating the host name via service discovery

spring.zipkin.message-timeout

1

Timeout in seconds before pending spans will be sent in batches to Zipkin

spring.zipkin.sender.type

 

Means of sending spans to Zipkin

spring.zipkin.service.name

 

The name of the service, from which the Span was sent via HTTP, that should appear in Zipkin

stubrunner.amqp.enabled

false

Whether to enable support for Stub Runner and AMQP.

stubrunner.amqp.mockCOnnection

true

Whether to enable support for Stub Runner and AMQP mocked connection factory.

stubrunner.classifier

stubs

The classifier to use by default in ivy co-ordinates for a stub.

stubrunner.cloud.consul.enabled

true

Whether to enable stubs registration in Consul.

stubrunner.cloud.delegate.enabled

true

Whether to enable DiscoveryClient’s Stub Runner implementation.

stubrunner.cloud.enabled

true

Whether to enable Spring Cloud support for Stub Runner.

stubrunner.cloud.eureka.enabled

true

Whether to enable stubs registration in Eureka.

stubrunner.cloud.ribbon.enabled

true

Whether to enable Stub Runner’s Ribbon integration.

stubrunner.cloud.stubbed.discovery.enabled

true

Whether Service Discovery should be stubbed for Stub Runner. If set to false, stubs will get registered in real service discovery.

stubrunner.cloud.zookeeper.enabled

true

Whether to enable stubs registration in Zookeeper.

stubrunner.consumer-name

 

You can override the default {@code spring.application.name} of this field by setting a value to this parameter.

stubrunner.delete-stubs-after-test

true

If set to {@code false} will NOT delete stubs from a temporary folder after running tests

stubrunner.ids

[]

The ids of the stubs to run in "ivy" notation ([groupId]:artifactId:[version]:[classifier][:port]). {@code groupId}, {@code classifier}, {@code version} and {@code port} can be optional.

stubrunner.ids-to-service-ids

 

Mapping of Ivy notation based ids to serviceIds inside your application Example "a:b" → "myService" "artifactId" → "myOtherService"

stubrunner.integration.enabled

true

Whether to enable Stub Runner integration with Spring Integration.

stubrunner.mappings-output-folder

 

Dumps the mappings of each HTTP server to the selected folder

stubrunner.max-port

15000

Max value of a port for the automatically started WireMock server

stubrunner.min-port

10000

Min value of a port for the automatically started WireMock server

stubrunner.password

 

Repository password

stubrunner.properties

 

Map of properties that can be passed to custom {@link org.springframework.cloud.contract.stubrunner.StubDownloaderBuilder}

stubrunner.proxy-host

 

Repository proxy host

stubrunner.proxy-port

 

Repository proxy port

stubrunner.stream.enabled

true

Whether to enable Stub Runner integration with Spring Cloud Stream.

stubrunner.stubs-mode

 

Pick where the stubs should come from

stubrunner.stubs-per-consumer

false

Should only stubs for this particular consumer get registered in HTTP server stub.

stubrunner.username

 

Repository username

wiremock.rest-template-ssl-enabled

false

 

wiremock.server.files

 
 

wiremock.server.https-port

-1

 

wiremock.server.port

8080

 

wiremock.server.stubs

 
\ No newline at end of file diff --git a/Greenwich.M3/spring-cloud.xml b/Greenwich.M3/spring-cloud.xml index b8e6713e..58264bed 100644 --- a/Greenwich.M3/spring-cloud.xml +++ b/Greenwich.M3/spring-cloud.xml @@ -27341,6 +27341,789 @@ EXPOSE 8080 + +Spring Cloud Kubernetes + +Why do you need Spring Cloud Kubernetes? +Spring Cloud Kubernetes provide Spring Cloud common interfaces implementations to consume Kubernetes native services. +The main objective of the projects provided in this repository is to facilitate the integration of Spring Cloud/Spring Boot applications running inside Kubernetes. + + + +DiscoveryClient for Kubernetes + +This project provides an implementation of Discovery Client +for Kubernetes. +This allows you to query Kubernetes endpoints (see services) by name. +A service is typically exposed by the Kubernetes API server as a collection of endpoints which represent http, https addresses that a client can +access from a Spring Boot application running as a pod. This discovery feature is also used by the Spring Cloud Kubernetes Ribbon project +to fetch the list of the endpoints defined for an application to be load balanced. +This is something that you get for free just by adding the following dependency inside your project: +<dependency> + <groupId>org.springframework.cloud</groupId> + <artifactId>spring-cloud-starter-kubernetes</artifactId> + <version>${latest.version}</version> +</dependency> +To enable loading of the DiscoveryClient, add @EnableDiscoveryClient to the according configuration or application class like this: +@SpringBootApplication +@EnableDiscoveryClient +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} +Then you can inject the client in your code simply by: +@Autowired +private DiscoveryClient discoveryClient; +If for any reason you need to disable the DiscoveryClient you can simply set the following property in application.properties: +spring.cloud.kubernetes.discovery.enabled=false +Some Spring Cloud components use the DiscoveryClient in order to obtain info about the local service instance. For +this to work you need to align the Kubernetes service name with the spring.application.name property. + + + +Kubernetes PropertySource implementations + +The most common approach to configure your Spring Boot application is to create an application.properties|yaml or +an application-profile.properties|yaml file containing key-value pairs providing customization values to your +application or Spring Boot starters. Users may override these properties by specifying system properties or environment +variables. + + +ConfigMap PropertySource +Kubernetes provides a resource named ConfigMap to externalize the +parameters to pass to your application in the form of key-value pairs or embedded application.properties|yaml files. +The Spring Cloud Kubernetes Config project makes Kubernetes `ConfigMap`s available +during application bootstrapping and triggers hot reloading of beans or Spring context when changes are detected on +observed `ConfigMap`s. +The default behavior is to create a ConfigMapPropertySource based on a Kubernetes ConfigMap which has metadata.name of either the name of +your Spring application (as defined by its spring.application.name property) or a custom name defined within the +bootstrap.properties file under the following key spring.cloud.kubernetes.config.name. +However, more advanced configuration are possible where multiple ConfigMaps can be used +This is made possible by the spring.cloud.kubernetes.config.sources list. +For example one could define the following ConfigMaps +spring: + application: + name: cloud-k8s-app + cloud: + kubernetes: + config: + name: default-name + namespace: default-namespace + sources: + # Spring Cloud Kubernetes will lookup a ConfigMap named c1 in namespace default-namespace + - name: c1 + # Spring Cloud Kubernetes will lookup a ConfigMap named default-name in whatever namespace n2 + - namespace: n2 + # Spring Cloud Kubernetes will lookup a ConfigMap named c3 in namespace n3 + - namespace: n3 + name: c3 +In the example above, it spring.cloud.kubernetes.config.namespace had not been set, +then the ConfigMap named c1 would be looked up in the namespace that the application runs +Any matching ConfigMap that is found, will be processed as follows: + + +apply individual configuration properties. + + +apply as yaml the content of any property named application.yaml + + +apply as properties file the content of any property named application.properties + + +The single exception to the aforementioned flow is when the ConfigMap contains a single key that indicates +the file is a YAML or Properties file. In that case the name of the key does NOT have to be application.yaml or +application.properties (it can be anything) and the value of the property will be treated correctly. +This features facilitates the use case where the ConfigMap was created using something like: +kubectl create configmap game-config --from-file=/path/to/app-config.yaml +Example: +Let’s assume that we have a Spring Boot application named demo that uses properties to read its thread pool +configuration. + + +pool.size.core + + +pool.size.maximum + + +This can be externalized to config map in yaml format: +kind: ConfigMap +apiVersion: v1 +metadata: + name: demo +data: + pool.size.core: 1 + pool.size.max: 16 +Individual properties work fine for most cases but sometimes embedded yaml is more convenient. In this case we will +use a single property named application.yaml to embed our yaml: + ```yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: demo +data: + application.yaml: |- + pool: + size: + core: 1 + max:16 +The following also works: + + ```yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: demo +data: + custom-name.yaml: |- + pool: + size: + core: 1 + max:16 +Spring Boot applications can also be configured differently depending on active profiles which will be merged together +when the ConfigMap is read. It is possible to provide different property values for different profiles using an +application.properties|yaml property, specifying profile-specific values each in their own document +(indicated by the --- sequence) as follows: +kind: ConfigMap +apiVersion: v1 +metadata: + name: demo +data: + application.yml: |- + greeting: + message: Say Hello to the World + farewell: + message: Say Goodbye + --- + spring: + profiles: development + greeting: + message: Say Hello to the Developers + farewell: + message: Say Goodbye to the Developers + --- + spring: + profiles: production + greeting: + message: Say Hello to the Ops +In the above case, the configuration loaded into your Spring Application with the development profile will be: + greeting: + message: Say Hello to the Developers + farewell: + message: Say Goodbye to the Developers +whereas if the production profile is active, the configuration will be: + greeting: + message: Say Hello to the Ops + farewell: + message: Say Goodbye +If both profiles are active, the property which appears last within the configmap will overwrite preceding values. +To tell to Spring Boot which profile should be enabled at bootstrap, a system property can be passed to the Java +command launching your Spring Boot application using an env variable that you will define with the OpenShift +DeploymentConfig or Kubernetes ReplicationConfig resource file as follows: +apiVersion: v1 +kind: DeploymentConfig +spec: + replicas: 1 + ... + spec: + containers: + - env: + - name: JAVA_APP_DIR + value: /deployments + - name: JAVA_OPTIONS + value: -Dspring.profiles.active=developer +Notes: +- check the security configuration section, to access config maps from inside a pod you need to have the correct +Kubernetes service accounts, roles and role bindings. + +Properties: + + + + + + + +Name +Type +Default +Description + + + + +spring.cloud.kubernetes.config.enableApi +Boolean +true +Enable/Disable consuming ConfigMaps via APIs + + + + +spring.cloud.kubernetes.config.enabled +Boolean +true +Enable Secrets PropertySource + + +spring.cloud.kubernetes.config.name +String +${spring.application.name} +Sets the name of ConfigMap to lookup + + +spring.cloud.kubernetes.config.namespace +String +Client namespace +Sets the Kubernetes namespace where to lookup + + +spring.cloud.kubernetes.config.paths +List +null +Sets the paths where ConfigMaps are mounted + + + +
+
+ +Secrets PropertySource +Kubernetes has the notion of [Secrets](https://kubernetes.io/docs/concepts/configuration/secret/) for storing +sensitive data such as password, OAuth tokens, etc. This project provides integration with Secrets to make secrets +accessible by Spring Boot applications. This feature can be explicitly enabled/disabled using the spring.cloud.kubernetes.secrets.enabled property. +The SecretsPropertySource when enabled will lookup Kubernetes for Secrets from the following sources: +1. reading recursively from secrets mounts +2. named after the application (as defined by spring.application.name) +3. matching some labels +Please note that by default, consuming Secrets via API (points 2 and 3 above) is not enabled for security reasons + and it is recommend that containers share secrets via mounted volumes. +If the secrets are found their data is made available to the application. +Example: +Let’s assume that we have a spring boot application named demo that uses properties to read its database +configuration. We can create a Kubernetes secret using the following command: +oc create secret generic db-secret --from-literal=username=user --from-literal=password=p455w0rd +This would create the following secret (shown using oc get secrets db-secret -o yaml): +apiVersion: v1 +data: + password: cDQ1NXcwcmQ= + username: dXNlcg== +kind: Secret +metadata: + creationTimestamp: 2017-07-04T09:15:57Z + name: db-secret + namespace: default + resourceVersion: "357496" + selfLink: /api/v1/namespaces/default/secrets/db-secret + uid: 63c89263-6099-11e7-b3da-76d6186905a8 +type: Opaque +Note that the data contains Base64-encoded versions of the literal provided by the create command. +This secret can then be used by your application for example by exporting the secret’s value as environment variables: +apiVersion: v1 +kind: Deployment +metadata: + name: ${project.artifactId} +spec: + template: + spec: + containers: + - env: + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: db-secret + key: username + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: db-secret + key: password +You can select the Secrets to consume in a number of ways: + + +By listing the directories where secrets are mapped: +` +-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets/db-secret,etc/secrets/postgresql +` +If you have all the secrets mapped to a common root, you can set them like: +``` +-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets +``` + + +By setting a named secret: +` +-Dspring.cloud.kubernetes.secrets.name=db-secret +` + + +By defining a list of labels: +` +-Dspring.cloud.kubernetes.secrets.labels.broker=activemq +-Dspring.cloud.kubernetes.secrets.labels.db=postgresql +` + + + +Properties: + + + + + + + +Name +Type +Default +Description + + + + +spring.cloud.kubernetes.secrets.enableApi +Boolean +false +Enable/Disable consuming secrets via APIs (examples 2 and 3) + + + + +spring.cloud.kubernetes.secrets.enabled +Boolean +true +Enable Secrets PropertySource + + +spring.cloud.kubernetes.secrets.name +String +${spring.application.name} +Sets the name of the secret to lookup + + +spring.cloud.kubernetes.secrets.namespace +String +Client namespace +Sets the Kubernetes namespace where to lookup + + +spring.cloud.kubernetes.secrets.labels +Map +null +Sets the labels used to lookup secrets + + +spring.cloud.kubernetes.secrets.paths +List +null +Sets the paths where secrets are mounted (example 1) + + + +
+Notes: +- The property spring.cloud.kubernetes.secrets.labels behaves as defined by +Map-based binding. +- The property spring.cloud.kubernetes.secrets.paths behaves as defined by +Collection-based binding. +- Access to secrets via API may be restricted for security reasons, the preferred way is to mount secret to the POD. +Example of application using secrets (though it hasn’t been updated to use the new spring-cloud-kubernetes project): +spring-boot-camel-config +
+ +PropertySource Reload +Some applications may need to detect changes on external property sources and update their internal status to reflect the new configuration. +The reload feature of Spring Cloud Kubernetes is able to trigger an application reload when a related ConfigMap or +Secret changes. +This feature is disabled by default and can be enabled using the configuration property spring.cloud.kubernetes.reload.enabled=true + (eg. in the application.properties file). +The following levels of reload are supported (property spring.cloud.kubernetes.reload.strategy): +- refresh (default): only configuration beans annotated with @ConfigurationProperties or @RefreshScope are reloaded. +This reload level leverages the refresh feature of Spring Cloud Context. +- restart_context: the whole Spring ApplicationContext is gracefully restarted. Beans are recreated with the new configuration. +- shutdown: the Spring ApplicationContext is shut down to activate a restart of the container. + When using this level, make sure that the lifecycle of all non-daemon threads is bound to the ApplicationContext + and that a replication controller or replica set is configured to restart the pod. +Example: +Assuming that the reload feature is enabled with default settings (refresh mode), the following bean will be refreshed when the config map changes: +@Configuration +@ConfigurationProperties(prefix = "bean") +public class MyConfig { + + private String message = "a message that can be changed live"; + + // getter and setters + +} +A way to see that changes effectively happen is creating another bean that prints the message periodically. +@Component +public class MyBean { + + @Autowired + private MyConfig config; + + @Scheduled(fixedDelay = 5000) + public void hello() { + System.out.println("The message is: " + config.getMessage()); + } +} +The message printed by the application can be changed using a ConfigMap as follows: +apiVersion: v1 +kind: ConfigMap +metadata: + name: reload-example +data: + application.properties: |- + bean.message=Hello World! +Any change to the property named bean.message in the ConfigMap associated to the pod will be reflected in the +output. More generally speaking, changes associated to properties prefixed with the value defined by the prefix +field of the @ConfigurationProperties annotation will be detected and reflected in the application. +[Associating a ConfigMap to a pod](#configmap-propertysource) is explained above. +The full example is available in [spring-cloud-kubernetes-reload-example](spring-cloud-kubernetes-examples/kubernetes-reload-example). +The reload feature supports two operating modes: +- event (default): watches for changes in config maps or secrets using the Kubernetes API (web socket). +Any event will produce a re-check on the configuration and a reload in case of changes. +The view role on the service account is required in order to listen for config map changes. A higher level role (eg. edit) is required for secrets +(secrets are not monitored by default). +- polling: re-creates the configuration periodically from config maps and secrets to see if it has changed. +The polling period can be configured using the property spring.cloud.kubernetes.reload.period and defaults to 15 seconds. +It requires the same role as the monitored property source. +This means, for example, that using polling on file mounted secret sources does not require particular privileges. + +Properties: + + + + + + + +Name +Type +Default +Description + + + + +spring.cloud.kubernetes.reload.period +Long +15000 +The period in milliseconds for verifying changes when using the polling strategy + + + + +spring.cloud.kubernetes.reload.enabled +Boolean +false +Enables monitoring of property sources and configuration reload + + +spring.cloud.kubernetes.reload.monitoring-config-maps +Boolean +true +Allow monitoring changes in config maps + + +spring.cloud.kubernetes.reload.monitoring-secrets +Boolean +false +Allow monitoring changes in secrets + + +spring.cloud.kubernetes.reload.strategy +Enum +refresh +The strategy to use when firing a reload (refresh, restart_context, shutdown) + + +spring.cloud.kubernetes.reload.mode +Enum +event +Specifies how to listen for changes in property sources (event, polling) + + + +
+Notes: +- Properties under spring.cloud.kubernetes.reload. should not be used in config maps or secrets: changing such properties at runtime may lead to unexpected results; +- Deleting a property or the whole config map does not restore the original state of the beans when using the refresh level. +
+
+ +Ribbon discovery in Kubernetes + +Spring Cloud client applications calling a microservice should be interested on relying on a client load-balancing +feature in order to automatically discover at which endpoint(s) it can reach a given service. This mechanism has been +implemented within the [spring-cloud-kubernetes-ribbon](spring-cloud-kubernetes-ribbon/pom.xml) project where a +Kubernetes client will populate a Ribbon ServerList containing information +about such endpoints. +The implementation is part of the following starter that you can use by adding its dependency to your pom file: +<dependency> + <groupId>org.springframework.cloud</groupId> + <artifactId>spring-cloud-starter-kubernetes-netflix</artifactId> + <version>${latest.version}</version> +</dependency> +When the list of the endpoints is populated, the Kubernetes client will search the registered endpoints living in +the current namespace/project matching the service name defined using the Ribbon Client annotation: +@RibbonClient(name = "name-service") +You can configure Ribbon’s behavior by providing properties in your application.properties (via your application’s +dedicated ConfigMap) using the following format: <name of your service>.ribbon.<Ribbon configuration key> where: + + +<name of your service> corresponds to the service name you’re accessing over Ribbon, as configured using the +@RibbonClient annotation (e.g. name-service in the example above) + + +<Ribbon configuration key> is one of the Ribbon configuration key defined by +Ribbon’s CommonClientConfigKey class + + +Additionally, the spring-cloud-kubernetes-ribbon project defines two additional configuration keys to further +control how Ribbon interacts with Kubernetes. In particular, if an endpoint defines multiple ports, the default +behavior is to use the first one found. To select more specifically which port to use, in a multi-port service, use +the PortName key. If you want to specify in which Kubernetes' namespace the target service should be looked up, use +the KubernetesNamespace key, remembering in both instances to prefix these keys with your service name and +ribbon prefix as specified above. +Examples that are using this module for ribbon discovery are: + + +Spring Cloud Circuitbreaker and Ribbon + + +fabric8-quickstarts - Spring Boot - Ribbon + + +Kubeflix - LoanBroker - Bank + + +Note: The Ribbon discovery client can be disabled by setting this key within the application properties file +spring.cloud.kubernetes.ribbon.enabled=false. + + + +Kubernetes Awareness + +All of the features described above will work equally well regardless of whether your application is running inside +Kubernetes or not. This is really helpful for development and troubleshooting. +From a development point of view, this is really helpful as you can start your Spring Boot application and debug one +of the modules part of this project. It is not required to deploy it in Kubernetes +as the code of the project relies on the +[Fabric8 Kubernetes Java client](https://github.com/fabric8io/kubernetes-client) which is a fluent DSL able to +communicate using http protocol to the REST API of Kubernetes Server. + + +Kubernetes Profile Autoconfiguration +When the application runs as a pod inside Kubernetes a Spring profile named kubernetes will automatically get activated. +This allows the developer to customize the configuration, to define beans that will be applied when the Spring Boot application is deployed +within the Kubernetes platform (e.g. different dev and prod configuration). + + + +Pod Health Indicator + +Spring Boot uses HealthIndicator to expose info about the health of an application. +That makes it really useful for exposing health related information to the user and are also a good fit for use as readiness probes. +The Kubernetes health indicator which is part of the core module exposes the following info: + + +pod name, ip address, namespace, service account, node name and its ip address + + +flag that indicates if the Spring Boot application is internal or external to Kubernetes + + + + + +Leader Election + +<TBD> + + + +Security Configurations inside Kubernetes + +Namespace +Most of the components provided in this project need to know the namespace. For Kubernetes (1.3+) the namespace is made available to pod as part of the service account secret and automatically detected by the client. +For earlier version it needs to be specified as an env var to the pod. A quick way to do this is: +env: +- name: "KUBERNETES_NAMESPACE" + valueFrom: + fieldRef: + fieldPath: "metadata.namespace" + + +Service Account +For distros of Kubernetes that support more fine-grained role-based access within the cluster, you need to make sure a pod that runs with spring-cloud-kubernetes has access to the Kubernetes API. +For any service accounts you assign to a deployment/pod, you need to make sure it has the correct roles. For example, you can add cluster-reader permissions to your default service account depending on the project you’re in: + + + +Examples + +List of examples using these projects: +<TBD> + + + +Other Resources + +Building +
+Basic Compile and Test +To build the source you will need to install JDK 1.7. +Spring Cloud uses Maven for most build-related activities, and you +should be able to get off the ground quite quickly by cloning the +project you are interested in and typing +$ ./mvnw install + +You can also install Maven (>=3.3.3) yourself and run the mvn command +in place of ./mvnw in the examples below. If you do that you also +might need to add -P spring if your local Maven settings do not +contain repository declarations for spring pre-release artifacts. + + +Be aware that you might need to increase the amount of memory +available to Maven by setting a MAVEN_OPTS environment variable with +a value like -Xmx512m -XX:MaxPermSize=128m. We try to cover this in +the .mvn configuration, so if you find you have to do it to make a +build succeed, please raise a ticket to get the settings added to +source control. + +For hints on how to build the project look in .travis.yml if there +is one. There should be a "script" and maybe "install" command. Also +look at the "services" section to see if any services need to be +running locally (e.g. mongo or rabbit). Ignore the git-related bits +that you might find in "before_install" since they’re related to setting git +credentials and you already have those. +The projects that require middleware generally include a +docker-compose.yml, so consider using +Docker Compose to run the middeware servers +in Docker containers. See the README in the +scripts demo +repository for specific instructions about the common cases of mongo, +rabbit and redis. + +If all else fails, build with the command from .travis.yml (usually +./mvnw install). + +
+
+Documentation +The spring-cloud-build module has a "docs" profile, and if you switch +that on it will try to build asciidoc sources from +src/main/asciidoc. As part of that process it will look for a +README.adoc and process it by loading all the includes, but not +parsing or rendering it, just copying it to ${main.basedir} +(defaults to $../../../.., i.e. the root of the project). If there are +any changes in the README it will then show up after a Maven build as +a modified file in the correct place. Just commit it and push the change. +
+
+Working with the code +If you don’t have an IDE preference we would recommend that you use +Spring Tools Suite or +Eclipse when working with the code. We use the +m2eclipse eclipse plugin for maven support. Other IDEs and tools +should also work without issue as long as they use Maven 3.3.3 or better. +
+Importing into eclipse with m2eclipse +We recommend the m2eclipse eclipse plugin when working with +eclipse. If you don’t already have m2eclipse installed it is available from the "eclipse +marketplace". + +Older versions of m2e do not support Maven 3.3, so once the +projects are imported into Eclipse you will also need to tell +m2eclipse to use the right profile for the projects. If you +see many different errors related to the POMs in the projects, check +that you have an up to date installation. If you can’t upgrade m2e, +add the "spring" profile to your settings.xml. Alternatively you can +copy the repository settings from the "spring" profile of the parent +pom into your settings.xml. + +
+
+Importing into eclipse without m2eclipse +If you prefer not to use m2eclipse you can generate eclipse project metadata using the +following command: +$ ./mvnw eclipse:eclipse +The generated eclipse projects can be imported by selecting import existing projects +from the file menu. +
+
+
+ +Contributing +Spring Cloud is released under the non-restrictive Apache 2.0 license, +and follows a very standard Github development process, using Github +tracker for issues and merging pull requests into master. If you want +to contribute even something trivial please do not hesitate, but +follow the guidelines below. +
+Sign the Contributor License Agreement +Before we accept a non-trivial patch or pull request we will need you to sign the +Contributor License Agreement. +Signing the contributor’s agreement does not grant anyone commit rights to the main +repository, but it does mean that we can accept your contributions, and you will get an +author credit if we do. Active contributors might be asked to join the core team, and +given the ability to merge pull requests. +
+
+Code of Conduct +This project adheres to the Contributor Covenant code of +conduct. By participating, you are expected to uphold this code. Please report +unacceptable behavior to spring-code-of-conduct@pivotal.io. +
+
+Code Conventions and Housekeeping +None of these is essential for a pull request, but they will all help. They can also be +added after the original pull request but before a merge. + + +Use the Spring Framework code format conventions. If you use Eclipse +you can import formatter settings using the +eclipse-code-formatter.xml file from the +Spring +Cloud Build project. If using IntelliJ, you can use the +Eclipse Code Formatter +Plugin to import the same file. + + +Make sure all new .java files to have a simple Javadoc class comment with at least an +@author tag identifying you, and preferably at least a paragraph on what the class is +for. + + +Add the ASF license header comment to all new .java files (copy from existing files +in the project) + + +Add yourself as an @author to the .java files that you modify substantially (more +than cosmetic changes). + + +Add some Javadocs and, if you change the namespace, some XSD doc elements. + + +A few unit tests would help a lot as well — someone has to do it. + + +If no-one else is using your branch, please rebase it against the current master (or +other target branch in the main project). + + +When writing a commit message please follow these conventions, +if you are fixing an existing issue please add Fixes gh-XXXX at the end of the commit +message (where XXXX is the issue number). + + +
+
+
Appendix: Compendium of Configuration Properties