- A set of new
microservice_node...
base images added, including:microservice_node16
(based onmicroservice
).microservice_node14_focal
(based onmicroservice_focal
).microservice_node16_focal
(based onmicroservice_focal
).
We do best effort to support docker versions 1.12.0 - 20.10.4 with this release.
- Fixed
armada ssh
command for docker >= 19.03.14.
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
- Fixed
armada diagnose
command formicroservice_focal
images on older armada versions by adding aliaspython
-->python3
in those images.
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
- Fix armada installation for docker >= 18.09.0.
- Fix pip locale problems during armada installation.
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
- A new
microservice_focal
(ubuntu20.04) base image added. It's version bumped to2.11.0
. - A new
microservice_python3_focal
base image added (based onmicroservice_focal
). - Armada built on top of the
microservice_python3_focal
base image. It's version bumped to2.11.0
. - Armada commands migrated to python3. Python2 dependency dropped.
Haproxy
version upgraded from1.8
to2.2
.- Dropping support for Amazon Linux 1.
- RPM package of Armada works fine with Amazon Linux 2.
- Fix broken dependency (Falcon Json Middleware) for backend.
- Allow binding armada to interfaces with more than one IP address.
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
- Python3 version in base image
microservice_python3
has been upgraded frompython3.6
topython3.7
. - Don't build deprecated
microservice_python3.5
. - Armada internal API is now running on
python3.7
. - By default don't show logs from garbage collector in
microservice_node*
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
- Fix microservice image not starting.
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
- Add
nodejs
v10.x
, remove unsupportedv4.x
version.
- Fix generating
CONFIG_PATH
on renamed microservices.
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
-Fix stopping/recovering services saved to KV-store using ship IP instead of name.
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
- Added new microservice_flask base image
- Added flask template
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
- Fix pushing images to remote dockyards with passwords.
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
armada build
supports multi-staged Dockerfiles.- Base images in
armada build
may, and should now use explicit dockyard/docker registry addresses, e.g.:FROM docker.io/golang:1.7.3
, orFROM dockyard.armada.sh/microservice
.
- Set
TimeoutStartSec=30min
in systemd unit to prevent timeouts - Decreased number of Consul queries executed during saving containers in KV store
- Save missing containers in KV store
- If initial recovery is not completed after 10 minutes since armada start, armada has status
warning
- Fix netcat version on ArchLinux
- Fix filtering crashed services by name
We do best effort to support docker versions 1.12.0 - 17.12.1 with this release.
- Build tar.xz (pacman) linux package.
- Fix stopping armada service, caused ship lefts cluster
- Fix getting docker version in docker > 17.10
We do best effort to support docker versions 1.12.0 - 17.10.0 with this release.
- Increase uwsgi timeout (aka harakiri) from 11s to 31s.
- Set uwsgi socket-timeout to 31s.
- Use 3 threads per uwsgi process instead of 2.
- Don't run http worker as separate process in uwsgi.
- Microservice image is now building from deb package.
- More verbose logs.
- Split unit tests for command (python 2) and backend (python 3).
- Fix bug with updating microservice_version in
armada list
for microservices with subservices.
We do best effort to support docker versions 1.12.0 - 17.10.0 with this release.
- New API endpoint
/v1/local/ports/{microservice_id}
for microservices, available inside the container.- It returns the mapping of local ports in container to external ports on host. E.g:
$ curl 172.17.0.1:8900/v1/local/ports/f30690a0f8af {"80/tcp": "4261/tcp"}
- New flag in
armada list
:--microservice-version
. It shows the version of microservice package inside the container. Works only for microservices based on version >= 2.5.0.
- Armada internal API is now running on python3 + uwsgi + falcon.
- New internal API for microservices (registering service, reporting health checks).
- It should not change behavior. This is only a step towards removing docker and consul dependencies in microservices.
- Upgrade
requests
pip package inmicroservice
base image from 2.9.1 to 2.18.4.
We do best effort to support docker versions 1.12.0 - 17.10.0 with this release.
- Bump
python3
to3.6.4
inmicroservice_python3
- Python scripts in
microservice
base image are now a proper python package, and provide commandmicroservice
.- This is the new suggested way of calling microservice scripts:
microservice require
instead ofpython require_service.py
microservice register
instead ofpython register_in_service_discovery.py
- This is the new suggested way of calling microservice scripts:
- Upgrade haproxy in
microservice
base image from 1.7 to 1.8. - Remove unused address_adapter in microservice base image.
- Fix setting empty flags in
require_service.py
/microservice require
, i.e.--app_id=""
and--env=""
.
We do best effort to support docker versions 1.12.0 - 17.10.0 with this release.
- local-magellan, in microservice base image, besides of configuring haproxy dumps mapping of local port -> IP:port to
/var/opt/service_to_addresses.json
. E.g.
root@c1823ea048c5:/# cat /var/opt/service_to_addresses.json
{
"2000": [
"192.168.3.19:32822",
"192.168.3.19:32821"
]
}
We do best effort to support docker versions 1.12.0 - 17.10.0 with this release.
- Improve sorting in armada list for services with subservices
We do best effort to support docker versions 1.12.0 - 17.10.0 with this release.
- Add useful bash functions
atail
,acd
,actl
- useahelp
for more informations.
We do best effort to support docker versions 1.12.0 - 17.10.0 with this release.
- Add
IMAGE_NAME
environmental variable. - Compatibility with new docker binary location for versions 17.03 - 17.10. It makes remote
armada ssh/diagnose
work again in those docker versions. - Set default value of
CONFIG_DIR
to 'config', inmicroservice
base image. Hermes will automatically search for configs in 'config' directory in your service. - New command
alogs
available inmicroservice
base image. It opens up midnight commander with supervisor logs on the left pane and service source on the right pane. - Add bash completion for supervisorctl
- Add possibility to configure service requirements via hermes config. This allows us to require different services in different environments.
In base microservice image required_service.py will try to find
service_discovery.json
in config path. More info in docs
- Get rid of ugly
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
warnings showing up in remotearmada ssh/diagnose
invocations, after restarting/upgrading armada. - Get rid of ugly
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
warning in remotearmada ssh/diagnose
invocations. - Clean up code responsible for support of services built on
microservice
image older than v0.11.0 (2015-12-07) inarmada diagnose
.
- Fix
build-armada
andrestart-armada
development scripts to work outside of armada development vagrant as well. - Fix armada's health-check for validating if armada runtime settings have been restored, to work during development of armada.
We do best effort to support docker versions 1.12.0 - 17.05.0 with this release.
- Add customization of
max_old_space_size
in base nodejs microservices by settingMAX_OLD_SPACE_SIZE_MB
environmental variable. By defaultMAX_OLD_SPACE_SIZE_MB
=256 - Add
vim
tomicroservice
- Set build-time variables using
--build-arg
flag. - Build base nodejs microservices with currently supported
nodejs
version - v4, v6, v8 and v0.12.
armada develop
is now compatible with officialarmada-vagrant
boxes.armada stop
now supports stopping multiple servicesarmada list --quiet
returns only distinct container IDsapache2
is running in the foreground inmicroservice_php
, addinglogrotate
for log retention management.- Use template for building base
nodejs
images.
armada stop
can remove remaining services from removed ship
We do best effort to support docker versions 1.12.0 - 17.05.0 with this release.
HashiCorp Consul
downgraded to 0.7.5 version due to performance problems.
We do best effort to support docker versions 1.12.0 - 17.05.0 with this release.
armada-runner
script now supportsip
command insteadifconfig
androute
.armada-runner
can easliy bind local network interface from now.armada-runner
network interface autodetection when$default_interface
in/etc/default/armada
is empty or commented.armada-runner
network interface can be set statically in/etc/default/armada
and would not be changed even if not exists.- Removed
net-tools
from dependecies of installation packages. HashiCorp Consul
upgraded to 0.9.3 version.
We do best effort to support docker versions 1.12.0 - 17.05.0 with this release.
- EXPERIMENTAL:
armada-heal
script, for healing overloaded armada ships, is available inside of the armada container. Use with caution. Details: https://github.com/armadaplatform/armada-heal
- Exponentially increasing periods between recover retries.
- Internal refactoring of storing services data in consul.
- Use only docker to build armada packages
We do best effort to support docker versions 1.12.0 - 17.05.0 with this release.
- Dropped support for Docker <1.12.0
- Add hooks. Currently only
pre-stop
hook is available. Place your custom scripts under ./hooks/pre-stop/ directory to have them executed, when certain action occurs. - New command
armada develop
. It sets up the environment for development of given service, i.e. MICROSERVICE_NAME, so that service's name is implied in other armada commands. By default it mounts current working directory to container, and assigns sticky port from range 4000..4999, based on hash of service name, that should be easy to memorize. Exporting$MICROSERVICE_NAME
env variable is no longer recommended for development.
- Bump docker-py to 2.4.2
armada list --local
don't choose active instance among services registered with--single-active-instance
flag. This is to prevent unnecessary changes of active one between instances running on different ships.
We do best effort to support docker versions 1.6.0 - 17.05.0 with this release.
- Compatibility with docker versions 1.13.0 - 17.05.0.
armada build --squash
uses--squash
flag built into Docker (since 1.13), which is much faster and merges only the layers from currently built Dockerfile. To use it you need to turn on experimental flag in your Docker daemon: https://sreeninet.wordpress.com/2017/01/27/docker-1-13-experimental-features/
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Fix
armada list
when one of ships has version < 1.6.0
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Fix
armada list
when one of ships was renamed.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
-
Add
DISTRIB_CODENAME
=xenial andDISTRIB_RELEASE
=16.04 environmental variables. -
Add
less
andsudo
tomicroservice
-
You can now set retention for containers backups stored in
/opt/armada/saved_containers_backup/
. To do that, setSAVED_CONTAINERS_BACKUP_RETENTION=N
variable (whereN
is integer with number of days stored) in/etc/default/armada
on host.
- Don't install old
gcc
version inmicroservice_python3
. - Regular cleaning duplicated containers backup in
/opt/armada/saved_containers_backup/
. - Optimize armada list.
- Fix autoreloading armada development version.
- Fix clearing sessions files in PHP Docker container.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Fix node version in
microservice_node
image based on Ubuntu 16.04. - Add link to php config at
/etc/php5
inmicroservice_php
for compatibility with pre Ubuntu 16.04 images.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Show "Env" and "AppID" as separate columns, instead of "Tags", in
armada list
.
- Cron clear sessions files in PHP Docker container.
- Use Ubuntu 16.04 instead of 14.04 as base in
microservice
image. - Upgrade HAProxy from 1.6 to 1.7.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Update consul from v0.6.4 to v0.7.5.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- [EXPERIMENTAL] Stub of new command
armada deploy
. Currently this command is an alias forarmada restart -a
, however it accepts all arguments accepted byarmada run
command, as well as desired number of instances for given microservice. Eventually this command will be responsible for deploying new version of microservice: if it's already running then it will perform restart, otherwise it'll launch as many instances as needed to satisfy requirements.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Fix running
add-apt-repository
inmicroservice_python3
. - Fix building armada development version.
- Log exceptions in consul query.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Log info about removed kv entries in armada cleaner.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Add flag
--single-active-instance
toregister_in_service_discovery.py
script. Services registered with this flag will have at most one available (status 'passing' or 'warning') instance in armada service discovery mechanisms. The other instances will receive status 'standby'. - Add
-vv/--verbose
flag to all armada commands. armada shutdown
now removes by default previously joined ships from/opt/armada/runtime_settings.json
. Use--keep-joined
flag for old behavior.
- Fix building pip packages in
microservice_python3
. - Fixed cleaning crashed services on not promoted ships.
- Fix stop and restart of armada service on systemd.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Add
-vv/--verbose
flag toarmada create
. - Base image for services created using DotNET Core 1.0
- Template for sample "Hello, world!" REST service.
- Base image
microservice_python3.5
is now deprecated in favor of upgradedmicroservice_python3
with python3.6.
- Separated supervisor configs for
armada_agent
andregister_in_service_discovery
to make overriding the latter in services easier. - Python3 version in base image
microservice_python3
has been upgraded from python3.4 to python3.6.
- Fixed bug where restarting service started without
env
was settingMICROSERVICE_ENV
environment variable asenv
.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- You can now point path to Dockerfile in
armada build
using--file
flag (likedocker build
).
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Fixed bug where not recovered containers stayed with
recovering
status.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Fixed restarting crashed services.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Build deb, rpm and amazon linux package.
- Privilege mode of docker containers can be specified in
/etc/default/armada
.
- Fix keeping stopped services in
crashed
state afterarmada restart
.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Fixed stopping services in
started
state.
- Send request data to sentry, add tag ship_IP to events.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Fix getting services list when microservice_env is not set
- Disable timeout in systemd service
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Log errors to sentry. It can be enable by adding
sentry_url={url of project in sentry}
in/etc/default/armada
config file.
- Armada builds from base image with proper tag.
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- Fixed bug in
/list
endpoint in clusters with old backups in K/V store
We do best effort to support docker versions 1.6.0 - 1.12.1 with this release.
- New base image
microservice_node6
with node v6.
- Upgrade go in microservice_go base image from 1.5.3 to 1.6.3.
- Optimized
/list
endpoint - Removed Consul watch
checks
- Consul watch
keyprefix
narrowed down to local services - Set locales to UTF-8 version
- Generating unique ID for services while recovering
- Fixed autoreloading armada backed in vagrant environment
- Fixed detecting stop of armada service in systemd
- Fixed recovering containers
- Removing services from Consul K/V store while armada shutdown
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Storing service restart parameters and status in K/V store.
armada recover
by default will try recover crashed services from K/V store
- Ship names survive joining armada
- Ship names must be unique
armada diagnose
properly prints last health-check for services based on old microservice image, along with deprecation warning.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Ensure services based on old
microservice
image do not register themselves back in Consul duringarmada stop
.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Fixed an issue with
armada ssh
ignoring--local
flag. - Fixed KeyError exception issue when connecting to remote service.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
--env
parameterarmada run
by default takeMICROSERVICE_ENV
environment variable as value.
- Fixed restarting services which have been run using
MICROSERVICE_NAME
environment variable.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Added flag
-s/--squash
toarmada build
. With this option armada try to minimize service image via docker-squash.
- Fixed an issue with
armada ssh
not accepting container ids.
- Merge
run_health_checks.py
andregister_in_service_discovery.py
intoarmada_agent.py
in order to save resources, register_is_service_discovery.py is left for backward compatibility. - Changed timeout in
armada stop
from 10s to 60s until SIGKILL is sent to container main process.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Added service selection prompt to
armada ssh
. Whenever multiple matching services are found, user can easily select which instance they want to ssh into. - Added
--no-prompt
flag toarmada ssh
which disables prompting mechanism and results in error if multiple matching services are found. - Added
-l/--local
flag toarmada ssh
which limits matched services to local machine.
- Vagrant Use
socat
instead ofarmada-bind
to proxy insecure dockyard connection through localhost.
- Properly deregister crashed sub-services.
- Fixed a bug which caused
armada run
in development environment use 4999:80 port mapping, even if port 80 was explicitly overridden.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Fixed armada service on
systemd
init system.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Fixed critical bug with setting containers' config paths introduced in 1.3.0.
- Fixed critical bug with mounting containers' volumes introduced in 1.3.0.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
-
Optionally restrict possible config directories. By default root directory is mounted inside armada container in read-only mode, to verify existence of
--config
paths. This can be restricted by settingRESTRICT_CUSTOM_CONFIG_DIRS
variable to a specific path. (e.g. /home/user/configs) -
run
andrestart
commands can get IP address as '--ship' argument.
armada list
show services that should be running with additional statuses:recovering
not-recovered
if recovering was not successfulcrashed
for not running containersarmada stop
to remove service from list
- While default armada network interface is unavailable armada uses host default interface.
- Fixed logging of Armada CLI commands
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Fix
armada list
always assuming-l/--local
flag. - Revert old behavior in
armada list
that showed 'container_id' instead of 'microservice_id' in ID column.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Fix filtering by
app_id
inarmada list
. - Fix pyflakes issues.
- Fix installation of bash completion file.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Added autocomplete of armada commands, dockyard aliases, services and ships names.
- 'armada list' command support wildcards *, ?.
- Remove HTTP_PROXY header.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Fixed issue with unhandled exception during the installation process.
We do best effort to support docker versions 1.6.0 - 1.12.0 with this release.
- Added logging of Armada CLI
- Added support for docker 1.12.*
- After critical status of service health checks next check is run after 1s,2s,3s... until 10s or first pass of health checks.
- Enabled autoreload of Armada API in development Vagrant
Ahoy sailor!
🎉 🎂 Armada is celebrating one year anniversary! 🎂 🎉
Fair winds!
⚓
We do best effort to support docker versions 1.6.0 - 1.10.3 with this release.
🎈 Added indicator of current ship in 'armada info'.
🎈 Fix log file permission error.
🎈 Fix getting docker pid on centos7.
🎈 Validate response from armada_api.get('version').
🎈 Install armada pip package (with hermes) in microservice_python* base images.
We do best effort to support docker versions 1.6.0 - 1.10.3 with this release.
- Do not use local restart if --ship parameter is provided.
- Fix issue with fallback to the default dockyard alias if the -d options is not provided.
We do best effort to support docker versions 1.6.0 - 1.10.3 with this release.
- Fix displaying the information about the new version.
We do best effort to support docker versions 1.6.0 - 1.10.3 with this release.
Due to internal changes in Armada, all Armada agents within the same cluster need to be upgraded, otherwise
remote runs and restarts will not work, and armada info
may contain incorrect names. Ships' names will have to be set once again using armada name
command.
- Allow verbose output for
armada build
command. - Added images versioning. Since now it's possible to build, push and run services using
service_name:tag
notation or:tag
notation if theMICROSERVICE_NAME
env is provided. - Added warning about using outdated armada version. It can be disabled by adding the
check_updates=0
line to the/etc/default/armada
config file.
- Upgrade Consul from version 0.6.3 to 0.6.4.
- Store names of Armada ships in Consul's kv store.
armada name
does not restart Armada service anymore and is much faster. - After joining Armada agent to cluster, Armada will detect running Couriers there and fetch configuration from them.
- Fix build of
microservice_python3.5
base image.
- Retry after failure during stopping of Docker container.
- Fix bug with recovering multiple copies of the same service.
- Fix detection of Docker daemon start time, which could cause unnecessary recovery.
- Make sure python requests package is not updated in Armada service.
- Fix race condition in require_service.py, causing not registering service in local magellan.
- Update haproxy in microservice image (used by local magellan), from 1.5 to 1.6.
- Increase timeout to docker api from 7s to 11s.
- Hold version of python requests package to 2.9.1 in microservice image.
- Fixed checking for newest local image of service on restart in vagrant development environment.
- Fix import errors in couple of backend scripts.
- In vagrant for armada development (
Vagrantfile
in armada repository), the code used for armada CLI is now mounted from local workstation. - Moved armada installation script from armada-website repository to armada repository.
- Added OpenRC support (Contributed by ryneeverett).
- Fixed issue with passing arguments to
armada ssh
.
- Services can now be moved between ships in a cluster with
armada restart
command using--ship
parameter. - E.g.:
armada restart myservice --ship 10.0.0.2
- If moved service contains mounted volumes or statically assigned ports, restart will fail unless
-f \ --force
flag is provided. ⚠️ Use--force
with caution. Mounted volumes will not be moved to another ship. Static ports collision will result in service being stopped, and not restarted.
- Nicified
armada restart
warning/error output.
Due to changes in armada internal API, all armada agents within the same cluster need to be upgraded, otherwise remote runs and restarts will not work.
- Local haproxy binds both on IPv4 and IPv6.
- Default memory limit (both resident and swap) for services can now be customized per host. E.g. Add line
DEFAULT_CONTAINER_MEMORY_LIMIT=512M
to/etc/default/armada
on host.
- Set 0.5s timeout for fetching armada agents' versions in
armada info
. $CONFIG_PATH
environment variable inside microservice (and mounted volumes for these configs) are now updated duringarmada restart
to pick up the new config directories.
- Fixed incorrect detection of dev environment during service recovery.
armada run
adds configs toCONFIG_PATH
for the renamed microservice name in addition to image name.- Config directories provided with
armada run -c/--config
are additionally appended with combinations of--env
and--app_id
when generatingCONFIG_PATH
.
- Fix bug with not recovering services run before armada 0.15.0.
- Introduced resource limiting parameters to
armada run
command. These parameters accept same values as their respective docker parameters.- --cpu-shares
- --memory
- --memory-swap
- --cgroup-parent
hermes
for python has been moved topypi
repository. It is available for download withpip install armada
and can be imported withfrom armada import hermes
command.- As a result built-in
hermes
has been marked as deprecated. - Suggest working workaround for accessing http dockyards in case they are running behind main-haproxy.
- Fixed detection of development environment.
- Fix bug with pulling image without explicit tag.
- Support for dockyard-v2 (based on docker registry v2).
- Support for HTTPS dockyards with self-signed certificates.
- Detect not working remote HTTP dockyards and suggest workaround.
- Added microservice_go base image.
- Upgrade Consul from version 0.6.0 to 0.6.3.
- Run Consul using os.execv instead of spawning new process, which makes Consul's logs available in supervisor.
- Store sorted container parameters in
/opt/armada/
on Ship, to make checking differences between versions easier. - Allow microservices' local haproxy to forward http connections with Host header.
- Passing
-d local
toarmada run
in Armada vagrant box does not break detection of development environment. - Vagrant origin_dockyard_address parameter works properly with local dockyards by running localhost proxy.
armada ssh
invoked for remote services, that were rebuilt from microservice image v0.13.0 threwKeyError - '22/tcp'
.
- Upgrade Consul from version 0.4.1 to 0.6.0.
- Don't expose port 22 and install openssh-server in microservice image anymore.
- Increase timeouts to docker server, dockyards and local haproxy.
- Remove hack for manual installing pip on Ubuntu.
Due to Consul upgrade, the promoted Armada agents (leaders and commanders) with version >= 0.13.0 cannot be mixed with older versions. There is a 15 minute window for upgrade. See more details: https://github.com/hashicorp/consul/commit/f53bd94dc334c56968ac4e33e19d9ca6a2b5aa22
- You can now pass options
-t/--tty
and-i/--interactive
toarmada ssh
, which translate to correspondingdocker exec
options. Also the default behavior has been changed in case the command is provided. Both options,-t
and-i
, are turned off then. - New microservice template for
armada create
- python3 (based on bottle).
- Added link to docker docs about configuring insecure registries when connection to such registry is attempted. (Contributed by ryneeverett)
- Fix bug with
armada ssh
always returning exit code 0. - Fix recovering services after Docker/host restart.
- Start local_magellan only when require_service is invoked.
- Fix hanging Armada on start, when using Docker version 1.9.1.
- Use commands
python2
andpip2
on Armada host in case the default python is 3.x. (Contributed by ryneeverett) - Fix detection of external Armada IP on some systems. (Contributed by ryneeverett)
- Increased size of health checks logs. (previously: 2 files up to 1MB each. now: 3 files up to 5MB each)
- Revamped
armada ssh
command by movingsshd
process from microservice image to Armada container.docker exec
is now used to enter a container on the same host.- In order to enter container on another host, ssh is used to connect to remote Armada container.
- Containers created with new microservice image won't be accessible without updating Armada
- Added microservice_python3.5 base image.
-
Default health-check (main-port-open) passes when main service's port is open on any interface, and not only 127.0.0.1. (Contributed by zerofudge)
-
Changed
armada create
command syntax fromarmada create {template_name} [--name/-n {service_name}]
toarmada create {service-name} [--base-template/-b {template}]
. Default value for--base-template
ispython
. -
Available templates are
python
andnode
. E.g.:armada create my-service -b node
creates a directory with new service calledmy-service
based onnode
template (usingmicroservice_node
base image).
- Added node.js microservice template to
armada create
command withnode
as a base_template name.
armada create
command now works properly in any directory on system.
- Armada supports registering UDP services in catalog.
- New armada service - example-udp that demonstrates registering UDP services and discovering it by others.
- New base image
microservice_node4
with node v4.0.0. - New armada service - Static file server
- Changed order of steps executed on armada restart. Instead of stop, pull, run now we do: pull, stop, run so that service's downtime is minimized.
- Changed way of determining time when Docker daemon started to prevent unnecessary services' recoveries.
- Updated node.js in
microservice_node
base image from v0.10.25 to v0.12.7.
- Fixed a bug where microservices run with --rename parameter did not recover properly.
- Fixed docker error when running restart-armada development script.
- PID-1 zombie reaping problem resolved. Changed main system process inside containers from microservice init script to supervisor. Containers will no longer spawn multiple zombie processes e.g. after armada ssh command.
- Note: This change requires rebuilding services created before this fix.
- Access Consul agent from Armada commands by localhost, instead of private Docker IP, as it sometimes causes hanging requests.
- Added parameter
--rename
toarmada run
.
armada stop
andarmada restart
will now display microservice name and container id regardless of passed parameter.
- Fixed
armada run
command on systems running python 2.6.
armada run
now waits for the dockyards list to be restored fromruntime_settings.json
.
- Fixed setting first dockyard as the default.
- Fixed race condition bug when one service wants to discover multiple other services using local magellan (e.g. multiple calls to require_service.py in supervisor configs).
- Removed deprecated way of doing health checks. Armada doesn't have to run health checks by itself anymore.
Instead, services based on
microservice
image report health checks directly to Consul.
- Added custom health checks support for multi-service containers. Custom health check can be now specified with register_in_service_discovery script (-c / --health-check).
- If CONFIG_DIR environment variable is defined in Dockerfile, then hermes automatically will update CONFIG_PATH to include provided directory.
- Armada commands now work properly with multi-service containers.
- Services' initial health check is no longer set to 'passing'. Instead health checks are run on startup after a slight delay.
- Updated docker-py library to 1.2.2 to fix authorization bug on docker pull.
armada recover
now retries up to 5 times and returns list of those that failed to restart within retry limit if there were any.
- Insert environment variables to crontab inside the container, one by one, to avoid not passing variables at all if one hits the crontab's limit of 1000 characters per line and warn if that's the case.
- Skip passing internal Armada's environment variables to crontab.
-
Compatibility with docker version > 1.3.0 . Warning with help message will appear when trying to use insecure registry (dockyard over HTTP).
-
Improved local magellan with 'env inheritance' denoted by '/'. Now when using require_service script, if a service with matching MICROSERVICE_ENV is not found, local magellan will look for a service with 'parent' MICROSERVICE_ENV. e.g. if running a service with
production/my-app/my-name
env, local magellan will first look for a service withproduction/my-app/my-name
env, thenproduction/my-app
env and finallyproduction
env.
microservice
- Local magellan now configures HAProxy to actively refuse connections when required service is not available.
- Fixed
armada shutdown
behaviour on CentOS.
- Local magellan:
require_service.py
can now be overridden with empty--env
or--app_id
.
- Fixed running containers from dockyards with authentication required, once again.
- Changed domain
armada.ganymede.eu
toarmada.sh
. service armada stop
now doesn't remove runtime info about ship name, dockyards and connected ships. Previous behaviour is available with commandservice armada shutdown
.- New base image:
microservice_python3
.
- Fixed
armada push
for default dockyard.
- Fixed running containers from dockyards with authentication required.
- 'Created (UTC)' column in
armada list -u
now shows time in UTC instead of local.
- No retries when
docker build
command failed, as it usually indicates problem with Dockerfile or that user pressed Ctrl + c.
armada push
now handles dockyards' authentication.
armada stop
andarmada restart
now have option-a
/--all
to restart all services with given name.
- Detect failures of pulling from dockyards and return non-zero code to system.
- Armada agent now recovers local running containers after machine failure or docker daemon restart.
armada recover
command for manual recovery of running services from previously saved state.- Running containers' parameters are backed up every 1h in
/opt/armada/saved_containers_backup/
forarmada recover
use.
Initial Armada version.