The following instructions apply to both Docker-based and Kubernetes-based installations. The Amalgam8 Registry supports a number of configuration options, most of which are set through environment variables. The environment variables can be set via command line flags as well.

The following environment variables are available. All of them are optional.

Environment Variable Flag Name Description Default Value
A8_API_PORT –api_port API port number 8080
A8_LOG_LEVEL –log_level Logging level. Supported values are: debug, info, warn, error, fatal, panic debug
A8_LOG_FORMAT –log_format Logging format. Supported values are: text, json, logstash text
A8_NAMESPACE_CAPACITY –namespace_capacity maximum number of instances that may be registered in a namespace -1 (no capacity limit)
A8_DEFAULT_TTL –default_ttl Registry default instance time-to-live (TTL) 30s
A8_MIN_TTL –min_ttl Minimum TTL that may be specified during registration 10s
A8_MAX_TTL –max_ttl Maximum TTL that may be specified during registration 10m
A8_AUTH_MODE –auth_mode Authentication modes. Supported values are: trusted, jwt none (no isolation)
A8_JWT_SECRET –jwt_secret Secret key for JWT authentication none (must be set if A8_AUTH_MODE is jwt)
A8_REQUIRE_HTTPS –require_https Require clients to use HTTPS for API calls false

Authentication and Multi-tenancy

The Amalgam8 Registry supports multi-tenancy by isolating each tenant into a separate namespace. Refer to the Authentication section for further details.

Clustering

Amalgam8 Registry uses a memory only storage solution, without persistency (although different storage backends can be implemented). To provide HA and scale, the Registry can be run in a cluster and supports replication between cluster members. To use a persistent storage backend, see the section Persistent Backend Storage.

Peer discovery currently uses a shared volume between all members. The volume must be mounted RW into each container. We are exploring alternative discovery mechanisms.

Environment Variable Flag Name Description Default Value
A8_CLUSTER_SIZE –cluster_size Cluster minimal healthy size, peers detecting a lower value will log errors 1 (standalone)
A8_CLUSTER_DIR –cluster_dir Filesystem directory for cluster membership none, must be specified for clustering to work
A8_REPLICATION –replication Enable replication between cluster members false
A8_REPLICATION_PORT –replication_port Replication port number 6100
A8_SYNC_TIMEOUT –sync_timeout Timeout for establishing connections to peers for replication 30s

Persistent Backend Storage using Redis

Amalgam8 Registry supports a Redis backend for storing instance information as an alternative to the memory only clustering and replication option.

Environment Variable Flag Name Description Default Value
A8_STORE –store Backing store to use to persist Registry instance information. Supported values are: redis, inmem inmem (in memory)
A8_STORE_ADDRESS –store_address Address of the Redis server none, must be specified to use a Redis store
A8_STORE_PASSWORD –store_password Password for the Redis backend none, assumes no password set for the Redis server

Catalog Extensions

The Amalgam8 Registry supports read-only catalogs extensions. The content of each catalog extension (e.g., Kubernetes, Docker-Swarm, Eureka, FileSystem, etc) is read by the Registry and returned to the user along with the content of the Registry itself.

Environment Variable Flag Name Description Default Value
A8_K8S_URL –k8s_url Enable kubernetes catalog and specify the API server (none)
A8_K8S_TOKEN –k8s_token Kubernetes API token (none)
A8_EUREKA_URL –eureka_url Enable eureka catalog and specify the API server. Multiple API servers can be specified using multiple flags (none)
A8_FS_CATALOG –fs_catalog Enable FileSystem catalog and specify the directory of the config files. The format of the file names in the directory should be <namespace>.conf. See File Catalog for more information (none)