A PaaS built on top of Amazon EC2 Container Service (ECS)
This release of Empire brings more bug fixes, as well as some notable new features and changes.
Before placement constraints, ECS clusters were pretty flat; whatever you scheduled into the cluster could be ran on any host that was registered within the cluster. Placement constraints allow you to be more granular about scheduling, so that services and tasks can specify certain constraints that are required (e.g. like instance size, or AMI).
Empire now allows you to specify placement constraints as part of the Procfile:
worker:
ecs:
placement_constraints:
- type: memberOf
expression: "attribute:capability.statsd == true"
See the docs for details.
In the past, when you deployed a Docker image via a tag (e.g. like remind101/acme-inc:master
) Empire would pass along the tag unchanged to ECS. If the tag was updated after deployment, the version that you deployed to Empire would no longer be the same version as what's running in the ECS cluster.
Empire now automatically resolves these mutable tags to their immutable, content addressable identifiers, called digests.
Features
Bugs
emp run
. #1063
Improvements
Custom::InstancePort
resource allocates ports from. #1096
emp run
's now show up on STDOUT and STDERR in the terminal, instead of being merged on STDOUT. #1101
Security
You can run this version of Empire with:
$ docker run remind101/empire@sha256:ac9f0f329fca32c049322d00ba4383b7e691c9f1fa5f8b9c1584c96dc1a74a65
0.13.x has no backwards incompatibilities between 0.12.xx, however, please refer to the upgrade guide before performing an upgrade.
This release of Empire brings more bug fixes, as well as some notable new features and changes:
Historically, Empire would only expose a process in the Procfile if it was called web
. Now (when using the extended Procfile format) you can expose any process, with complete control over what ports are used. For example, if we wanted to expose the api
process as port 80 on the load balancer, and port 9000 in the container, we could add the following:
api:
ports:
- "80:9000"
In addition, Empire now creates <proc>.<app>.empire
(e.g. api.acme-inc.empire) ALIAS records for each exposed process in the Procfile.
For details about web procs, see http://empire.readthedocs.io/en/latest/deploying_an_application/
Many organizations have an idP (identity provider), which they use to provide a centralized place to control employees access to third party applications. Empire now supports a SAML authentication backend, so you can use Empire with your existing idP, like OneLogin.
In 0.12 and forward, the legacy ECS backend has been replaced by CloudFormation, which allows us to introduce new features and changes much more quickly.
If you're upgrading from 0.11.x to 0.12, you MUST migrate any applications running on the legacy ECS backend to CloudFormation first. See the Scheduler Migration Guide for details
Features
<process>.<app>.<zone>
#1005
-p
flag to the emp cert-attach
command to attach a certificate to a specific process (instead of just web
). #1014
Improvements
emp ps
now displays the task's host. #983
empire
and emp
binaries are now built with Go 1.7 #971
emp env-load
now handles multi-line environment variables. #990
empire.app.id
and empire.app.name
. In addition, ALB's will get stack tags applied to them. #1004
Bugs
emp deploy
will now prompt for a commit message if one is required but not provided. #994
Security
As always, you can run this version of empire with:
$ docker run remind101/empire:0.12.0
And if you're upgrading from a previous version, please refer to the upgrade guide
This is a patch release for the 0.11 stable branch.
Bugs
As always, you can run this version of empire with:
$ docker run remind101/empire:0.11.1
And if you're upgrading from a previous version, please refer to the upgrade guide
This release of Empire brings more bug fixes, as well as some notable new features and changes:
The CloudFormation backend was introduced as an experimental feature in 0.10.0. Many improvements have been made, and with this release, the CloudFormation backend becomes the default scheduling backend for newly created applications. Users are encouraged to migrate their existing applications to CloudFormation using the Scheduler Migration Guide. See Upgrading to 0.11.0 for details about upgrading from 0.10 to 0.11, and the new IAM permissions that Empire requires.
Empire now has experimental support for defining scheduled tasks inside the extended Procfile. See the documentation for details.
Empire now exposes Custom::EmpireApp
and Custom::EmpireAppEnvironment
resources so that you can tie Empire into your existing CloudFormation workflow for managing infrastructure. See the documentation for details.
Empire now has experimental support for using the new Application Load Balancers. You can enable an application to use ALB instead of ELB by setting the LOAD_BALANCER_TYPE=alb
environment variable.
Features
emp ps
. This can be enabled with the --x.showattached
flag, or EMPIRE_X_SHOW_ATTACHED
#911
Custom::EmpireApp
and Custom::EmpireAppEnvironment
resources #819
empire.user
label attached to them #965
emp run
#967
LOAD_BALANCER_TYPE=alb
environment variable. #969
EMPIRE_PROCESS_SCALE
environment variable, which includes the desired number of processes #964
Improvements
Custom::ECSTaskDefinition
resource that greatly reduces the size of generated templates. #935
Restart
method which will trigger a restart of all the processes within an app. Previously, a "Restart" just re-released the app. Now schedulers like the cloudformation backend can optimize how the restart is handled. #697
emp run
now publishes an event when it is ran. #954
emp rollback
requires confirmation if rolling back more than 9 versions. #975
Bugs
Custom::ECSService
resource #884.Performance
emp ps
performance. #902
Security
commands.allowed
flag that controls the behavior of what commands are allowed with emp run
. This can be set to procfile
to limit emp run
to only allow commands defined in the Procfile.As always, you can run this version of empire with:
$ docker run remind101/empire:0.11.0
And if you're upgrading from a previous version, please refer to the upgrade guide
This release of Empire brings a number of bug fixes, as well as a couple notable new features:
Empire now has experimental support for provisioning resources with CloudFormation. This can be enabled via the --scheduler
flag, or the EMPIRE_SCHEDULER
environment variable. The default value is ecs
, but it now supports the following options:
cloudformation
: Uses a CloudFormation stack per app to provision and update AWS resources (ELB/ECS/Route53/etc).cloudformation-migration
: Uses a combination of the new CloudFormation backend, as well as the old ECS backend to make it easy to migrate existing applications to CloudFormation. You can migrate applications by following the Scheduler Migration Guide.This will eventually become the default scheduling backend in later releases of Empire.
NOTE: The CloudFormation backend is currently experimental, and should not be used in production environments. If you wish to experiment with the new CloudFormation backend, please note that Empire will need some additional IAM permissions.
You can now provide a message for all emp
commands, which can be useful in providing context about why a change was made. This will show in the description of new releases, and also in events generated by Empire (which can be sent to an SNS topic).
Example
emp scale worker=10 -m "Worker is backed up from load"
Empire now supports deploying images from ECR repositories.
A full list of changes are below
Features
--messages.required
. If a commit message is required for an action, emp will gracefully handle it and ask the user to input a value #767.--ecs.logdriver
flag #731.--github.team.id
flag #745.Environment
and Release
to Deploy Events. --environment
will likely be used for tagging resources later. #758
-s
flag to emp run
#809
emp log
with the -d
flag to start streaming logs from a specific point in time ie (5m, 10m, 1h) #829
Bugs
emp run
now works with unofficial Docker registries #740.emp scale -l
now lists configured scale, not the running processes #769
emp run
would get stuck attempting to read bytes after an error from the initial request #795
Performance
emp ps
should be significantly faster for services running a lot of processes #781
Security
As always, you can run this version of empire with:
$ docker run remind101/empire:0.10.1
And if you're upgrading from a previous version, please refer to the upgrade guide
Features
emp ps
now shows the correct uptime of the process thanks to ECS support #683.emp run
now supports the -d
flag for detached processes #695.ssl-*
commands in the emp
CLI #701.Bugs
emp cert-attach
#700.Security
Internal
emp
CLI has been moved to the primary remind101/empire repo #712
As always, you can run this version of empire with:
$ docker run remind101/empire:0.10.0
This release contains a number of bug fixes and a few new features, including log tailing.
Documentation
Features
Bugs
set
and unset
env variables) #678.As always, you can run this version of empire with:
$ docker run remind101/empire:0.9.2
This release contains a number of bug fixes and a few new features.
Documentation
Features
emp info
command #619./apps/{app}/releases
endpoint #591.Bugs
As always, you can run this version of empire with:
$ docker run remind101/empire:0.9.1