http plugin

The http plugin calls a REST API over http/https on component instances.

Note: the http plugin currently works only with ec2-asg as the core plugin. If you are using the docker or docker-swarm core plugin, please use the http probe instead. Probes are attached to the service network of a target component and can therefore be used to access docker container instances using these core plugins.

The http plugin supports the following actions:

  • get - perform a HTTP GET
  • post - perform a HTTP POST
  • get_ok - try GET and keep retrying until successful or times out (readiness check/wait)

The following arguments can be defined for the actions:

  • schema - URL schema to use: http (default) or https
  • port - port number, default is based on schema (80 for http, 443 for https)
  • path - URL path relative to host; e.g., 'healthz' or '/healthz'; '/' is allowed but not required (default '/')
  • data - string containing JSON data to pass on POST (default: no data)
  • ok_codes - comma-separated list of status codes to be considered ok (e.g., "200,404"). If empty, the standard OK codes are assumed
  • timeout - operation timeout, in seconds (default 120):
    • for get and post: maximum time to connect and get the first response byte
    • for get_ok: how long to keep retrying to get any of the ok_codes (success)
  • verify - disable SSL certifcave verification or set an alternate cert authority file/directory. If verify is set to 0, cert. verification is disabled. This is needed in most cases when using https because the plugin makes connections to the targets by IP address and does not know the hostname, while the certificates are typically created for a hostname and not for an IP address. This argument can also be set to the name of a root CA file (in PEM form) or a directory containing a CA files bundle. Just as with not setting verify at all (or setting it to '1'), this variant is useful only if the server certificate is for the IP address or for '*'. If schema is not https, verify is ignored.

Note: selector is a deprecated argument that is no longer required. If you are migrating models from an older version of Skopos (up to an including 0.14), you can simply remove this argument. If it was the only argument, you can remove the whole arguments attribute.

Examples

Here are a few examples in the Skopos model "injected step" format:

components:
  appsrv:
    ...
    lifecycle:

      quality_probe:
        steps:
        - call:
            plugin: http
            action: get
            label: "check health over https"
            arguments: { schema: "https", path: "/healthz" }
        - call:
            plugin: http
            action: get
            label: "check health on alternate port"
            arguments: { port: 8080, path: "/healthz" }
        - call:
            plugin: http
            action: get
            label: "check for any response with short timeout"
            arguments: { path: "/anypath", ok_codes: "200,404", timeout: 5 }
        - call:
            plugin: http
            action: get_ok
            label: "wait until health check OK, retrying with timeout"
            arguments: { port: 8080, path: "/healthz", timeout: 300 }

      service_discovery_detach:
        - call:
            plugin: http
            action: post
            label: "enter maintance mode"  # using POST and post data (JSON-encoding)
            arguments: { port: 8080, path: "/admin/maintenance_mode", data: '{ "value":"1" }' }

Configuration

This plugin has no configuration settings