Fargate: Add environment variable support
This commit is contained in:
@@ -52,6 +52,18 @@ func newContainer(spec *corev1.Container) (*container, error) {
|
|||||||
cntr.definition.WorkingDirectory = aws.String(spec.WorkingDir)
|
cntr.definition.WorkingDirectory = aws.String(spec.WorkingDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add environment variables.
|
||||||
|
if spec.Env != nil {
|
||||||
|
for _, env := range spec.Env {
|
||||||
|
cntr.definition.Environment = append(
|
||||||
|
cntr.definition.Environment,
|
||||||
|
&ecs.KeyValuePair{
|
||||||
|
Name: aws.String(env.Name),
|
||||||
|
Value: aws.String(env.Value),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Translate the Kubernetes container resource requirements to Fargate units.
|
// Translate the Kubernetes container resource requirements to Fargate units.
|
||||||
cntr.setResourceRequirements(&spec.Resources)
|
cntr.setResourceRequirements(&spec.Resources)
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ var (
|
|||||||
Command: []string{"anyCmd"},
|
Command: []string{"anyCmd"},
|
||||||
Args: []string{"anyArg1", "anyArg2"},
|
Args: []string{"anyArg1", "anyArg2"},
|
||||||
WorkingDir: "/any/working/dir",
|
WorkingDir: "/any/working/dir",
|
||||||
|
Env: []corev1.EnvVar{
|
||||||
|
{Name: "anyEnvName1", Value: "anyEnvValue1"},
|
||||||
|
{Name: "anyEnvName2", Value: "anyEnvValue2"},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -46,8 +50,17 @@ func TestContainerDefinition(t *testing.T) {
|
|||||||
assert.Equal(t, cntrSpec.Name, *cntr.definition.Name, "incorrect name")
|
assert.Equal(t, cntrSpec.Name, *cntr.definition.Name, "incorrect name")
|
||||||
assert.Equal(t, cntrSpec.Image, *cntr.definition.Image, "incorrect image")
|
assert.Equal(t, cntrSpec.Image, *cntr.definition.Image, "incorrect image")
|
||||||
assert.Equal(t, cntrSpec.Command[0], *cntr.definition.EntryPoint[0], "incorrect command")
|
assert.Equal(t, cntrSpec.Command[0], *cntr.definition.EntryPoint[0], "incorrect command")
|
||||||
assert.Equal(t, cntrSpec.Args[0], *cntr.definition.Command[0], "incorrect args")
|
|
||||||
|
for i, env := range cntrSpec.Args {
|
||||||
|
assert.Equal(t, env, *cntr.definition.Command[i], "incorrect args")
|
||||||
|
}
|
||||||
|
|
||||||
assert.Equal(t, cntrSpec.WorkingDir, *cntr.definition.WorkingDirectory, "incorrect working dir")
|
assert.Equal(t, cntrSpec.WorkingDir, *cntr.definition.WorkingDirectory, "incorrect working dir")
|
||||||
|
|
||||||
|
for i, env := range cntrSpec.Env {
|
||||||
|
assert.Equal(t, env.Name, *cntr.definition.Environment[i].Name, "incorrect env name")
|
||||||
|
assert.Equal(t, env.Value, *cntr.definition.Environment[i].Value, "incorrect env value")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestContainerResourceRequirementsDefaults verifies whether the container gets default CPU
|
// TestContainerResourceRequirementsDefaults verifies whether the container gets default CPU
|
||||||
|
|||||||
@@ -237,7 +237,13 @@ func TestAWSFargateProviderPodLifecycle(t *testing.T) {
|
|||||||
"/bin/sh",
|
"/bin/sh",
|
||||||
},
|
},
|
||||||
Args: []string{
|
Args: []string{
|
||||||
"-c", "echo \"Started\"; while true; do sleep 1; done",
|
"-c",
|
||||||
|
"echo \"Started\";" +
|
||||||
|
"echo \"TEST_ENV=$TEST_ENV\";" +
|
||||||
|
"while true; do sleep 1; done",
|
||||||
|
},
|
||||||
|
Env: []v1.EnvVar{
|
||||||
|
{Name: "TEST_ENV", Value: "AnyValue"},
|
||||||
},
|
},
|
||||||
Resources: v1.ResourceRequirements{
|
Resources: v1.ResourceRequirements{
|
||||||
Limits: v1.ResourceList{
|
Limits: v1.ResourceList{
|
||||||
@@ -281,8 +287,18 @@ func TestAWSFargateProviderPodLifecycle(t *testing.T) {
|
|||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if logs != "Started\n" {
|
// Test log output.
|
||||||
t.Errorf("Expected logs to be \"Started\\n\", but received \"%v\"", logs)
|
receivedLogs := strings.Split(logs, "\n")
|
||||||
|
expectedLogs := []string{
|
||||||
|
"Started",
|
||||||
|
pod.Spec.Containers[0].Env[0].Name + "=" + pod.Spec.Containers[0].Env[0].Value,
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, line := range receivedLogs {
|
||||||
|
fmt.Printf("Log[#%d]: %v\n", i, line)
|
||||||
|
if len(expectedLogs) > i && receivedLogs[i] != expectedLogs[i] {
|
||||||
|
t.Errorf("Expected log line %d to be %q, but received %q", i, line, receivedLogs[i])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete the pod.
|
// Delete the pod.
|
||||||
|
|||||||
Reference in New Issue
Block a user