aws / aws-k8s-tester

AWS Kubernetes tester, kubetest2 deployer implementation
Apache License 2.0
163 stars 82 forks source link

cannot override config via envs in CLI #82

Closed cofyc closed 4 years ago

cofyc commented 4 years ago

Here is an example:

# aws-k8s-tester version
{"git-commit":"36fe29fdb301","release-version":"v0.9.6","build-time":"2020-03-31_22:38:35"}
# export AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_ENABLE=true
# export AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_MNGS='{"eks-mng-8775":{"name":"eks-mng-8775","ami-type":"AL2_x86_64","asg-min-size":3,"asg-max-size":3,"asg-desired-capacity":3,"instance-types":["c5.xlarge"],"volume-size":40}}'

*********************************
overwriting config file from environment variables...
panic: reflect: call of reflect.Value.Field on zero Value

goroutine 1 [running]:
reflect.Value.Field(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b4b780)
    /usr/local/go/src/reflect/value.go:827 +0x123
github.com/aws/aws-k8s-tester/eksconfig.parseEnvs(0x260843b, 0x2e, 0x1fdeb20, 0x0, 0x1fdeba0, 0x0, 0x0, 0x0)
    /home/ANT.AMAZON.COM/leegyuho/go/src/github.com/aws/aws-k8s-tester/eksconfig/env.go:206 +0x4d6
github.com/aws/aws-k8s-tester/eksconfig.(*Config).UpdateFromEnvs(0xc0009110e0, 0x0, 0x0)
    /home/ANT.AMAZON.COM/leegyuho/go/src/github.com/aws/aws-k8s-tester/eksconfig/env.go:85 +0x273
github.com/aws/aws-k8s-tester/cmd/aws-k8s-tester/eks.configFunc(0xc000890000, 0xc0002add80, 0x0, 0x2)
    /home/ANT.AMAZON.COM/leegyuho/go/src/github.com/aws/aws-k8s-tester/cmd/aws-k8s-tester/eks/create.go:45 +0x10b
github.com/spf13/cobra.(*Command).execute(0xc000890000, 0xc0002add60, 0x2, 0x2, 0xc000890000, 0xc0002add60)
    /home/ANT.AMAZON.COM/leegyuho/go/src/github.com/aws/aws-k8s-tester/vendor/github.com/spf13/cobra/command.go:830 +0x29d
github.com/spf13/cobra.(*Command).ExecuteC(0x3f09760, 0xc000811680, 0xc0004ff400, 0xc0004ff400)
    /home/ANT.AMAZON.COM/leegyuho/go/src/github.com/aws/aws-k8s-tester/vendor/github.com/spf13/cobra/command.go:914 +0x2fb
github.com/spf13/cobra.(*Command).Execute(...)
    /home/ANT.AMAZON.COM/leegyuho/go/src/github.com/aws/aws-k8s-tester/vendor/github.com/spf13/cobra/command.go:864
main.main()
    /home/ANT.AMAZON.COM/leegyuho/go/src/github.com/aws/aws-k8s-tester/cmd/aws-k8s-tester/main.go:33 +0x31

Sync() calls IsEnabledAddOnManagedNodeGroups and other IsEnableXXX functions which will nil fields if they are not enabled. Then UpdateFromEnvs will fail with the above error because field to parse is nil now.

https://github.com/aws/aws-k8s-tester/blob/36fe29fdb301fd095722b1bacc97be38f7481dae/eksconfig/config.go#L292-L301

https://github.com/aws/aws-k8s-tester/blob/36fe29fdb301fd095722b1bacc97be38f7481dae/cmd/aws-k8s-tester/eks/create.go#L39-L41

What do you think? Fix in UpdateFromEnvs or don't nil fields in IsEnableXXX functions?

cofyc commented 4 years ago

@gyuho I've submitted a PR for this: https://github.com/aws/aws-k8s-tester/pull/83