Comments (18)
Hi @rjschwei,
We intentionally and explicitly tie the version of ecs-init to our latest tested version of Docker. Currently, the latest version of Docker available in the Amazon Linux AMI's yum repositories is 1.6.2. While we believe that ecs-init (and our Agent) should work without changes on newer versions of Docker, we want to verify that it continues to work before we change the spec file.
Does that help answer your question?
Thanks!
Sam
from amazon-ecs-init.
On 08/11/2015 12:43 PM, Samuel Karp wrote:
Hi @rjschwei,
We intentionally and explicitly tie the version of ecs-init to our latest tested version of Docker. Currently, the latest version of Docker available in the Amazon Linux AMI's yum repositories is 1.6.2. While we believe that ecs-init (and our Agent) should work without changes on newer versions of Docker, we want to verify that it continues to work before we change the spec file.
Does that help answer your question?
Yes, but leads to a follow on question. Is there a process by which we
can test the functionality with a newer version of docker?
Do the tests that are part of the source code cover this or are there
additional test that should be run?
Thanks,
Robert
Robert Schweikert MAY THE SOURCE BE WITH YOU
Public Cloud Architect LINUX
[email protected]
IRC: robjo
from amazon-ecs-init.
I've pushed a set of functional tests to the dev
branch of the Agent (see aws/amazon-ecs-agent#161, thanks @euank for most of the work!), which should do a decent job of testing whether the Agent functions correctly. Note that you will need a fairly permissive role policy on the instance to run these tests (not sure of the complete set offhand, but at least ecs:StartTask
, ecs:DescribeTasks
, ecs:StopTask
, ecs:RegisterTaskDefinition
, ecs:DescribeTaskDefinition
, ecs:DescribeContainerInstances
, and the AmazonEC2ContainerServiceforEC2Role) as well as a cluster named ecs-functional-tests
in order to actually run the tests. You'll also want to either build the Agent locally or re-tag one that you've pulled to amazon/amazon-ecs-agent:make
since that's the image the tests expect to use.
Edit: Fixed some incorrect policy actions.
from amazon-ecs-init.
On 08/11/2015 03:13 PM, Samuel Karp wrote:
I've pushed a set of functional tests to the
dev
branch of the Agent (see aws/amazon-ecs-agent#161, thanks @euank for most of the work!), which should do a decent job of testing whether the Agent functions correctly. Note that you will need a fairly permissive role policy on the instance to run these tests (not sure of the complete set offhand, but at leastecs:StartTask
,ecs:DescribeTask
,ecs:StopTask
,ecs:RegisterTaskDefinition
,ecs:DescribeTaskDefinition
,ecs:DescribeContainerInstance
, and the AmazonEC2ContainerServiceforEC2Role) as well as a cluster namedecs-functional-tests
in order to actually run the tests. You'll also want to either build the Agent locally or re-tag one that you've pulled toamazon/amazon-ecs-agent:make
since that's the image the tests expect to use.
Great, thanks. Will not get to this right away thus I might come back
with more questions.
Thanks for the help,
Robert
Robert Schweikert MAY THE SOURCE BE WITH YOU
Public Cloud Architect LINUX
[email protected]
IRC: robjo
from amazon-ecs-init.
Awesome. I'm going to close this for now, but feel free to either re-open or open a new issue when you have future questions.
from amazon-ecs-init.
I tried to run the tests from the dev branch on our ecs instance with docker 1.7, however I have problems running the tests because of a missing go package requirement. I got the following:
./scripts/test
+ make get-deps
go get github.com/tools/godep
go get golang.org/x/tools/cover
go get golang.org/x/tools/cmd/cover
+ make gotest
GOPATH="/home/ec2-user/amazon-ecs-init/ecs-init/Godeps/_workspace:/home/ec2-user/golang" go test -short -v -cover ./...
ecs-init/ecs-init.go:21:2: cannot find package "github.com/aws/amazon-ecs-init/ecs-init/config" in any of:
/usr/lib64/go/src/pkg/github.com/aws/amazon-ecs-init/ecs-init/config (from $GOROOT)
/home/ec2-user/amazon-ecs-init/ecs-init/Godeps/_workspace/src/github.com/aws/amazon-ecs-init/ecs-init/config (from $GOPATH)
anything I did wrong here ?
Thanks
from amazon-ecs-init.
It looks like you didn't check out the package into your GOPATH
. From the output you've listed, it looks like you've checked it out into /home/ec2-user/amazon-ecs-init
, but your GOPATH
is set to /home/ec2-user/golang
. Can you try checking it out into /home/ec2-user/golang/src/github.com/aws/amazon-ecs-init
instead?
from amazon-ecs-init.
Also, note that my comment above about tests is referring to the ECS Agent repo rather than this repo, and that the tests have been merged into master
of that repo.
from amazon-ecs-init.
ok great that solves it, I checked it out to ~/golang/src/github.com/aws/amazon-ecs-agent
of course you are right for testing the agent I should better checkout the agent code :-)
when running the tests I got some error but this is due the environment as you mentioned. I'm looking into this now but might come back with further questions if that's ok for you ?
Thanks for your help
from amazon-ecs-init.
I called
make test-in-docker
and got:
...
# Privileged needed for docker-in-docker so integ tests pass
docker run -v "/home/ec2-user/golang/src/github.com/aws/amazon-ecs-agent:/go/src/github.com/aws/amazon-ecs-agent" --privileged "amazon/amazon-ecs-agent-test:make"
go get github.com/tools/godep
go get golang.org/x/tools/cmd/cover
go get github.com/golang/mock/mockgen
go get golang.org/x/tools/cmd/goimports
cd misc/netkitten; make
make[1]: Entering directory `/go/src/github.com/aws/amazon-ecs-agent/misc/netkitten'
Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
docker runs on this host
6132 ? Ssl 1:20 /usr/bin/docker -d -H fd://
and the testing procedure already communicated with docker, a new registry container was started
docker ps
3e0f76627601 registry "docker-registry" 13 minutes ago Up 13 minutes 127.0.0.1:51670->5000/tcp test-ecs-registry
8717eeb74a6e amazon/amazon-ecs-agent:latest "/agent" 21 hours ago Up 21 hours 127.0.0.1:51678->51678/tcp ecs-agent
An already running ecs-agent should not conflict with the testing, should it ?
from amazon-ecs-init.
Thanks for reporting; it looks like test-in-docker
is actually broken for me as well. I've been using make test
lately for the unit tests and integration tests; that should still be working properly. We'll look into test-in-docker
and see if we can fix it. Note that the functional tests, per my previous comment, should still be run with make run-functional-tests
on an EC2 instance with appropriate permissions.
from amazon-ecs-init.
The make test target on my system is complaining as follows:
...
open $WORK/github.com/docker/libcontainer/system/_obj/_cgo_gotypes.go: No such file or directory
go tool: no such tool "cover"; to install:
go get code.google.com/p/go.tools/cmd/cover
godep: go exit status 3
Makefile:78: recipe for target 'test' failed
However the cover tool is provided and in the path
ls -l ~/golang/bin/cover
-rwxr-xr-x 1 ec2-user users 5399480 Sep 9 08:09 /home/ec2-user/golang/bin/cover
I didn't dive deeper into this because I'm actually most interested in the functional tests. Thus I started 'make run-functional-tests' which is still running. In my ecs-functional-test cluster I can see
that a new container instance was registered, thus it seems to do something...
Thanks
from amazon-ecs-init.
Hmm run-functional-tests failed with
=== RUN TestTest
--- PASS: TestTest (0.00 seconds)
=== RUN TestRunManyTasks
panic: test timed out after 20m0s
followed by a stack trace
When I called the tests I saw that a new container was registered in the ecs-functional-test cluster
Sorry still no luck
from amazon-ecs-init.
@schaefi What was the policy attached to your instance when you tried make run-functional-tests
? As I noted above, you'll need a fairly permissive policy to allow the tests to actually run correctly (the functional tests interact directly with the ECS API). You might try watching docker ps
in another terminal while the tests are running; you should see a number of containers created and stopped as part of the functional tests.
With respect to the cover tool, which version of Go are you using? It looks like the version of Go you have installed expects the cover tool to be located at code.google.com/p/go.tools/cmd/cover
, which is no longer accurate (it should now be at golang.org/x/tools/cmd/cover
).
from amazon-ecs-init.
Here is the role policy I have setup according to your information:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:CreateCluster",
"ecs:DeregisterContainerInstance",
"ecs:DiscoverPollEndpoint",
"ecs:Poll",
"ecs:RegisterContainerInstance",
"ecs:Submit*",
"ecs:StartTask",
"ecs:DescribeTask",
"ecs:StopTask",
"ecs:RegisterTaskDefinition",
"ecs:DescribeTaskDefinition",
"ecs:DescribeContainerInstance"
],
"Resource": [
"*"
]
}
]
}
The go version installed is
go-1.3.1-2.7.x86_64
from amazon-ecs-init.
Thanks. It looks like my original comments were slightly wrong. You'll want to change ecs:DescribeTask
to ecs:DescribeTasks
, change ecs:DescribeContainerInstance
to ecs:DescribeContainerInstances
, and add ecs:StartTelemetrySession
. Hopefully this should be enough to unblock you. If you still have issues, I can follow up with a more complete list (and get it correctly documented) but you should be able to unblock yourself by using ecs:*
if absolutely necessary.
If I remember correctly, the cover tool changed between Go 1.3 and 1.4. If you don't want to upgrade Go versions, you should still be able to have it function correctly by removing the -cover
argument from the test command in the Makefile.
from amazon-ecs-init.
Hey good news, tests passed now :)
Thanks a ton for your help I would never have found out these role setup
from amazon-ecs-init.
Great! Please let us know if you need any more help.
from amazon-ecs-init.
Related Issues (20)
- Add staticcheck tool to ecs-init (same as agent) HOT 1
- Containers with multiple listening ports in 'host' networking unable to send traffic to other local ports HOT 2
- Installation of ecs volume plugin on RHEL HOT 3
- ECS Agent update issue HOT 1
- iptables rule isn't removed on service restart after changing ECS_ALLOW_OFFHOST_INTROSPECTION_ACCESS from false to true HOT 1
- Setting ECS_ALLOW_OFFHOST_INTROSPECTION_ACCESS=true doesn't appear to work on Amazon Linux 1 HOT 1
- ECS cluster registers new task every time While uploading large file in aws ecs through loadbalancer with 503 gateway error HOT 7
- ECS service doesn't always run at boot time due to systemd breaking service ordering cycles HOT 4
- Migrate from dep to go modules for dependency management HOT 1
- Configurable ecs-agent image version HOT 8
- Support overriding ecs agent certificate with host certificate for generic rpm package
- 1.53.0 not availalbe as rpm HOT 1
- Running "make deb" or "make generic-rpm" does not package amazon-ecs-volume-plugin HOT 2
- Offhost ECS Agent Container Introspection is permanently enabled when primary NIC is not called eth0 HOT 4
- ecs anywhere install script: unnecessary requirement on dirmngr HOT 1
- post-stop seems to require dockerd socket access HOT 11
- Cannot build RPM package on CentOS 7.9.2009 HOT 2
- amazon-ecs-volume-plugin.service is missing in SLES 15 SP2 amazon-ecs-init 1.53 version HOT 2
- [Proposal] Integrate ECS Init into ECS Agent & deprecate standalone ECS Init repository HOT 3
- VolumeDriver.Create: encountered error(s) in creating the volume HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from amazon-ecs-init.