From 68cf5fb88a90f2f36198ddc57d505222ba6a331b Mon Sep 17 00:00:00 2001 From: Martina Iglesias Fernandez Date: Wed, 5 Aug 2020 17:16:02 +0200 Subject: [PATCH] Add support for ARM --- pkg/addons/default/addons.go | 54 ++++++++++++++++ pkg/addons/default/assets.go | 24 +++---- pkg/addons/default/assets/aws-node.yaml | 2 + pkg/addons/default/assets/coredns-1.15.json | 5 +- pkg/addons/default/assets/coredns-1.16.json | 5 +- pkg/addons/default/assets/coredns-1.17.json | 5 +- pkg/addons/default/aws_node.go | 63 ++++++++++++++++++- pkg/addons/default/aws_node_test.go | 14 ++--- pkg/addons/default/coredns.go | 49 +++++++++++++++ pkg/addons/default/coredns_test.go | 12 ++-- pkg/addons/default/kube_proxy.go | 29 ++++++++- pkg/addons/default/kube_proxy_test.go | 4 +- pkg/addons/image.go | 8 +-- pkg/ami/api.go | 1 + pkg/ami/auto_resolver.go | 10 +++ pkg/ami/ssm_resolver.go | 4 ++ pkg/apis/eksctl.io/v1alpha5/nodegroups.go | 29 +++++++++ pkg/cfn/builder/managed_nodegroup.go | 4 ++ pkg/ctl/cmdutils/cluster.go | 13 ---- pkg/ctl/create/cluster.go | 2 +- pkg/ctl/create/nodegroup.go | 43 +++++++++++-- pkg/eks/tasks.go | 41 ++++++++++++ pkg/nodebootstrap/assets.go | 18 +++--- pkg/nodebootstrap/assets/10-eksclt.al2.conf | 2 +- pkg/nodebootstrap/assets/bootstrap.al2.sh | 11 ---- pkg/nodebootstrap/assets/bootstrap.ubuntu.sh | 2 +- pkg/utils/utils.go | 11 ++++ userdocs/mkdocs.yml | 1 + userdocs/src/usage/arm-support.md | 66 ++++++++++++++++++++ 29 files changed, 451 insertions(+), 81 deletions(-) create mode 100644 pkg/addons/default/addons.go create mode 100644 userdocs/src/usage/arm-support.md diff --git a/pkg/addons/default/addons.go b/pkg/addons/default/addons.go new file mode 100644 index 0000000000..f151cdd8ff --- /dev/null +++ b/pkg/addons/default/addons.go @@ -0,0 +1,54 @@ +package defaultaddons + +import ( + "github.com/pkg/errors" + + "github.com/weaveworks/eksctl/pkg/kubernetes" +) + +// EnsureAllAddonsUpToDate checks the default addons (aws-node, kube-proxy and coredns) are up to date +// and if they are not it will update them to the latest version for the given control plane version +// TODO Delete this function when the multi architecture images are used by default when a new cluster is created. When +// that happens eksctl won't need to update them before creating ARM nodegroups anymore. +func EnsureAddonsUpToDate(clientSet kubernetes.Interface, rawClient kubernetes.RawClientInterface, controlPlaneVersion string, region string) error { + _, err := UpdateKubeProxyImageTag(clientSet, controlPlaneVersion, false) + if err != nil { + return errors.Wrapf(err, "error updating kube-proxy") + } + + _, err = UpdateAWSNode(rawClient, region, false) + if err != nil { + return errors.Wrapf(err, "error updating aws-node") + } + + _, err = UpdateCoreDNS(rawClient, region, controlPlaneVersion, false) + if err != nil { + return errors.Wrapf(err, "error updating coredns") + } + + return nil +} + +func AreAddonsUpToDate(clientSet kubernetes.Interface, rawClient kubernetes.RawClientInterface, controlPlaneVersion string, region string) (bool, error) { + kubeProxyUpToDate, err := IsKubeProxyUpToDate(clientSet, controlPlaneVersion) + if err != nil { + return true, err + } + if !kubeProxyUpToDate { + return false, nil + } + + awsNodeUpToDate, err := IsAWSNodeUpToDate(rawClient, region) + if err != nil { + return true, err + } + if !awsNodeUpToDate { + return false, nil + } + + coreDNSUpToDate, err := IsCoreDNSUpToDate(rawClient, region, controlPlaneVersion) + if err != nil { + return true, err + } + return coreDNSUpToDate, nil +} diff --git a/pkg/addons/default/assets.go b/pkg/addons/default/assets.go index 4d8cc8c568..1a805351a5 100644 --- a/pkg/addons/default/assets.go +++ b/pkg/addons/default/assets.go @@ -1,10 +1,10 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// assets/aws-node.yaml (4.472kB) +// assets/aws-node.yaml (4.532kB) // assets/coredns-1.14.json (9.919kB) -// assets/coredns-1.15.json (10.18kB) -// assets/coredns-1.16.json (10.18kB) -// assets/coredns-1.17.json (10.18kB) +// assets/coredns-1.15.json (10.228kB) +// assets/coredns-1.16.json (10.228kB) +// assets/coredns-1.17.json (10.228kB) package defaultaddons @@ -73,7 +73,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _awsNodeYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x58\x5d\x6f\xdb\x36\x17\xbe\xf7\xaf\x20\x04\xbc\x37\x2f\x26\xd9\x6e\x93\x2c\x13\xb0\x8b\x34\x71\xbb\x60\x89\x6b\xc4\x4d\xb6\x21\x28\x8c\x63\xea\x44\xe6\x4c\x91\x2c\x3f\x14\xbb\xbf\x7e\xa0\xe4\x0f\x49\x96\x95\xa6\xc0\x80\x5e\x4c\x57\xd6\xe1\xe1\xc3\xc3\xe7\x39\x3c\xe2\x71\x18\x86\x3d\x50\xec\x01\xb5\x61\x52\xc4\x44\xcf\x81\x46\xe0\xec\x42\x6a\xf6\x15\x2c\x93\x22\x5a\x9e\x9b\x88\xc9\x7e\x3e\xec\x2d\x99\x48\x62\x72\xc9\x9d\xb1\xa8\xef\x24\xc7\x5e\x86\x16\x12\xb0\x10\xf7\x08\x11\x90\x61\x4c\xe0\xd9\x84\x42\x26\xd8\xd3\x8e\xa3\xf1\xf6\x90\x80\x62\x1f\xb4\x74\xaa\x78\xf5\x4f\x48\xa8\x4e\x0a\x60\xc8\xe0\xab\x14\xf0\x6c\x22\x2a\xb3\x62\x54\xa3\x91\x4e\x53\xac\x38\x07\xff\x0f\x8a\xdf\x39\xea\xf9\x81\xb9\x0a\x4f\x1e\x83\xe0\xf3\x31\x14\x25\x13\xb3\x7b\xf1\x21\x56\xde\x20\x43\xa3\x80\x6e\x4c\xe5\x3a\xe4\x31\xe0\xcc\xd8\xe0\x27\x12\x3c\x83\xa5\x0b\xff\x23\x45\x5b\x2c\xd0\x58\x14\x57\x16\x85\x27\xd0\x1c\x5f\x3e\x01\xcc\xa4\x30\x68\x3b\xd7\xf8\xdc\xeb\x35\x25\xd9\x11\x3f\x45\x9d\x33\x8a\x17\x94\x4a\x27\x6c\x17\xf7\x64\xbf\xa3\x98\x2c\xdd\x1c\x43\xb3\x36\x16\xb3\x43\xf0\xd7\xe9\xfd\x8e\x89\x84\x89\xb4\x53\x76\xc9\xf1\x0e\x9f\xfc\xc8\x96\xa2\x8e\x55\x7a\x84\x1c\x26\xd5\x01\xa6\x71\xf3\xbf\x91\xda\x4d\x36\xb5\x92\xe1\x29\x3d\x20\xa1\x9b\x86\x12\xe7\xaa\x90\x65\x8a\xb6\x46\x0b\x28\x65\x3c\x03\xdf\xc3\x31\x21\x1c\xe6\xc8\x37\xd2\x2f\xcf\x4d\x08\x4a\x55\x77\xa3\x90\xfa\x31\xa7\x12\xb0\x38\xb5\x1a\x2c\xa6\xeb\xd2\xdb\xae\x15\xc6\xe4\x4e\x72\xce\x44\x7a\x5f\x38\x94\xf9\x54\xb5\x6c\x73\x2a\x83\xd5\xbd\x80\x1c\x18\x87\x39\xc7\x98\x04\xc3\xc1\xff\xfc\x89\x30\xc8\x91\x5a\xa9\x4b\xbf\xcc\xe7\xd5\x4d\x25\xa2\xb6\x98\x08\xb1\x98\x29\xbe\x03\xaf\xee\xdb\x3f\xbc\x36\xbf\x1d\x81\x90\xed\xce\xfc\xa3\x34\x93\x9a\xd9\xf5\x25\x07\x63\xc6\x05\x75\x25\x3f\x85\x7b\x48\x35\xb3\x8c\x02\xdf\x78\xc3\xd3\x13\x13\xcc\xae\xf7\x2b\x78\xaf\x8b\x03\xab\x3f\x59\x5f\x1c\xd3\x98\x5c\x39\xcd\x44\x3a\xa5\x0b\x4c\x9c\xa7\xe6\x3a\x15\x72\x67\x1e\xad\x90\x3a\x9f\x66\xd5\x99\x25\xe6\x74\x43\xce\x27\xd4\x99\xa9\x0f\xfb\xe4\x2a\xd8\x1a\xad\x94\x46\x53\x9c\xe7\xa6\x47\xe9\xb5\xc4\x75\x4c\x82\x39\x5a\x88\xbc\xf2\x5a\xa0\xc5\xe2\xd0\x48\x13\xb4\x4c\x20\x44\x2a\xd4\xe0\x25\x21\xd7\xa2\xd5\x21\x07\xee\xb0\x75\xb5\x72\x45\xce\x84\x5b\xbd\x2e\x16\xd0\x74\xf1\x2f\x45\x03\x59\x72\x76\xd2\x11\x0d\x2e\x1b\x95\xbd\x4f\x65\xa6\x9c\xc5\xd0\x27\xf8\x4b\x41\x8d\xa5\xfd\xce\xb8\x9e\x40\xa7\xdb\x23\x53\xb5\xbf\x46\xd5\x1f\x44\xd0\xff\xb4\xac\x69\x69\x6a\xe5\x7e\x7c\x58\xe9\x09\x59\x48\x63\xc7\x68\x9f\xa5\x5e\xc6\xc4\x6a\xb7\xb5\x5b\xc9\x7d\x34\x75\xdd\xc3\x4a\x8c\xa3\x15\x33\x76\x7b\x19\xa0\x52\x58\x60\x02\x75\xcd\x99\x65\x90\x62\x4c\xce\x06\x6f\x4e\x06\xc3\xe1\xc9\xdb\x93\xd3\x37\x51\xb2\xd4\x11\x52\x1d\x39\x13\x3e\xa3\xb1\xe1\x9b\x06\x4d\xe5\x5b\xe8\x4b\x25\x15\x2c\xce\x87\xd1\x59\xf4\xb6\xb2\xdd\x02\x73\xe2\x38\x9f\x48\xce\xe8\x3a\x26\x17\xfc\x19\xd6\xa6\xe2\xa1\xa4\xb6\x0d\x86\xc2\x7d\x80\x13\xa9\x6d\x4c\xce\x86\x67\x3f\x9f\x37\x48\x2c\xbf\x54\x19\x5a\xcd\x68\x15\xaf\xe5\x03\x59\x3e\x1a\x21\x61\x02\x8d\x99\x68\x39\xc7\xfa\x8a\xb8\xda\x17\xf5\xed\x43\x65\x96\x81\xff\x7a\x3e\x06\x7d\x50\xaa\x9f\x6a\x45\xc3\x05\x02\xb7\x8b\x50\x79\x08\x7f\xa1\x09\x21\x49\xf4\xaf\xf1\xe9\x60\x70\x3a\xdc\x5c\x8b\x76\x5b\x17\xcc\x32\xe0\x57\xc8\x61\x3d\x45\x2a\x45\x62\x62\xf2\xf6\xb4\xe2\xc3\x59\x8e\x3f\x54\x40\x28\xf2\xa6\x12\x25\x9d\x17\x7f\x4c\x67\x0f\x93\xcb\xd9\xef\xe7\xd3\xd9\xe5\xf8\x7a\x76\xf3\xf1\xc3\xcd\xe8\x61\x74\xd3\x88\xb0\x48\xf7\x98\x5c\x8d\xde\xdd\x7f\xf8\x26\x9c\x87\xd1\xa7\xdf\x26\x77\xa3\xf7\xd7\x7f\xb6\x23\xa1\x60\x9d\x38\xa3\xf1\xf5\xec\xf6\xd3\x7d\xfb\xe4\xe0\x97\xc1\x60\x18\xb4\xce\xbf\xfd\x6b\x36\xfe\x78\x35\x9a\x8d\x2f\x6e\x47\x6d\x93\xdf\x6b\x99\x1d\x9e\xda\x27\x86\x3c\xd9\xdc\xfb\x5a\xc7\x26\x60\x17\x71\x71\x43\x88\x7c\xf2\xf9\x13\x5c\x4b\xc0\xc6\x7d\x79\x6b\xfe\xe2\xd0\x34\xcf\x00\x21\x54\xb9\x98\x0c\x07\x59\xc5\x6c\x90\xba\xe2\xbe\x21\x85\xc5\x95\xad\xcf\x50\x9a\xe5\x8c\x63\x8a\x49\xad\x32\x14\x7b\x92\xdc\x65\x78\xeb\xab\xca\xc1\x51\xcb\xbc\xb5\x0c\xbc\xef\xab\x4b\x5f\x2a\xdb\xa7\x82\xf5\xe7\xac\x59\xd3\x4a\xee\xa8\x60\xe1\x9c\x89\x30\x61\xfa\x25\x28\xb4\xb4\x80\x12\x68\xa3\xe4\x28\x98\x40\xfb\x2d\x60\x39\xe8\x3e\x97\x69\x2b\x0c\x97\xe9\x0b\x10\x7e\xb6\x76\xa2\x9f\x48\xba\x44\x1d\x19\x49\x97\xad\x48\xe5\xf8\xc1\x70\x17\x98\x59\xb0\xec\x45\xc0\x05\xdb\x0a\x59\x8a\x51\xab\xbc\x5d\xc4\xfa\xbd\x17\xcb\xd6\xc5\x2e\x03\x69\xd3\x2a\xec\xa4\xb6\x13\xae\x5d\xaf\xf0\x28\xc9\x9d\x60\x4d\xbd\xc2\x2e\x86\x5f\x44\x3a\xa6\x5d\x78\x8c\xe6\x57\xa2\xee\x45\x3c\x68\x1f\x41\xb1\x7d\xef\xbb\xef\x1c\xfd\x6d\x74\xd7\x3e\x3a\x63\x65\x76\xb7\x39\xe0\x57\x58\x5c\xe9\x99\x14\x2d\xbd\x15\x0a\x46\xa5\x78\x62\xa9\x89\xda\xff\x1f\xd8\x36\x18\x86\x4a\xdf\x27\x6d\x9a\xc6\x1e\x21\x69\xd9\x67\x1e\xfb\x57\x21\x2f\xe3\xdd\x24\xd6\x96\x97\x7c\x08\x5c\x2d\x60\x58\xb9\x62\x34\x0a\x84\xb1\x52\x17\x1f\xfe\x8d\xad\xe8\xf8\x4a\x10\xc5\x9d\x06\x5e\x8d\xb9\x6c\x81\x98\x48\x1d\x07\x5d\x19\x28\xdb\xc0\x82\x8b\xd1\xf8\xfa\xb2\xb4\xfd\x13\x00\x00\xff\xff\x1b\x39\xca\x65\x78\x11\x00\x00") +var _awsNodeYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x58\xdf\x6f\xdb\xb6\x13\x7f\xf7\x5f\x41\x08\xf8\xbe\x7c\x31\xc9\x76\x9b\x64\x99\x80\x3d\xa4\x89\xdb\x05\x4b\x5c\x23\x6e\xb2\x0d\x41\x61\x9c\xa9\x8b\xcc\x99\x22\x59\xfe\x70\xec\xfe\xf5\x03\x45\xff\x90\x65\x59\x69\x0a\x0c\xe8\xc3\xf8\x64\x1d\x8f\x9f\x3b\x7e\xee\x8e\xe4\x39\x8e\xe3\x0e\x28\xf6\x80\xda\x30\x29\x52\xa2\xa7\x40\x13\x70\x76\x26\x35\xfb\x0a\x96\x49\x91\xcc\xcf\x4d\xc2\x64\x77\xd1\xef\xcc\x99\xc8\x52\x72\xc9\x9d\xb1\xa8\xef\x24\xc7\x4e\x81\x16\x32\xb0\x90\x76\x08\x11\x50\x60\x4a\xe0\xd9\xc4\x42\x66\xd8\xd1\x8e\xa3\xf1\xf2\x98\x80\x62\x1f\xb4\x74\xaa\xfc\xf4\x23\x26\x54\x67\x25\x30\x14\xf0\x55\x0a\x78\x36\x09\x95\x45\x39\xab\xd1\x48\xa7\x29\x56\x94\xa3\xff\x47\xe5\xef\x05\xea\xe9\x81\xb8\x0a\x4f\x1e\xa3\xe8\xf3\x31\x14\x25\x33\xb3\xfd\xf0\x2e\x56\xbe\xa0\x40\xa3\x80\xae\x45\xc1\x0e\x79\x8c\x38\x33\x36\xfa\x89\x44\xcf\x60\xe9\xcc\xff\xc8\xd1\x96\x06\x6a\x46\x71\x69\x51\x78\x02\xcd\x71\xf3\x19\x60\x21\x85\x41\xdb\x6a\xe3\x73\xa7\x53\x0f\xc9\x96\xf8\x31\xea\x05\xa3\x78\x41\xa9\x74\xc2\xb6\x71\x4f\x76\x3b\x4a\xc9\xdc\x4d\x31\x36\x2b\x63\xb1\x38\x04\x7f\x5d\xbc\xdf\x31\x91\x31\x91\xb7\x86\x5d\x72\xbc\xc3\x27\x3f\xb3\xa1\xa8\xc5\x4a\x87\x90\xc3\xa4\x3a\xc0\x34\x6e\xfa\x37\x52\xbb\xce\xa6\x46\x32\x3c\xa5\x07\x24\xb4\xd3\x10\x70\xae\xca\xb0\x8c\xd1\xee\xd1\x02\x4a\x19\xcf\xc0\xf7\x70\x4c\x08\x87\x29\xf2\x75\xe8\xe7\xe7\x26\x06\xa5\xaa\xbb\x51\x48\xfd\x9c\x53\x19\x58\x1c\x5b\x0d\x16\xf3\x55\xd0\xb6\x2b\x85\x29\xb9\x93\x9c\x33\x91\xdf\x97\x0a\x21\x9f\xaa\x92\x4d\x4e\x15\xb0\xbc\x17\xb0\x00\xc6\x61\xca\x31\x25\x51\xbf\xf7\x3f\x5f\x11\x06\x39\x52\x2b\x75\xd0\x2b\x7c\x5e\xdd\x54\x3c\x6a\xf2\x89\x10\x8b\x85\xe2\x5b\xf0\xea\xbe\xfd\xe0\x7b\xeb\x9b\x11\x08\xd9\xec\xcc\x0f\xa5\x99\xd4\xcc\xae\x2e\x39\x18\x33\x2c\xa9\x0b\xfc\x94\xea\x31\xd5\xcc\x32\x0a\x7c\xad\x0d\x4f\x4f\x4c\x30\xbb\xda\x59\xf0\x5a\x17\x07\x52\x5f\x59\x5f\x1c\xd3\x98\x5d\x39\xcd\x44\x3e\xa6\x33\xcc\x9c\xa7\xe6\x3a\x17\x72\x2b\x1e\x2c\x91\x3a\x9f\x66\xd5\x95\x01\x73\xbc\x26\xe7\x13\xea\xc2\xec\x4f\xfb\xe4\x2a\xd9\x1a\x2c\x95\x46\x53\xd6\x73\x5d\x23\x68\xcd\x71\x95\x92\x68\x8a\x16\x12\x1f\x79\x2d\xd0\x62\x59\x34\xd2\x44\x0d\x0b\x08\x91\x0a\x35\xf8\x90\x90\x6b\xd1\xa8\xb0\x00\xee\xb0\xd1\x5a\xb0\xc8\x99\x70\xcb\xd7\xf9\x02\x9a\xce\xfe\x25\x6f\xa0\xc8\xce\x4e\x8e\xcf\xea\xa2\x71\x76\xe3\x2b\xce\x6b\xe7\x7e\x97\xca\x42\x39\x8b\xb1\x4f\xff\x97\x5c\x1e\x4a\xfb\x9d\x5e\x3f\x81\xce\x37\x05\x55\x95\xbf\x26\xe6\x3f\x48\xb8\xff\x8b\xf4\x2b\x22\x6d\xf6\xae\x8a\xe1\xe1\x2d\x41\xc8\x4c\x1a\x3b\x44\xfb\x2c\xf5\x3c\x25\x56\xbb\x8d\xdc\x4a\xee\xbd\xd9\xcf\x8a\xb8\xe2\xe3\x60\xc9\x8c\xdd\x3c\x24\xa8\x14\x16\x98\x40\xbd\xa7\xcc\x0a\xc8\x31\x25\x67\xbd\x37\x27\xbd\x7e\xff\xe4\xed\xc9\xe9\x9b\x24\x9b\xeb\x04\xa9\x4e\x9c\x89\x9f\xd1\xd8\xf8\x4d\x8d\xa6\xf0\x15\xfb\x63\x96\x0a\x96\x2e\xfa\xc9\x59\xf2\xb6\xb2\xdd\x12\x73\xe4\x38\x1f\x49\xce\xe8\x2a\x25\x17\xfc\x19\x56\xa6\xa2\xa1\xa4\xb6\x35\x86\xe2\x9d\x83\x23\xa9\x6d\x4a\xce\xfa\x67\x3f\x9f\xd7\x48\x0c\xb7\x5c\x81\x56\x33\x5a\xc5\x6b\xb8\x5c\xc3\xd0\x08\x19\x13\x68\xcc\x48\xcb\x29\xee\x5b\xc4\xe5\xee\x42\xd8\x0c\x2a\x8b\x02\xfc\xcd\xfb\x18\x75\x41\xa9\x6e\xae\x15\x8d\x67\x08\xdc\xce\x62\xe5\x21\xfc\x63\x28\x86\x2c\xd3\xbf\xa6\xa7\xbd\xde\x69\x7f\xfd\xa4\xda\x6e\x5d\x30\xcb\x80\x5f\x21\x87\xd5\x18\xa9\x14\x99\x49\xc9\xdb\xd3\x8a\x0e\x67\x0b\xfc\xa1\x1c\x42\xb1\xa8\x47\x22\xd0\x79\xf1\xc7\x78\xf2\x30\xba\x9c\xfc\x7e\x3e\x9e\x5c\x0e\xaf\x27\x37\x1f\x3f\xdc\x0c\x1e\x06\x37\x35\x0f\xcb\x74\x4f\xc9\xd5\xe0\xdd\xfd\x87\x6f\xc2\x79\x18\x7c\xfa\x6d\x74\x37\x78\x7f\xfd\x67\x33\x12\x0a\xd6\x8a\x33\x18\x5e\x4f\x6e\x3f\xdd\x37\x2f\x8e\x7e\xe9\xf5\xfa\x51\xe3\xfa\xdb\xbf\x26\xc3\x8f\x57\x83\xc9\xf0\xe2\x76\xd0\xb4\xf8\xbd\x96\xc5\x61\xd5\x3e\x31\xe4\xd9\xfa\xcd\xd8\x38\x37\x02\x3b\x4b\xcb\xd7\x45\xe2\x93\xcf\x57\xf0\x5e\x02\xd6\xde\xda\x1b\xf1\x17\x87\xa6\x5e\x03\x84\x50\xe5\x52\xd2\xef\x15\x15\xb1\x41\xea\xca\xb7\x8a\x14\x16\x97\x76\x7f\x85\xd2\x6c\xc1\x38\xe6\x98\xed\x9d\x0c\xe5\x9e\x24\x77\x05\xde\xfa\x53\xe5\xa0\xd4\x0a\x2f\x0d\x8e\x77\xfd\xe9\xd2\x95\xca\x76\xa9\x60\xdd\x29\xab\x9f\x69\x81\x3b\x2a\x58\x3c\x65\x22\xce\x98\x7e\x09\x0a\x2d\x2d\xa1\x04\xda\x24\x3b\x0a\x26\xd0\x7e\x0b\xd8\x02\x74\x97\xcb\xbc\x11\x86\xcb\xfc\x05\x08\xbf\x5a\x3b\xd1\xcd\x24\x9d\xa3\x4e\x8c\xa4\xf3\x46\xa4\x30\x7f\x30\xdd\x06\x66\x66\xac\x78\x11\x70\xc6\x36\x81\x0c\xc1\xd8\x3b\x79\xdb\x88\xf5\x7b\x2f\xcd\xee\x07\x3b\x38\xd2\x14\xab\xb8\x95\xda\x56\xb8\xe6\x78\xc5\x47\x49\x6e\x05\xab\xc7\x2b\x6e\x63\xf8\x45\xa4\x63\xb1\x8b\x8f\xd1\xfc\x4a\xd4\x5d\x10\x0f\x5a\x4f\x50\x6c\xd7\x37\xef\xba\x4e\xff\x92\xdd\xb6\x9e\xce\x58\x59\xdc\xad\x0b\xfc\x0a\xcb\x76\x80\x49\xd1\xd0\x97\xa1\x60\x54\x8a\x27\x96\x9b\xa4\xf9\xbf\x85\x4d\x73\x62\xa8\xf4\x3d\xd6\xba\xe1\xec\x10\x92\x87\x1e\xf5\xd8\x3f\x12\x8b\xe0\xef\x3a\xb1\x36\xbc\x2c\xfa\xc0\xd5\x0c\xfa\x95\x27\x46\xed\x80\x30\x56\xea\xf2\xe2\x5f\xcb\xca\x6e\x31\x80\x28\xee\x34\xf0\xaa\xcf\xa1\x7d\x62\x22\x77\x1c\x74\x65\x22\xb4\x90\x25\x17\x83\xe1\xf5\x65\x90\xfd\x13\x00\x00\xff\xff\xb7\x3e\x06\x6a\xb4\x11\x00\x00") func awsNodeYamlBytes() ([]byte, error) { return bindataRead( @@ -89,7 +89,7 @@ func awsNodeYaml() (*asset, error) { } info := bindataFileInfo{name: "aws-node.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0xa6, 0x37, 0xb2, 0xef, 0xeb, 0xc0, 0x66, 0xbf, 0xa6, 0x9d, 0x6c, 0x95, 0x85, 0x29, 0x70, 0xd5, 0xd7, 0x4d, 0x7d, 0xb2, 0x8a, 0x9a, 0xfb, 0x52, 0x99, 0xfe, 0x3, 0x40, 0x0, 0x78, 0x77}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x94, 0x5, 0xcb, 0xee, 0x71, 0x33, 0xf8, 0x46, 0xc, 0xe1, 0x2c, 0x67, 0x7f, 0x2a, 0x44, 0x7f, 0x61, 0xe, 0xdb, 0xf4, 0x8, 0x8c, 0xef, 0x4, 0x2b, 0xf9, 0x39, 0x2f, 0xd, 0xa2, 0xa6, 0x59}} return a, nil } @@ -113,7 +113,7 @@ func coredns114Json() (*asset, error) { return a, nil } -var _coredns115Json = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5f\x73\x1b\xb9\x0d\x7f\xf7\xa7\xd8\xd9\x99\xbc\x9d\x64\x29\x3e\xbb\x39\xbf\xf9\x2c\x37\xe7\x69\xec\x6a\x6c\xe7\x5e\x9a\x9b\x1b\x8a\x0b\x49\xac\xb9\x04\x0b\x72\x65\x2b\x19\x7f\xf7\x0e\xf7\x8f\xb4\x7f\xc8\x95\xe4\x3a\x9d\x74\xa6\x7a\x48\xd6\x4b\x00\x04\x01\xfc\x40\x80\xdc\x6f\x47\x51\x14\x33\x2d\x7e\x07\x32\x02\x55\x7c\x1e\xc5\xab\x71\xfc\x93\x7b\x2b\x2c\xa4\x26\x3e\x8f\xfe\x71\x14\x45\x51\xf4\x2d\xff\x37\x44\x9c\x8f\x3c\x0a\x95\xb8\x77\xf7\x40\x2b\xc1\x61\x3b\x90\x82\x65\x09\xb3\x2c\x3e\xdf\x88\x71\x82\x94\x42\xcb\xac\x40\x65\x1a\x03\x51\x14\x6b\xc2\x14\xec\x12\x32\x33\x14\x78\xac\x91\xac\x93\xfb\xcb\xf8\xf4\x64\x23\xd4\x43\x67\x38\x31\x0d\x8e\xd2\x52\x06\xf1\x86\xf0\x65\xcb\x13\x4b\x36\x03\xd9\x99\x0f\x1e\xcd\x90\xa5\xec\x2b\x2a\xf6\x64\x86\x1c\xd3\x63\x8e\xa9\x46\x05\x2a\x9f\xf8\x31\x9b\xc1\x20\x51\xa6\x39\xf9\xe3\x07\x33\x60\x5a\xf7\x10\x64\x33\x20\x05\x16\x72\xed\xb8\xcc\x8c\x05\x1a\x98\xd2\x3a\x95\x9a\x3d\x2c\x8a\xa5\x39\xdd\x25\x12\x4c\x6e\xef\xfd\x2b\xaa\x88\x3c\x3a\xe4\x63\x46\x33\xbe\x25\x30\x6b\x63\x21\xad\x24\x6d\xe4\xc4\x46\x03\x6f\xba\xc7\x59\x7d\xeb\xfe\xe2\x57\x37\x5a\x6d\xea\xf6\xca\x4b\xee\xf8\x3c\x3a\x3d\x69\xbf\x27\xb4\xc8\x51\x3a\xb6\xcf\x93\x69\x9b\xcd\x32\x5a\x80\x9d\x56\xcc\xb5\xc1\x97\x9f\xf6\xd2\x63\x60\xb9\x7e\x8d\x2e\x0f\x97\x87\xe8\xb2\x79\xfe\xa3\x66\x6c\x03\x12\xb8\x45\x6a\x07\x97\x2f\x4e\xbc\x9e\x34\x60\x1c\xac\x2e\xe6\x73\xa1\x84\x5d\x3b\x86\x5b\x54\xf5\x08\x89\xed\xba\x08\xf0\xcb\x22\x98\xae\xa7\x1b\x4f\x1e\xd5\xa4\x1d\x8e\xd5\x0b\xce\x31\x53\xf6\x40\xc8\xfe\xc7\xc0\xe2\x48\xb0\x17\xae\x7a\x23\xbf\x2b\x65\x77\xe0\x1f\x68\xae\xae\x29\x1c\x26\xe7\x42\xe6\x13\x0c\xcf\x4f\x4f\xa2\x6f\x5f\x94\x1b\x00\x22\x24\x53\x3c\x2f\x81\x49\xbb\x2c\x9e\xb7\xc8\x8e\xca\x4c\x30\x94\xc8\x99\x8c\x84\x1a\xb0\x24\xa1\x21\x23\xcd\x22\xa1\xcf\x8a\x87\x52\x5a\x14\x69\x4c\x4c\x24\x94\x01\x9e\x11\x54\x2f\x33\x6d\x2c\x01\x4b\xab\xbf\xe7\x4c\x4a\xbb\x24\xcc\x16\x4b\xbf\xbc\x82\xf0\xa5\xf8\x6f\x9b\x35\xa3\x73\x97\x53\x8b\xb7\x73\xa4\x27\x46\x49\x34\x8c\x8e\xc1\xf2\x63\x02\x83\x72\x35\xe4\xa8\xe6\xc5\x38\x67\x7c\x09\xd1\xc9\xa8\xf8\x4b\x22\xea\xe2\x89\x40\x22\x4b\xaa\xb7\x2c\x99\x31\xc9\x14\x87\x2f\xea\xe5\x8b\xea\xe6\x99\x2a\xee\x2e\x51\xcd\xc5\xe2\x86\xe9\xff\x87\x5c\x2d\xe4\x98\xd6\xe6\xd8\x07\xd3\x09\x68\x89\xeb\x14\x7e\x60\x88\xbe\xd5\x3e\xf6\x1a\xd3\xf6\x6d\x63\x84\x0b\x02\x63\x26\xc0\x12\x29\x14\xdc\x03\x47\x95\x38\x2b\x9c\x8d\x46\xb5\x39\x08\xb4\x14\x9c\xb9\x81\xf7\x8d\xd7\x2b\xe1\xbc\xf3\x9b\x30\x16\x69\xfd\x49\xa4\xc2\x99\x65\x3c\xda\x23\xf1\xa7\xcc\xf2\xe5\x27\x9f\xd1\x5f\x67\xf6\x5d\x81\x5a\xdf\x98\x1a\xfb\x8a\x25\x66\x61\xb1\x6e\xeb\x47\x28\xa5\x50\x8b\xcf\x3a\x61\x16\xba\x1a\xa6\xec\xf9\x3e\xa3\x45\x6e\xf4\xf7\xa7\xef\xda\xaa\xa4\xec\xf9\xb3\x62\x2b\x26\x24\x9b\xe5\x69\x70\x1c\xda\xad\x37\xbb\xd6\x5d\x63\x42\xaf\xae\x16\x52\x2d\xbb\xea\xf8\x83\x3d\xea\x2f\x23\x7b\xec\x9c\x59\x18\x54\x5a\x01\x7f\x1f\x37\xb8\x5e\x5a\x2b\xe5\x04\xb9\xfc\x07\x91\x82\xb1\x2c\x75\xe6\x57\x99\x94\x2d\x32\x2f\xbc\x7a\x74\xd8\xe1\xeb\xdd\xde\xae\xfb\xbb\x6d\xf2\x0e\x10\x0a\x5b\x6d\x4b\x8b\x8e\x92\x0a\x13\xb8\x08\x8f\xe7\x58\xf8\x57\x26\x08\x92\x49\x46\x42\x2d\xee\xf9\x12\x92\xcc\xf9\xf3\x7a\xa1\x70\xf3\xfa\xea\x19\x78\x66\x8b\x7c\xd6\x95\x51\xce\x73\x5f\x22\xe6\x01\x28\x6d\xd7\x98\xdb\x9f\x8f\x3d\xda\x00\xeb\xea\x59\x53\x51\x30\x85\x25\xf4\x49\xc9\x25\x3d\x42\x5e\x66\xcd\xc0\xb2\x61\x33\x67\x61\xd7\x1f\x0d\x4e\xd4\x40\xac\x00\x7d\x7c\xad\xfa\x69\x57\x4c\x66\xd0\xaf\x65\x4e\x27\x85\xca\x9e\xe3\x1e\x9a\x3f\x82\x63\x2f\x61\x05\x5e\x69\x00\x46\x7c\xf9\xdf\x37\x01\x4b\x93\xb3\x9f\x5f\x69\x82\xc0\x88\x9f\xc3\x47\xdd\xa5\x6c\x53\x75\xcc\x1c\x6b\x4c\x2e\x94\x15\xfd\xc8\xd1\x04\x73\xa0\x43\xa0\xe3\x33\x93\xdf\x91\xb9\x06\xe5\xec\x0e\x4f\x01\xdc\x45\x9b\x14\x75\xef\xdf\xae\x5a\xa4\x07\x61\xac\x3f\xc8\xb6\x61\x56\x25\xb4\xbe\x50\x39\x2c\xb0\xf6\x0f\xad\x28\x94\x44\xdb\xbf\x70\x84\x85\x63\x2c\xcc\x15\x04\x66\x6c\x51\xa3\xc4\xc5\xfa\x6f\xa5\x6d\x1a\xe8\x5b\xa2\xb1\x79\x45\xe4\x0f\x5e\xbf\xd0\xf8\x09\xc4\x62\x59\xd4\x27\x23\x0f\x45\x57\xfb\xb6\xd6\x2f\xfd\x1b\x21\x2a\xcb\x84\x02\xf2\x59\xdb\x13\xf6\x8c\x16\x21\xbf\xc4\x03\xd7\x59\x78\x5d\x1b\xe7\xfd\x47\xb9\x29\x1e\x6f\xfa\xac\xae\xee\x5d\xe6\x58\xa4\xac\x28\x58\xde\x99\x61\xf2\x48\x43\xe0\x34\x7c\x67\x86\xef\xcc\x31\x3c\x9a\x4a\xe6\xf9\x6a\x3c\x3c\x1b\x9e\x79\x26\x2f\xf8\xa7\x99\x94\x53\x94\x82\xe7\x7e\xb9\x9e\xdf\xa2\x9d\x12\x98\x7a\xf1\x5d\x63\x91\x62\x05\x0a\x8c\x99\x12\xce\xba\x55\x54\x49\x34\x67\x42\x66\x04\x0f\x4b\x02\xb3\x44\xe9\x6a\xfa\x53\xef\xda\x97\xd6\xea\x8f\x60\x83\xd8\x8c\x35\xb3\x4b\xa7\xd6\x71\xd1\x5c\x06\xc0\x51\x9d\x79\x7c\x18\x7d\x18\x05\x28\x0c\x5f\x42\x51\x71\xff\xf6\xf0\x30\xf5\xc5\x99\x37\xca\x62\x97\x68\x04\x93\x13\x90\x6c\x5d\x2f\xa6\xbd\xc4\x1a\x48\x60\xb2\x25\x1b\xfb\xc9\x4c\xc6\x39\x18\x53\x37\xcf\xd8\x4b\x68\x45\x0a\x98\xd9\xad\xc0\xd3\x6e\xca\xf6\xf8\x28\xdc\x5b\x6c\x35\xf5\x1c\x77\x55\xbf\x80\x2b\x36\x70\x98\xfa\x0f\x98\x3a\xd3\xfb\xa7\x8e\x7c\xe7\x62\xfb\xba\xe3\x0d\x55\xf3\x1c\x9d\x79\xd5\x7b\xb8\x7c\x73\xf5\x7e\x19\xef\x54\x30\x05\x4b\x82\xef\x65\xbf\x90\x82\x7b\x65\x10\x02\x96\x88\xd7\xe0\xd9\xbb\x80\xff\x01\x3c\x7f\x77\x88\x8e\xf7\x82\x28\x81\xc1\x8c\x38\xf8\x1a\xa8\xa8\xc8\xb3\xa9\xb0\xa1\xd1\xbc\x43\x4c\x91\xf2\x8c\x3d\xfe\xcb\xe8\x46\xec\x6f\x00\xd7\xd6\x80\xe9\x13\xcd\x75\x96\xcb\x1d\x8d\xd2\x90\x7f\xb6\xb3\x07\x27\xdf\xcb\x0c\xf9\x39\x9f\xb0\xeb\x4b\x54\x16\x9e\x43\x71\x13\x33\x29\xf1\x69\x4a\x62\x25\x24\x2c\xe0\xca\x70\x26\x59\x59\x39\xce\x99\x34\xe0\x5d\x28\x67\x9a\xcd\x84\x14\x56\x04\xad\xec\x44\x27\x49\x4f\x2d\x15\xdf\x5e\x3d\xfc\xf9\xeb\xf5\xed\xe4\xcf\xfb\xab\xbb\xdf\xaf\x2f\xaf\xfc\x05\x8a\x07\x59\x39\x77\x42\xa8\xfb\xa4\x33\x29\x03\x02\x0f\x70\x27\x4b\xfe\xae\xe4\xfa\x0e\xd1\xfe\x55\x48\x28\x8f\x8a\xce\x23\x4b\x19\xec\xe5\x03\x0b\x94\x0a\x95\xdb\xf3\x06\x8c\x71\x15\x41\x05\xd2\x04\x56\xc7\xb5\xe1\x81\xc4\x85\x6f\x33\xf1\x48\xd8\xd4\x13\x4e\x27\x1f\xcf\x0a\x65\x96\xc2\x0d\x66\xea\xd0\x7d\x28\x75\x3c\x1b\x15\x6b\xc5\x53\x28\x58\xb7\xdb\xa1\x9a\x8b\xc5\xa0\x98\x39\x44\x5c\xd9\x33\x64\xc1\xc3\x32\x7f\x53\x57\x9b\x06\x77\x9c\x4a\x47\x47\xf2\x06\xa5\x6c\x2b\x20\xdd\x7e\xb7\x75\xc9\x04\xe6\x2c\x93\xed\xea\x2e\xd6\x24\x30\xc7\xa2\x64\xc6\xdc\x96\xfa\x14\xe1\x34\xa8\x6e\xf3\x38\x09\x2b\x38\x93\x6d\x5e\x02\x63\x19\xd9\xed\x1c\x17\xf2\x89\xad\x3b\xe7\x79\xa6\xe8\x04\x81\x2a\xf1\x49\xa1\xca\x60\x33\xd0\xe1\xe8\x26\x88\x76\x99\x6e\x9a\x77\x3a\xe1\xd3\xc4\x26\xe1\x6d\x6f\x91\x54\x8f\xe9\x8f\xc4\x38\x4c\x5b\xfb\xc6\xc9\xa8\xcd\x80\xd2\xb5\x71\x81\xe6\xd1\xd3\x2e\xc0\x7c\x0e\xdc\x16\xd7\x5e\x65\x8b\xec\x45\x4a\xd9\x4c\x2a\x4c\x60\x40\x28\xa1\x75\x70\x91\x32\xe7\x99\x76\xd0\x74\x82\xd4\xa3\x40\x29\xf8\xb2\xf4\xe9\x45\x92\xa0\x32\x79\xec\x7b\xb4\xa8\x37\xa9\x57\xcf\xc2\x6d\x20\x07\x45\x60\x81\xba\x7d\x4d\x93\x6a\xbb\x9e\x08\xf2\xb8\x3b\xda\x81\x96\x7d\x16\xce\x37\xb7\x31\x81\xfd\xa6\x0c\xcb\x1b\x4c\xdc\x34\x3f\xbf\xf7\xd7\x08\xcd\x2f\x06\xda\xbf\xe0\xa9\x44\x65\xf6\xaa\xd3\x0b\x76\xcc\x55\xad\x14\xee\x09\xa3\xd0\xc9\x8e\x57\xdf\x76\x5b\x70\x60\x2f\x51\x4f\x9e\xfd\xae\x3f\xf2\x8d\x54\x4f\xfb\x5c\x0c\xd1\x8c\xf1\x21\xcb\xec\x12\x49\x7c\xcd\x31\x35\x7c\xfc\x90\x47\xbb\xef\xb6\xa8\xbc\x1d\xbe\x43\x79\xe8\x47\x18\x3f\xc4\x75\xd1\x0c\xd1\x1a\x4b\x4c\x6b\xa1\x16\xd5\xea\x07\x65\x08\xee\xb8\x98\x2b\xd2\xf3\x79\xcb\xa3\xdb\x0b\x22\xca\x64\x0b\x73\x8d\xd5\x31\x2d\x3e\x12\x66\xba\x1b\xc5\x71\xdd\xc5\x8d\x70\x6a\x94\xae\x2d\x26\x50\x89\x46\xe1\x76\x74\x7f\xea\xf5\x7c\x37\x91\x74\xde\x6d\xae\xbf\x4c\x58\x87\x15\xd0\xcc\x33\xbf\x14\xa6\xb3\xad\x3d\x31\xcb\x97\x0d\x49\x3e\x8b\x7e\x57\xb3\xb8\xd4\x7d\xf8\x62\x16\x60\x03\x6a\x1f\xd5\xdf\x7c\x27\x24\xfd\x2a\x54\xe2\xe2\xf1\x30\x40\x35\x0c\xe2\x99\xba\x79\xe4\x9e\x59\xcc\xaa\xdb\xb8\xb7\xfe\x88\xe9\x87\x47\x26\x4a\xb8\x83\x79\xcb\x9a\x65\xe0\xf5\x7a\xae\x7e\x55\xdc\x97\x02\x0f\x50\xc6\x64\xb3\x7f\x02\xb7\x3d\x99\x62\xc7\x07\x34\xd1\xae\x63\xa7\x9d\x97\xda\x9d\xb0\x3e\x2a\x61\xb2\x99\xfa\x93\x03\xf7\xd1\xcb\xd1\xbf\x03\x00\x00\xff\xff\xcc\xb2\x2a\xb9\xc4\x27\x00\x00") +var _coredns115Json = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5f\x73\x1b\xb9\x0d\x7f\xf7\xa7\xd8\xd9\x99\xbc\x9d\x64\x29\x8e\xdd\x9c\xdf\x7c\xb6\x9b\xf3\x34\x76\x35\xb6\x73\x2f\xcd\xcd\x0d\xc5\x85\x24\x56\x5c\x82\x05\xb9\xb2\x75\x19\x7f\xf7\x0e\xf7\x8f\xb4\x7f\xc8\x95\xe4\x3a\x9d\x74\xa6\x7a\x48\xd6\x24\x00\x62\x01\xfc\x40\x80\xdc\x6f\x47\x51\x14\x33\x2d\x7e\x03\x32\x02\x55\x7c\x1e\xc5\xab\x71\xfc\x93\x1b\x15\x16\x52\x13\x9f\x47\xff\x38\x8a\xa2\x28\xfa\x96\xff\x1b\x22\xce\x67\x96\x42\x25\x6e\xec\x01\x68\x25\x38\x6c\x27\x52\xb0\x2c\x61\x96\xc5\xe7\x1b\x31\x4e\x90\x52\x68\x99\x15\xa8\x4c\x63\x22\x8a\x62\x4d\x98\x82\x5d\x40\x66\x86\x02\x8f\x35\x92\x75\x72\x7f\x1e\x9f\x9e\x6c\x84\x7a\xe8\x0c\x27\xa6\xc1\x51\x5a\xca\x20\xde\x10\xbe\x6c\x79\x62\xc9\xa6\x20\x3b\xeb\xc1\xd2\x0c\x59\xca\xfe\x44\xc5\x9e\xcc\x90\x63\x7a\xcc\x31\xd5\xa8\x40\xe5\x0b\x2f\xb3\x29\x0c\x12\x65\x9a\x8b\x2f\x3f\x9a\x01\xd3\xba\x87\x20\x9b\x02\x29\xb0\x90\x6b\xc7\x65\x66\x2c\xd0\xc0\x94\xd6\xa9\xd4\xec\x61\x51\x2c\xcd\xe9\x2e\x91\xe0\xea\xee\xc1\xff\x46\x15\x91\x47\x87\x7c\xce\x68\xc6\xb7\x04\x66\x6d\x2c\xa4\x95\xa4\x8d\x9c\xd8\x68\xe0\x4d\xf7\x38\xab\x6f\xdd\x5f\xfc\xea\x46\xab\x2d\xdd\x7e\xf3\x92\x3b\x3e\x8f\x4e\x4f\xda\xe3\x84\x16\x39\x4a\xc7\xf6\xe5\x6a\xd2\x66\xb3\x8c\xe6\x60\x27\x15\x73\x6d\xf2\xe5\xa7\xbd\xf4\x18\x58\xae\x5f\xa3\xcb\xe3\xe5\x21\xba\x6c\x9e\x7f\xaf\x19\xdb\x80\x04\x6e\x91\xda\xc1\xe5\x8b\x13\xaf\x27\x0d\x18\x07\xab\x8b\xd9\x4c\x28\x61\xd7\x8e\xe1\x0e\x55\x3d\x42\x62\xbb\x2e\x02\xfc\xb2\x08\xa6\x9b\xc9\xc6\x93\x47\x35\x69\x87\x63\xf5\x82\x73\xcc\x94\x3d\x10\xb2\xff\x31\xb0\x38\x12\xec\x85\xab\xde\xc8\xef\x4a\xd9\x1d\xf8\x07\x9a\xab\x6b\x0a\x87\xc9\x99\x90\xf9\x02\xc3\xf3\xd3\x93\xe8\xdb\x57\xe5\x26\x80\x08\xc9\x14\xcf\x0b\x60\xd2\x2e\x8a\xe7\x2d\xb2\xa3\x32\x13\x0c\x25\x72\x26\x23\xa1\x06\x2c\x49\x68\xc8\x48\xb3\x48\xe8\xb3\xe2\xa1\x94\x16\x45\x1a\x13\x13\x09\x65\x80\x67\x04\xd5\x60\xa6\x8d\x25\x60\x69\xf5\xf7\x8c\x49\x69\x17\x84\xd9\x7c\xe1\x97\x57\x10\xbe\x14\xff\x6d\xb3\x66\x74\xee\x72\x6a\x31\x3a\x43\x7a\x62\x94\x44\xc3\xe8\x18\x2c\x3f\x26\x30\x28\x57\x43\x8e\x6a\x56\xcc\x73\xc6\x17\x10\x9d\x8c\x8a\xbf\x24\xa2\x2e\x9e\x08\x24\xb2\xa4\x1a\x65\xc9\x94\x49\xa6\x38\x7c\x55\x2f\x5f\x55\x37\xcf\x54\x71\x77\x89\x6a\x26\xe6\xb7\x4c\xff\x3f\xe4\x6a\x21\xc7\xb4\x36\xc7\x3e\x98\x5e\x81\x96\xb8\x4e\xe1\x07\x86\xe8\x5b\xed\x63\xaf\x31\x6d\xdf\x36\x46\x38\x27\x30\xe6\x0a\x58\x22\x85\x82\x07\xe0\xa8\x12\x67\x85\xb3\xd1\xa8\xb6\x06\x81\x96\x82\x33\x37\xf1\xbe\x31\xbc\x12\xce\x3b\xbf\x0a\x63\x91\xd6\x9f\x45\x2a\x9c\x59\xc6\xa3\x3d\x12\x7f\xca\x2c\x5f\x7c\xf6\x19\xfd\x75\x66\xdf\x15\xa8\xf5\x8d\xa9\xb1\xaf\x58\x62\x16\xe6\xeb\xb6\x7e\x84\x52\x0a\x35\xff\xa2\x13\x66\xa1\xab\x61\xca\x9e\x1f\x32\x9a\xe7\x46\x7f\x7f\xfa\xae\xad\x4a\xca\x9e\xbf\x28\xb6\x62\x42\xb2\x69\x9e\x06\xc7\xa1\xdd\x7a\xb3\x6b\xdd\x37\x16\xf4\xea\x6a\x21\xd5\xb2\xab\x8e\x3f\xd8\xa3\xfe\x32\xb2\xc7\xce\x99\x85\x41\xa5\x15\xf0\xf7\x71\x83\xeb\xa5\xf5\xa6\x9c\x20\x97\xff\x28\x52\x30\x96\xa5\xce\xfc\x2a\x93\xb2\x45\xe6\x85\x57\x8f\x0e\x3b\x7c\xbd\xdb\xdb\x75\x7f\xb7\x4d\xde\x01\x42\x61\xab\x6d\x69\xd1\x51\x52\x61\x02\x17\xe1\xf9\x1c\x0b\xff\xca\x04\x41\x72\x95\x91\x50\xf3\x07\xbe\x80\x24\x73\xfe\xbc\x99\x2b\xdc\x0c\x5f\x3f\x03\xcf\x6c\x91\xcf\xba\x32\xca\x75\x1e\x4a\xc4\x3c\x02\xa5\xed\x1a\x73\xfb\xf3\xb1\x47\x1b\x60\x5d\x3f\x6b\x2a\x0a\xa6\xb0\x84\x3e\x29\xb9\xa4\x25\xe4\x65\xd6\x14\x2c\x1b\x36\x73\x16\x76\xfd\xd1\xe0\x44\x0d\xc4\x0a\xd0\xc7\x37\xaa\x9f\x76\xc5\x64\x06\xfd\x5a\xe6\x74\x52\xa8\xec\x39\xee\xa1\xf9\x3d\x38\xf7\x12\x56\xe0\x95\x06\x60\xc4\x17\xff\x7d\x13\xb0\x34\x39\xfb\xd0\x2b\xca\x11\x51\x7a\xf6\xe1\x95\x76\x0a\xcc\xf8\x39\x7c\xd4\x5d\xca\x36\x55\xc7\x17\xb1\xc6\xe4\x42\x59\xd1\x0f\x2f\x4d\x30\x03\x3a\x04\x5f\x3e\x5b\xfa\xbd\x9d\x6b\x50\xae\xee\x40\x17\x00\x67\xb4\xc9\x63\x0f\xfe\x3d\xad\x45\x7a\x10\x10\xfb\x23\x71\x1b\x8b\x55\xd6\xdb\x11\x04\x07\x44\xdf\xfe\xf1\x17\x85\x32\x6d\xfb\x17\x8e\xb0\x70\x8c\x85\xb9\x82\xe8\x8d\x2d\x6a\x94\x38\x5f\xff\xad\xb4\x4d\x03\xa2\x0b\x34\x36\x2f\x9b\xfc\xc1\xeb\x17\x1a\x3f\x81\x98\x2f\x8a\x22\x66\xe4\xa1\xe8\x6a\xdf\xd6\xfa\xa5\x7f\xb7\x44\x65\x99\x50\x40\x3e\x6b\x7b\xc2\x9e\xd1\x3c\xe4\x97\x78\xe0\xda\x0f\xaf\x6b\xe3\xbc\x49\x29\x77\xce\xe3\x4d\x33\xd6\xd5\xbd\xcb\x1c\x8b\x94\x15\x55\xcd\x3b\x33\x4c\x96\x34\x04\x4e\xc3\x77\x66\xf8\xce\x1c\xc3\xd2\x54\x32\xcf\x57\xe3\xe1\xd9\xf0\x6c\x00\x4b\x33\xcd\x84\x4c\x86\x63\x8f\x1e\x85\xa8\x49\x26\xe5\x04\xa5\xe0\xb9\x8b\x6e\x66\x77\x68\x27\x04\xa6\x5e\xac\xd7\x58\xa4\x58\x81\x02\x63\x26\x84\xd3\x6e\xd5\x55\x12\xcd\x98\x90\x19\xc1\xe3\x82\xc0\x2c\x50\xba\x1e\xe0\xd4\x6b\x86\x85\xb5\xfa\x13\xd8\x20\x4c\x63\xcd\xec\xc2\xa9\x75\x5c\x34\xa3\x01\x9c\x54\x67\x24\x1f\x47\x1f\x47\x01\x0a\xc3\x17\x50\x54\xe8\xbf\x3e\x3e\x4e\x7c\x21\xe7\x0d\xb8\xd8\xe5\x1c\xc1\xe4\x15\x48\xb6\xae\x17\xdf\x5e\x62\x0d\x24\x30\xd9\x92\x8d\xfd\x64\x26\xe3\x1c\x8c\xa9\x9b\x67\xec\x25\xb4\x22\x05\xcc\xec\x56\xe0\x69\x37\x7b\x7b\x7c\x14\xee\x45\xb6\x9a\x7a\x8e\xc7\xaa\x5f\xc0\x15\x1b\x64\x4c\xfc\x07\x52\x9d\xe5\xfd\x4b\x47\xbe\x73\xb4\x7d\xdd\xf1\x86\xaa\x79\x8e\xda\xbc\xea\x3d\x5e\xbe\xb9\x7a\x3f\x8f\x77\x2a\x98\x82\x25\xc1\xf7\xb2\x5f\x48\xc1\xbd\x92\x09\x01\x4b\xc4\x6b\xf0\xec\x7d\x81\xff\x01\x3c\x7f\x77\x88\x8e\xf7\x82\x28\x81\xc1\x8c\x38\xf8\x1a\xae\xa8\xc8\xb3\xa9\xb0\xa1\xd9\xbc\xa3\x4c\x91\xf2\x8c\x3d\xfe\xcb\xe8\x56\xec\x6f\x00\xd7\x06\x81\xe9\x13\xcd\x75\x96\xcb\x1d\x8d\xd2\x90\x7f\xb6\xab\x07\x17\xdf\xcb\x0c\xf9\xb9\xa0\xb0\xeb\x4b\x54\x16\x9e\x43\x71\x13\x33\x29\xf1\x69\x42\x62\x25\x24\xcc\xe1\xda\x70\x26\x59\x59\x44\xce\x98\x34\xe0\x7d\x51\xce\x34\x9b\x0a\x29\xac\x08\x5a\xd9\x89\x4e\x92\x9e\xb2\x2a\xbe\xbb\x7e\xfc\xe3\x97\x9b\xbb\xab\x3f\x1e\xae\xef\x7f\xbb\xb9\xbc\xf6\xd7\x2a\x1e\x64\xe5\xdc\x09\xa1\xee\x93\xce\xa4\x0c\x08\x3c\xc0\x9d\x2c\xf9\xbb\x92\xeb\x7b\x44\xfb\x57\x21\xa1\x3c\x5a\x3a\x8f\x2c\x65\xb0\x97\x0f\x2c\x50\x2a\x54\x6e\xcf\x5b\x30\xc6\x55\x04\x15\x48\x13\x58\x1d\xd7\xa6\x07\x12\xe7\xbe\xcd\xc4\x23\x61\x53\x4f\x38\x9d\x7c\x3c\x2b\x94\x59\x0a\xb7\x98\xa9\x43\xf7\xa1\xd4\xf1\x6c\x54\xac\xd5\x51\xa1\x60\xdd\x6e\x87\x6a\x26\xe6\x83\x62\xe5\x10\x71\x65\xcf\x90\x05\x0f\xcb\xfc\x4d\x5d\x6d\x1a\xdc\x71\x2a\x1d\x1d\xc9\x1b\x54\xb5\xad\x80\x74\xfb\xdd\xd6\x25\x57\x30\x63\x99\x6c\x57\x77\xb1\x26\x81\x39\x16\x25\x33\xe6\xae\xd4\xa7\x08\xa7\x41\x75\xfb\xc7\x49\x58\xc1\x99\x6c\xf3\x12\x18\xcb\xc8\x6e\xd7\xb8\x90\x4f\x6c\xdd\x39\xff\x33\x45\x53\x08\x54\x89\x4f\x0a\x55\x06\x9b\x89\x0e\x47\x37\x41\xb4\x2b\x76\xd3\xbc\x03\x0a\x9f\x3e\x36\x09\xef\x7a\x8b\xa4\x7a\x4c\x7f\x22\xc6\x61\xd2\xda\x37\x4e\x46\x6d\x06\x94\xae\xa3\x0b\xf4\x91\x9e\xce\x01\x66\x33\xe0\xb6\xb8\x26\x2b\xbb\x65\x2f\x52\xca\xbe\x52\x61\x02\x03\x42\x09\xad\x83\x8e\x94\x39\xcf\xb4\x83\xa6\x13\xa4\x1e\x05\x4a\xc1\x97\xa5\x4f\x2f\x92\x04\x95\xc9\x63\xdf\xa3\x45\xbd\x5f\xbd\x7e\x16\x6e\x03\x39\x28\x02\x0b\xd4\xed\x6b\x9a\x54\xdb\xf5\x95\x20\x8f\xbb\xa3\x1d\x68\xd9\xe7\xc5\xf9\xe6\xf6\x26\xb0\xdf\x94\x61\x79\x8b\x89\x5b\xe6\xc3\x7b\x7f\x8d\xd0\xfc\xc2\xa0\xfd\x0b\x1e\x50\x54\x66\xaf\x9a\xbe\x60\xf3\x5c\xd5\x4a\xe1\xf6\x30\x0a\x1d\xf2\x78\xf5\x6d\xb7\x05\x07\xf6\x12\xf5\xe4\xd9\xef\xfa\x23\xdf\x4c\xf5\xb4\xcf\x45\x12\x4d\x19\x1f\xb2\xcc\x2e\x90\xc4\x9f\x39\xa6\x86\xcb\x8f\x79\xb4\xfb\x6e\x97\xca\xdb\xe4\x7b\x94\x87\x7e\xb4\xf1\x43\x5c\x2f\x4d\x11\xad\xb1\xc4\xb4\x16\x6a\x5e\xbd\xfd\xa0\x0c\xc1\x1d\x17\x79\x45\x7a\x3e\x6f\x79\x74\x7b\xa1\x44\x99\x6c\x61\xae\xf1\x76\x4c\x8b\x4f\x84\x99\xee\x46\x71\x5c\x77\x71\x23\x9c\x1a\xa5\x6b\x8b\x09\x54\xa2\x51\xb8\x1d\xdd\x9f\x7a\x3d\xdf\x59\x24\x9d\xb1\xcd\x75\x99\x09\xeb\xb0\x02\x9a\x7a\xd6\x97\xc2\x74\xb6\xb5\x27\x66\xf9\xa2\x21\xc9\x67\xd1\xef\x6a\x16\x97\xba\x0f\x7f\x99\x39\xd8\x80\xda\x47\xf5\x91\xef\x84\xa4\x5f\x84\x4a\x5c\x3c\x1e\x06\xa8\x86\x41\x3c\x4b\x37\x8f\xe8\x33\x8b\x59\x75\x7b\xf7\xd6\x1f\x3d\xfd\xf0\xc8\x44\x09\xf7\x30\x6b\x59\xb3\x0c\xbc\x5e\xcf\xd5\xaf\x96\xfb\x52\xe0\x01\xca\x98\x6c\xfa\x4f\xe0\xb6\x27\x53\xec\xf8\xe0\x26\xda\x75\xec\xb4\xf3\x12\xbc\x13\xd6\x47\x25\x4c\x36\x4b\x7f\x76\xe0\x3e\x7a\x39\xfa\x77\x00\x00\x00\xff\xff\x85\x7f\x10\xa7\xf4\x27\x00\x00") func coredns115JsonBytes() ([]byte, error) { return bindataRead( @@ -129,11 +129,11 @@ func coredns115Json() (*asset, error) { } info := bindataFileInfo{name: "coredns-1.15.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb2, 0x4a, 0x2d, 0xc0, 0xc0, 0x44, 0x91, 0xb8, 0x4a, 0x68, 0xe9, 0x44, 0x50, 0x1, 0x27, 0x85, 0x8b, 0xd7, 0x19, 0x2a, 0x90, 0xbe, 0x39, 0x46, 0xc, 0xc8, 0xb8, 0x3a, 0x93, 0xd7, 0x45, 0xf0}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9d, 0x70, 0x23, 0x87, 0xb4, 0xbb, 0xaf, 0x6f, 0x43, 0xc2, 0xf2, 0xe, 0xd2, 0xc1, 0x68, 0x9c, 0xb8, 0x1c, 0xf1, 0x3, 0xac, 0x82, 0xf4, 0x54, 0x6d, 0x63, 0xf3, 0x36, 0xa2, 0x7c, 0xa2, 0x1}} return a, nil } -var _coredns116Json = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5f\x73\x1b\xb9\x0d\x7f\xf7\xa7\xd8\xd9\x99\xbc\x9d\x64\x29\x3e\xbb\x39\xbf\xf9\x2c\x37\xe7\x69\xec\x6a\x6c\xe7\x5e\x9a\x9b\x1b\x8a\x0b\x49\xac\xb9\x04\x0b\x72\x65\x2b\x19\x7f\xf7\x0e\xf7\x8f\xb4\x7f\xc8\x95\xe4\x3a\x9d\x74\xa6\x7a\x48\xd6\x4b\x00\x04\x01\xfc\x40\x80\xdc\x6f\x47\x51\x14\x33\x2d\x7e\x07\x32\x02\x55\x7c\x1e\xc5\xab\x71\xfc\x93\x7b\x2b\x2c\xa4\x26\x3e\x8f\xfe\x71\x14\x45\x51\xf4\x2d\xff\x37\x44\x9c\x8f\x3c\x0a\x95\xb8\x77\xf7\x40\x2b\xc1\x61\x3b\x90\x82\x65\x09\xb3\x2c\x3e\xdf\x88\x71\x82\x94\x42\xcb\xac\x40\x65\x1a\x03\x51\x14\x6b\xc2\x14\xec\x12\x32\x33\x14\x78\xac\x91\xac\x93\xfb\xcb\xf8\xf4\x64\x23\xd4\x43\x67\x38\x31\x0d\x8e\xd2\x52\x06\xf1\x86\xf0\x65\xcb\x13\x4b\x36\x03\xd9\x99\x0f\x1e\xcd\x90\xa5\xec\x2b\x2a\xf6\x64\x86\x1c\xd3\x63\x8e\xa9\x46\x05\x2a\x9f\xf8\x31\x9b\xc1\x20\x51\xa6\x39\xf9\xe3\x07\x33\x60\x5a\xf7\x10\x64\x33\x20\x05\x16\x72\xed\xb8\xcc\x8c\x05\x1a\x98\xd2\x3a\x95\x9a\x3d\x2c\x8a\xa5\x39\xdd\x25\x12\x4c\x6e\xef\xfd\x2b\xaa\x88\x3c\x3a\xe4\x63\x46\x33\xbe\x25\x30\x6b\x63\x21\xad\x24\x6d\xe4\xc4\x46\x03\x6f\xba\xc7\x59\x7d\xeb\xfe\xe2\x57\x37\x5a\x6d\xea\xf6\xca\x4b\xee\xf8\x3c\x3a\x3d\x69\xbf\x27\xb4\xc8\x51\x3a\xb6\xcf\x93\x69\x9b\xcd\x32\x5a\x80\x9d\x56\xcc\xb5\xc1\x97\x9f\xf6\xd2\x63\x60\xb9\x7e\x8d\x2e\x0f\x97\x87\xe8\xb2\x79\xfe\xa3\x66\x6c\x03\x12\xb8\x45\x6a\x07\x97\x2f\x4e\xbc\x9e\x34\x60\x1c\xac\x2e\xe6\x73\xa1\x84\x5d\x3b\x86\x5b\x54\xf5\x08\x89\xed\xba\x08\xf0\xcb\x22\x98\xae\xa7\x1b\x4f\x1e\xd5\xa4\x1d\x8e\xd5\x0b\xce\x31\x53\xf6\x40\xc8\xfe\xc7\xc0\xe2\x48\xb0\x17\xae\x7a\x23\xbf\x2b\x65\x77\xe0\x1f\x68\xae\xae\x29\x1c\x26\xe7\x42\xe6\x13\x0c\xcf\x4f\x4f\xa2\x6f\x5f\x94\x1b\x00\x22\x24\x53\x3c\x2f\x81\x49\xbb\x2c\x9e\xb7\xc8\x8e\xca\x4c\x30\x94\xc8\x99\x8c\x84\x1a\xb0\x24\xa1\x21\x23\xcd\x22\xa1\xcf\x8a\x87\x52\x5a\x14\x69\x4c\x4c\x24\x94\x01\x9e\x11\x54\x2f\x33\x6d\x2c\x01\x4b\xab\xbf\xe7\x4c\x4a\xbb\x24\xcc\x16\x4b\xbf\xbc\x82\xf0\xa5\xf8\x6f\x9b\x35\xa3\x73\x97\x53\x8b\xb7\x73\xa4\x27\x46\x49\x34\x8c\x8e\xc1\xf2\x63\x02\x83\x72\x35\xe4\xa8\xe6\xc5\x38\x67\x7c\x09\xd1\xc9\xa8\xf8\x4b\x22\xea\xe2\x89\x40\x22\x4b\xaa\xb7\x2c\x99\x31\xc9\x14\x87\x2f\xea\xe5\x8b\xea\xe6\x99\x2a\xee\x2e\x51\xcd\xc5\xe2\x86\xe9\xff\x87\x5c\x2d\xe4\x98\xd6\xe6\xd8\x07\xd3\x09\x68\x89\xeb\x14\x7e\x60\x88\xbe\xd5\x3e\xf6\x1a\xd3\xf6\x6d\x63\x84\x0b\x02\x63\x26\xc0\x12\x29\x14\xdc\x03\x47\x95\x38\x2b\x9c\x8d\x46\xb5\x39\x08\xb4\x14\x9c\xb9\x81\xf7\x8d\xd7\x2b\xe1\xbc\xf3\x9b\x30\x16\x69\xfd\x49\xa4\xc2\x99\x65\x3c\xda\x23\xf1\xa7\xcc\xf2\xe5\x27\x9f\xd1\x5f\x67\xf6\x5d\x81\x5a\xdf\x98\x1a\xfb\x8a\x25\x66\x61\xb1\x6e\xeb\x47\x28\xa5\x50\x8b\xcf\x3a\x61\x16\xba\x1a\xa6\xec\xf9\x3e\xa3\x45\x6e\xf4\xf7\xa7\xef\xda\xaa\xa4\xec\xf9\xb3\x62\x2b\x26\x24\x9b\xe5\x69\x70\x1c\xda\xad\x37\xbb\xd6\x5d\x63\x42\xaf\xae\x16\x52\x2d\xbb\xea\xf8\x83\x3d\xea\x2f\x23\x7b\xec\x9c\x59\x18\x54\x5a\x01\x7f\x1f\x37\xb8\x5e\x5a\x2b\xe5\x04\xb9\xfc\x07\x91\x82\xb1\x2c\x75\xe6\x57\x99\x94\x2d\x32\x2f\xbc\x7a\x74\xd8\xe1\xeb\xdd\xde\xae\xfb\xbb\x6d\xf2\x0e\x10\x0a\x5b\x6d\x4b\x8b\x8e\x92\x0a\x13\xb8\x08\x8f\xe7\x58\xf8\x57\x26\x08\x92\x49\x46\x42\x2d\xee\xf9\x12\x92\xcc\xf9\xf3\x7a\xa1\x70\xf3\xfa\xea\x19\x78\x66\x8b\x7c\xd6\x95\x51\xce\x73\x5f\x22\xe6\x01\x28\x6d\xd7\x98\xdb\x9f\x8f\x3d\xda\x00\xeb\xea\x59\x53\x51\x30\x85\x25\xf4\x49\xc9\x25\x3d\x42\x5e\x66\xcd\xc0\xb2\x61\x33\x67\x61\xd7\x1f\x0d\x4e\xd4\x40\xac\x00\x7d\x7c\xad\xfa\x69\x57\x4c\x66\xd0\xaf\x65\x4e\x27\x85\xca\x9e\xe3\x1e\x9a\x3f\x82\x63\x2f\x61\x05\x5e\x69\x00\x46\x7c\xf9\xdf\x37\x01\x4b\x93\xb3\x9f\x5f\x69\x82\xc0\x88\x9f\xc3\x47\xdd\xa5\x6c\x53\x75\xcc\x1c\x6b\x4c\x2e\x94\x15\xfd\xc8\xd1\x04\x73\xa0\x43\xa0\xe3\x33\x93\xdf\x91\xb9\x06\xe5\xec\x0e\x4f\x01\xdc\x45\x9b\x14\x75\xef\xdf\xae\x5a\xa4\x07\x61\xac\x3f\xc8\xb6\x61\x56\x25\xb4\xbe\x50\x39\x2c\xb0\xf6\x0f\xad\x28\x94\x44\xdb\xbf\x70\x84\x85\x63\x2c\xcc\x15\x04\x66\x6c\x51\xa3\xc4\xc5\xfa\x6f\xa5\x6d\x1a\xe8\x5b\xa2\xb1\x79\x45\xe4\x0f\x5e\xbf\xd0\xf8\x09\xc4\x62\x59\xd4\x27\x23\x0f\x45\x57\xfb\xb6\xd6\x2f\xfd\x1b\x21\x2a\xcb\x84\x02\xf2\x59\xdb\x13\xf6\x8c\x16\x21\xbf\xc4\x03\xd7\x59\x78\x5d\x1b\xe7\xfd\x47\xb9\x29\x1e\x6f\xfa\xac\xae\xee\x5d\xe6\x58\xa4\xac\x28\x58\xde\x99\x61\xf2\x48\x43\xe0\x34\x7c\x67\x86\xef\xcc\x31\x3c\x9a\x4a\xe6\xf9\x6a\x3c\x3c\x1b\x9e\x79\x26\x2f\xf8\xa7\x99\x94\x53\x94\x82\xe7\x7e\xb9\x9e\xdf\xa2\x9d\x12\x98\x7a\xf1\x5d\x63\x91\x62\x05\x0a\x8c\x99\x12\xce\xba\x55\x54\x49\x34\x67\x42\x66\x04\x0f\x4b\x02\xb3\x44\xe9\x6a\xfa\x53\xef\xda\x97\xd6\xea\x8f\x60\x83\xd8\x8c\x35\xb3\x4b\xa7\xd6\x71\xd1\x5c\x06\xc0\x51\x9d\x79\x7c\x18\x7d\x18\x05\x28\x0c\x5f\x42\x51\x71\xff\xf6\xf0\x30\xf5\xc5\x99\x37\xca\x62\x97\x68\x04\x93\x13\x90\x6c\x5d\x2f\xa6\xbd\xc4\x1a\x48\x60\xb2\x25\x1b\xfb\xc9\x4c\xc6\x39\x18\x53\x37\xcf\xd8\x4b\x68\x45\x0a\x98\xd9\xad\xc0\xd3\x6e\xca\xf6\xf8\x28\xdc\x5b\x6c\x35\xf5\x1c\x77\x55\xbf\x80\x2b\x36\x70\x98\xfa\x0f\x98\x3a\xd3\xfb\xa7\x8e\x7c\xe7\x62\xfb\xba\xe3\x0d\x55\xf3\x1c\x9d\x79\xd5\x7b\xb8\x7c\x73\xf5\x7e\x19\xef\x54\x30\x05\x4b\x82\xef\x65\xbf\x90\x82\x7b\x65\x10\x02\x96\x88\xd7\xe0\xd9\xbb\x80\xff\x01\x3c\x7f\x77\x88\x8e\xf7\x82\x28\x81\xc1\x8c\x38\xf8\x1a\xa8\xa8\xc8\xb3\xa9\xb0\xa1\xd1\xbc\x43\x4c\x91\xf2\x8c\x3d\xfe\xcb\xe8\x46\xec\x6f\x00\xd7\xd6\x80\xe9\x13\xcd\x75\x96\xcb\x1d\x8d\xd2\x90\x7f\xb6\xb3\x07\x27\xdf\xcb\x0c\xf9\x39\x9f\xb0\xeb\x4b\x54\x16\x9e\x43\x71\x13\x33\x29\xf1\x69\x4a\x62\x25\x24\x2c\xe0\xca\x70\x26\x59\x59\x39\xce\x99\x34\xe0\x5d\x28\x67\x9a\xcd\x84\x14\x56\x04\xad\xec\x44\x27\x49\x4f\x2d\x15\xdf\x5e\x3d\xfc\xf9\xeb\xf5\xed\xe4\xcf\xfb\xab\xbb\xdf\xaf\x2f\xaf\xfc\x05\x8a\x07\x59\x39\x77\x42\xa8\xfb\xa4\x33\x29\x03\x02\x0f\x70\x27\x4b\xfe\xae\xe4\xfa\x0e\xd1\xfe\x55\x48\x28\x8f\x8a\xce\x23\x4b\x19\xec\xe5\x03\x0b\x94\x0a\x95\xdb\xf3\x06\x8c\x71\x15\x41\x05\xd2\x04\x56\xc7\xb5\xe1\x81\xc4\x85\x6f\x33\xf1\x48\xd8\xd4\x13\x4e\x27\x1f\xcf\x0a\x65\x96\xc2\x0d\x66\xea\xd0\x7d\x28\x75\x3c\x1b\x15\x6b\xc5\x53\x28\x58\xb7\xdb\xa1\x9a\x8b\xc5\xa0\x98\x39\x44\x5c\xd9\x33\x64\xc1\xc3\x32\x7f\x53\x57\x9b\x06\x77\x9c\x4a\x47\x47\xf2\x06\xa5\x6c\x2b\x20\xdd\x7e\xb7\x75\xc9\x04\xe6\x2c\x93\xed\xea\x2e\xd6\x24\x30\xc7\xa2\x64\xc6\xdc\x96\xfa\x14\xe1\x34\xa8\x6e\xf3\x38\x09\x2b\x38\x93\x6d\x5e\x02\x63\x19\xd9\xed\x1c\x17\xf2\x89\xad\x3b\xe7\x79\xa6\xe8\x04\x81\x2a\xf1\x49\xa1\xca\x60\x33\xd0\xe1\xe8\x26\x88\x76\x99\x6e\x9a\x77\x3a\xe1\xd3\xc4\x26\xe1\x6d\x6f\x91\x54\x8f\xe9\x8f\xc4\x38\x4c\x5b\xfb\xc6\xc9\xa8\xcd\x80\xd2\xb5\x71\x81\xe6\xd1\xd3\x2e\xc0\x7c\x0e\xdc\x16\xd7\x5e\x65\x8b\xec\x45\x4a\xd9\x4c\x2a\x4c\x60\x40\x28\xa1\x75\x70\x91\x32\xe7\x99\x76\xd0\x74\x82\xd4\xa3\x40\x29\xf8\xb2\xf4\xe9\x45\x92\xa0\x32\x79\xec\x7b\xb4\xa8\x37\xa9\x57\xcf\xc2\x6d\x20\x07\x45\x60\x81\xba\x7d\x4d\x93\x6a\xbb\x9e\x08\xf2\xb8\x3b\xda\x81\x96\x7d\x16\xce\x37\xb7\x31\x81\xfd\xa6\x0c\xcb\x1b\x4c\xdc\x34\x3f\xbf\xf7\xd7\x08\xcd\x2f\x06\xda\xbf\xe0\xa9\x44\x65\xf6\xaa\xd3\x0b\x76\xcc\x55\xad\x14\xee\x09\xa3\xd0\xc9\x8e\x57\xdf\x76\x5b\x70\x60\x2f\x51\x4f\x9e\xfd\xae\x3f\xf2\x8d\x54\x4f\xfb\x5c\x0c\xd1\x8c\xf1\x21\xcb\xec\x12\x49\x7c\xcd\x31\x35\x7c\xfc\x90\x47\xbb\xef\xb6\xa8\xbc\x1d\xbe\x43\x79\xe8\x47\x18\x3f\xc4\x75\xd1\x0c\xd1\x1a\x4b\x4c\x6b\xa1\x16\xd5\xea\x07\x65\x08\xee\xb8\x98\x2b\xd2\xf3\x79\xcb\xa3\xdb\x0b\x22\xca\x64\x0b\x73\x8d\xd5\x31\x2d\x3e\x12\x66\xba\x1b\xc5\x71\xdd\xc5\x8d\x70\x6a\x94\xae\x2d\x26\x50\x89\x46\xe1\x76\x74\x7f\xea\xf5\x7c\x37\x91\x74\xde\x6d\xae\xbf\x4c\x58\x87\x15\xd0\xcc\x33\xbf\x14\xa6\xb3\xad\x3d\x31\xcb\x97\x0d\x49\x3e\x8b\x7e\x57\xb3\xb8\xd4\x7d\xf8\x62\x16\x60\x03\x6a\x1f\xd5\xdf\x7c\x27\x24\xfd\x2a\x54\xe2\xe2\xf1\x30\x40\x35\x0c\xe2\x99\xba\x79\xe4\x9e\x59\xcc\xaa\xdb\xb8\xb7\xfe\x88\xe9\x87\x47\x26\x4a\xb8\x83\x79\xcb\x9a\x65\xe0\xf5\x7a\xae\x7e\x55\xdc\x97\x02\x0f\x50\xc6\x64\xb3\x7f\x02\xb7\x3d\x99\x62\xc7\x07\x34\xd1\xae\x63\xa7\x9d\x97\xda\x9d\xb0\x3e\x2a\x61\xb2\x99\xfa\x93\x03\xf7\xd1\xcb\xd1\xbf\x03\x00\x00\xff\xff\xcc\xb2\x2a\xb9\xc4\x27\x00\x00") +var _coredns116Json = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5f\x73\x1b\xb9\x0d\x7f\xf7\xa7\xd8\xd9\x99\xbc\x9d\x64\x29\x8e\xdd\x9c\xdf\x7c\xb6\x9b\xf3\x34\x76\x35\xb6\x73\x2f\xcd\xcd\x0d\xc5\x85\x24\x56\x5c\x82\x05\xb9\xb2\x75\x19\x7f\xf7\x0e\xf7\x8f\xb4\x7f\xc8\x95\xe4\x3a\x9d\x74\xa6\x7a\x48\xd6\x24\x00\x62\x01\xfc\x40\x80\xdc\x6f\x47\x51\x14\x33\x2d\x7e\x03\x32\x02\x55\x7c\x1e\xc5\xab\x71\xfc\x93\x1b\x15\x16\x52\x13\x9f\x47\xff\x38\x8a\xa2\x28\xfa\x96\xff\x1b\x22\xce\x67\x96\x42\x25\x6e\xec\x01\x68\x25\x38\x6c\x27\x52\xb0\x2c\x61\x96\xc5\xe7\x1b\x31\x4e\x90\x52\x68\x99\x15\xa8\x4c\x63\x22\x8a\x62\x4d\x98\x82\x5d\x40\x66\x86\x02\x8f\x35\x92\x75\x72\x7f\x1e\x9f\x9e\x6c\x84\x7a\xe8\x0c\x27\xa6\xc1\x51\x5a\xca\x20\xde\x10\xbe\x6c\x79\x62\xc9\xa6\x20\x3b\xeb\xc1\xd2\x0c\x59\xca\xfe\x44\xc5\x9e\xcc\x90\x63\x7a\xcc\x31\xd5\xa8\x40\xe5\x0b\x2f\xb3\x29\x0c\x12\x65\x9a\x8b\x2f\x3f\x9a\x01\xd3\xba\x87\x20\x9b\x02\x29\xb0\x90\x6b\xc7\x65\x66\x2c\xd0\xc0\x94\xd6\xa9\xd4\xec\x61\x51\x2c\xcd\xe9\x2e\x91\xe0\xea\xee\xc1\xff\x46\x15\x91\x47\x87\x7c\xce\x68\xc6\xb7\x04\x66\x6d\x2c\xa4\x95\xa4\x8d\x9c\xd8\x68\xe0\x4d\xf7\x38\xab\x6f\xdd\x5f\xfc\xea\x46\xab\x2d\xdd\x7e\xf3\x92\x3b\x3e\x8f\x4e\x4f\xda\xe3\x84\x16\x39\x4a\xc7\xf6\xe5\x6a\xd2\x66\xb3\x8c\xe6\x60\x27\x15\x73\x6d\xf2\xe5\xa7\xbd\xf4\x18\x58\xae\x5f\xa3\xcb\xe3\xe5\x21\xba\x6c\x9e\x7f\xaf\x19\xdb\x80\x04\x6e\x91\xda\xc1\xe5\x8b\x13\xaf\x27\x0d\x18\x07\xab\x8b\xd9\x4c\x28\x61\xd7\x8e\xe1\x0e\x55\x3d\x42\x62\xbb\x2e\x02\xfc\xb2\x08\xa6\x9b\xc9\xc6\x93\x47\x35\x69\x87\x63\xf5\x82\x73\xcc\x94\x3d\x10\xb2\xff\x31\xb0\x38\x12\xec\x85\xab\xde\xc8\xef\x4a\xd9\x1d\xf8\x07\x9a\xab\x6b\x0a\x87\xc9\x99\x90\xf9\x02\xc3\xf3\xd3\x93\xe8\xdb\x57\xe5\x26\x80\x08\xc9\x14\xcf\x0b\x60\xd2\x2e\x8a\xe7\x2d\xb2\xa3\x32\x13\x0c\x25\x72\x26\x23\xa1\x06\x2c\x49\x68\xc8\x48\xb3\x48\xe8\xb3\xe2\xa1\x94\x16\x45\x1a\x13\x13\x09\x65\x80\x67\x04\xd5\x60\xa6\x8d\x25\x60\x69\xf5\xf7\x8c\x49\x69\x17\x84\xd9\x7c\xe1\x97\x57\x10\xbe\x14\xff\x6d\xb3\x66\x74\xee\x72\x6a\x31\x3a\x43\x7a\x62\x94\x44\xc3\xe8\x18\x2c\x3f\x26\x30\x28\x57\x43\x8e\x6a\x56\xcc\x73\xc6\x17\x10\x9d\x8c\x8a\xbf\x24\xa2\x2e\x9e\x08\x24\xb2\xa4\x1a\x65\xc9\x94\x49\xa6\x38\x7c\x55\x2f\x5f\x55\x37\xcf\x54\x71\x77\x89\x6a\x26\xe6\xb7\x4c\xff\x3f\xe4\x6a\x21\xc7\xb4\x36\xc7\x3e\x98\x5e\x81\x96\xb8\x4e\xe1\x07\x86\xe8\x5b\xed\x63\xaf\x31\x6d\xdf\x36\x46\x38\x27\x30\xe6\x0a\x58\x22\x85\x82\x07\xe0\xa8\x12\x67\x85\xb3\xd1\xa8\xb6\x06\x81\x96\x82\x33\x37\xf1\xbe\x31\xbc\x12\xce\x3b\xbf\x0a\x63\x91\xd6\x9f\x45\x2a\x9c\x59\xc6\xa3\x3d\x12\x7f\xca\x2c\x5f\x7c\xf6\x19\xfd\x75\x66\xdf\x15\xa8\xf5\x8d\xa9\xb1\xaf\x58\x62\x16\xe6\xeb\xb6\x7e\x84\x52\x0a\x35\xff\xa2\x13\x66\xa1\xab\x61\xca\x9e\x1f\x32\x9a\xe7\x46\x7f\x7f\xfa\xae\xad\x4a\xca\x9e\xbf\x28\xb6\x62\x42\xb2\x69\x9e\x06\xc7\xa1\xdd\x7a\xb3\x6b\xdd\x37\x16\xf4\xea\x6a\x21\xd5\xb2\xab\x8e\x3f\xd8\xa3\xfe\x32\xb2\xc7\xce\x99\x85\x41\xa5\x15\xf0\xf7\x71\x83\xeb\xa5\xf5\xa6\x9c\x20\x97\xff\x28\x52\x30\x96\xa5\xce\xfc\x2a\x93\xb2\x45\xe6\x85\x57\x8f\x0e\x3b\x7c\xbd\xdb\xdb\x75\x7f\xb7\x4d\xde\x01\x42\x61\xab\x6d\x69\xd1\x51\x52\x61\x02\x17\xe1\xf9\x1c\x0b\xff\xca\x04\x41\x72\x95\x91\x50\xf3\x07\xbe\x80\x24\x73\xfe\xbc\x99\x2b\xdc\x0c\x5f\x3f\x03\xcf\x6c\x91\xcf\xba\x32\xca\x75\x1e\x4a\xc4\x3c\x02\xa5\xed\x1a\x73\xfb\xf3\xb1\x47\x1b\x60\x5d\x3f\x6b\x2a\x0a\xa6\xb0\x84\x3e\x29\xb9\xa4\x25\xe4\x65\xd6\x14\x2c\x1b\x36\x73\x16\x76\xfd\xd1\xe0\x44\x0d\xc4\x0a\xd0\xc7\x37\xaa\x9f\x76\xc5\x64\x06\xfd\x5a\xe6\x74\x52\xa8\xec\x39\xee\xa1\xf9\x3d\x38\xf7\x12\x56\xe0\x95\x06\x60\xc4\x17\xff\x7d\x13\xb0\x34\x39\xfb\xd0\x2b\xca\x11\x51\x7a\xf6\xe1\x95\x76\x0a\xcc\xf8\x39\x7c\xd4\x5d\xca\x36\x55\xc7\x17\xb1\xc6\xe4\x42\x59\xd1\x0f\x2f\x4d\x30\x03\x3a\x04\x5f\x3e\x5b\xfa\xbd\x9d\x6b\x50\xae\xee\x40\x17\x00\x67\xb4\xc9\x63\x0f\xfe\x3d\xad\x45\x7a\x10\x10\xfb\x23\x71\x1b\x8b\x55\xd6\xdb\x11\x04\x07\x44\xdf\xfe\xf1\x17\x85\x32\x6d\xfb\x17\x8e\xb0\x70\x8c\x85\xb9\x82\xe8\x8d\x2d\x6a\x94\x38\x5f\xff\xad\xb4\x4d\x03\xa2\x0b\x34\x36\x2f\x9b\xfc\xc1\xeb\x17\x1a\x3f\x81\x98\x2f\x8a\x22\x66\xe4\xa1\xe8\x6a\xdf\xd6\xfa\xa5\x7f\xb7\x44\x65\x99\x50\x40\x3e\x6b\x7b\xc2\x9e\xd1\x3c\xe4\x97\x78\xe0\xda\x0f\xaf\x6b\xe3\xbc\x49\x29\x77\xce\xe3\x4d\x33\xd6\xd5\xbd\xcb\x1c\x8b\x94\x15\x55\xcd\x3b\x33\x4c\x96\x34\x04\x4e\xc3\x77\x66\xf8\xce\x1c\xc3\xd2\x54\x32\xcf\x57\xe3\xe1\xd9\xf0\x6c\x00\x4b\x33\xcd\x84\x4c\x86\x63\x8f\x1e\x85\xa8\x49\x26\xe5\x04\xa5\xe0\xb9\x8b\x6e\x66\x77\x68\x27\x04\xa6\x5e\xac\xd7\x58\xa4\x58\x81\x02\x63\x26\x84\xd3\x6e\xd5\x55\x12\xcd\x98\x90\x19\xc1\xe3\x82\xc0\x2c\x50\xba\x1e\xe0\xd4\x6b\x86\x85\xb5\xfa\x13\xd8\x20\x4c\x63\xcd\xec\xc2\xa9\x75\x5c\x34\xa3\x01\x9c\x54\x67\x24\x1f\x47\x1f\x47\x01\x0a\xc3\x17\x50\x54\xe8\xbf\x3e\x3e\x4e\x7c\x21\xe7\x0d\xb8\xd8\xe5\x1c\xc1\xe4\x15\x48\xb6\xae\x17\xdf\x5e\x62\x0d\x24\x30\xd9\x92\x8d\xfd\x64\x26\xe3\x1c\x8c\xa9\x9b\x67\xec\x25\xb4\x22\x05\xcc\xec\x56\xe0\x69\x37\x7b\x7b\x7c\x14\xee\x45\xb6\x9a\x7a\x8e\xc7\xaa\x5f\xc0\x15\x1b\x64\x4c\xfc\x07\x52\x9d\xe5\xfd\x4b\x47\xbe\x73\xb4\x7d\xdd\xf1\x86\xaa\x79\x8e\xda\xbc\xea\x3d\x5e\xbe\xb9\x7a\x3f\x8f\x77\x2a\x98\x82\x25\xc1\xf7\xb2\x5f\x48\xc1\xbd\x92\x09\x01\x4b\xc4\x6b\xf0\xec\x7d\x81\xff\x01\x3c\x7f\x77\x88\x8e\xf7\x82\x28\x81\xc1\x8c\x38\xf8\x1a\xae\xa8\xc8\xb3\xa9\xb0\xa1\xd9\xbc\xa3\x4c\x91\xf2\x8c\x3d\xfe\xcb\xe8\x56\xec\x6f\x00\xd7\x06\x81\xe9\x13\xcd\x75\x96\xcb\x1d\x8d\xd2\x90\x7f\xb6\xab\x07\x17\xdf\xcb\x0c\xf9\xb9\xa0\xb0\xeb\x4b\x54\x16\x9e\x43\x71\x13\x33\x29\xf1\x69\x42\x62\x25\x24\xcc\xe1\xda\x70\x26\x59\x59\x44\xce\x98\x34\xe0\x7d\x51\xce\x34\x9b\x0a\x29\xac\x08\x5a\xd9\x89\x4e\x92\x9e\xb2\x2a\xbe\xbb\x7e\xfc\xe3\x97\x9b\xbb\xab\x3f\x1e\xae\xef\x7f\xbb\xb9\xbc\xf6\xd7\x2a\x1e\x64\xe5\xdc\x09\xa1\xee\x93\xce\xa4\x0c\x08\x3c\xc0\x9d\x2c\xf9\xbb\x92\xeb\x7b\x44\xfb\x57\x21\xa1\x3c\x5a\x3a\x8f\x2c\x65\xb0\x97\x0f\x2c\x50\x2a\x54\x6e\xcf\x5b\x30\xc6\x55\x04\x15\x48\x13\x58\x1d\xd7\xa6\x07\x12\xe7\xbe\xcd\xc4\x23\x61\x53\x4f\x38\x9d\x7c\x3c\x2b\x94\x59\x0a\xb7\x98\xa9\x43\xf7\xa1\xd4\xf1\x6c\x54\xac\xd5\x51\xa1\x60\xdd\x6e\x87\x6a\x26\xe6\x83\x62\xe5\x10\x71\x65\xcf\x90\x05\x0f\xcb\xfc\x4d\x5d\x6d\x1a\xdc\x71\x2a\x1d\x1d\xc9\x1b\x54\xb5\xad\x80\x74\xfb\xdd\xd6\x25\x57\x30\x63\x99\x6c\x57\x77\xb1\x26\x81\x39\x16\x25\x33\xe6\xae\xd4\xa7\x08\xa7\x41\x75\xfb\xc7\x49\x58\xc1\x99\x6c\xf3\x12\x18\xcb\xc8\x6e\xd7\xb8\x90\x4f\x6c\xdd\x39\xff\x33\x45\x53\x08\x54\x89\x4f\x0a\x55\x06\x9b\x89\x0e\x47\x37\x41\xb4\x2b\x76\xd3\xbc\x03\x0a\x9f\x3e\x36\x09\xef\x7a\x8b\xa4\x7a\x4c\x7f\x22\xc6\x61\xd2\xda\x37\x4e\x46\x6d\x06\x94\xae\xa3\x0b\xf4\x91\x9e\xce\x01\x66\x33\xe0\xb6\xb8\x26\x2b\xbb\x65\x2f\x52\xca\xbe\x52\x61\x02\x03\x42\x09\xad\x83\x8e\x94\x39\xcf\xb4\x83\xa6\x13\xa4\x1e\x05\x4a\xc1\x97\xa5\x4f\x2f\x92\x04\x95\xc9\x63\xdf\xa3\x45\xbd\x5f\xbd\x7e\x16\x6e\x03\x39\x28\x02\x0b\xd4\xed\x6b\x9a\x54\xdb\xf5\x95\x20\x8f\xbb\xa3\x1d\x68\xd9\xe7\xc5\xf9\xe6\xf6\x26\xb0\xdf\x94\x61\x79\x8b\x89\x5b\xe6\xc3\x7b\x7f\x8d\xd0\xfc\xc2\xa0\xfd\x0b\x1e\x50\x54\x66\xaf\x9a\xbe\x60\xf3\x5c\xd5\x4a\xe1\xf6\x30\x0a\x1d\xf2\x78\xf5\x6d\xb7\x05\x07\xf6\x12\xf5\xe4\xd9\xef\xfa\x23\xdf\x4c\xf5\xb4\xcf\x45\x12\x4d\x19\x1f\xb2\xcc\x2e\x90\xc4\x9f\x39\xa6\x86\xcb\x8f\x79\xb4\xfb\x6e\x97\xca\xdb\xe4\x7b\x94\x87\x7e\xb4\xf1\x43\x5c\x2f\x4d\x11\xad\xb1\xc4\xb4\x16\x6a\x5e\xbd\xfd\xa0\x0c\xc1\x1d\x17\x79\x45\x7a\x3e\x6f\x79\x74\x7b\xa1\x44\x99\x6c\x61\xae\xf1\x76\x4c\x8b\x4f\x84\x99\xee\x46\x71\x5c\x77\x71\x23\x9c\x1a\xa5\x6b\x8b\x09\x54\xa2\x51\xb8\x1d\xdd\x9f\x7a\x3d\xdf\x59\x24\x9d\xb1\xcd\x75\x99\x09\xeb\xb0\x02\x9a\x7a\xd6\x97\xc2\x74\xb6\xb5\x27\x66\xf9\xa2\x21\xc9\x67\xd1\xef\x6a\x16\x97\xba\x0f\x7f\x99\x39\xd8\x80\xda\x47\xf5\x91\xef\x84\xa4\x5f\x84\x4a\x5c\x3c\x1e\x06\xa8\x86\x41\x3c\x4b\x37\x8f\xe8\x33\x8b\x59\x75\x7b\xf7\xd6\x1f\x3d\xfd\xf0\xc8\x44\x09\xf7\x30\x6b\x59\xb3\x0c\xbc\x5e\xcf\xd5\xaf\x96\xfb\x52\xe0\x01\xca\x98\x6c\xfa\x4f\xe0\xb6\x27\x53\xec\xf8\xe0\x26\xda\x75\xec\xb4\xf3\x12\xbc\x13\xd6\x47\x25\x4c\x36\x4b\x7f\x76\xe0\x3e\x7a\x39\xfa\x77\x00\x00\x00\xff\xff\x85\x7f\x10\xa7\xf4\x27\x00\x00") func coredns116JsonBytes() ([]byte, error) { return bindataRead( @@ -149,11 +149,11 @@ func coredns116Json() (*asset, error) { } info := bindataFileInfo{name: "coredns-1.16.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb2, 0x4a, 0x2d, 0xc0, 0xc0, 0x44, 0x91, 0xb8, 0x4a, 0x68, 0xe9, 0x44, 0x50, 0x1, 0x27, 0x85, 0x8b, 0xd7, 0x19, 0x2a, 0x90, 0xbe, 0x39, 0x46, 0xc, 0xc8, 0xb8, 0x3a, 0x93, 0xd7, 0x45, 0xf0}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9d, 0x70, 0x23, 0x87, 0xb4, 0xbb, 0xaf, 0x6f, 0x43, 0xc2, 0xf2, 0xe, 0xd2, 0xc1, 0x68, 0x9c, 0xb8, 0x1c, 0xf1, 0x3, 0xac, 0x82, 0xf4, 0x54, 0x6d, 0x63, 0xf3, 0x36, 0xa2, 0x7c, 0xa2, 0x1}} return a, nil } -var _coredns117Json = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5f\x73\x1b\xb9\x0d\x7f\xf7\xa7\xd8\xd9\x99\xbc\x9d\x64\x29\x3e\xbb\x39\xbf\xf9\x2c\x37\xe7\x69\xec\x6a\x6c\xe7\x5e\x9a\x9b\x1b\x8a\x0b\x49\xac\xb9\x04\x0b\x72\x65\x2b\x19\x7f\xf7\x0e\xf7\x8f\xb4\x7f\xc8\x95\xe4\x3a\x9d\x74\xa6\x7a\x48\xd6\x4b\x00\x04\x01\xfc\x40\x80\xdc\x6f\x47\x51\x14\x33\x2d\x7e\x07\x32\x02\x55\x7c\x1e\xc5\xab\x71\xfc\x93\x7b\x2b\x2c\xa4\x26\x3e\x8f\xfe\x71\x14\x45\x51\xf4\x2d\xff\x37\x44\x9c\x8f\x3c\x0a\x95\xb8\x77\xf7\x40\x2b\xc1\x61\x3b\x90\x82\x65\x09\xb3\x2c\x3e\xdf\x88\x71\x82\x94\x42\xcb\xac\x40\x65\x1a\x03\x51\x14\x6b\xc2\x14\xec\x12\x32\x33\x14\x78\xac\x91\xac\x93\xfb\xcb\xf8\xf4\x64\x23\xd4\x43\x67\x38\x31\x0d\x8e\xd2\x52\x06\xf1\x86\xf0\x65\xcb\x13\x4b\x36\x03\xd9\x99\x0f\x1e\xcd\x90\xa5\xec\x2b\x2a\xf6\x64\x86\x1c\xd3\x63\x8e\xa9\x46\x05\x2a\x9f\xf8\x31\x9b\xc1\x20\x51\xa6\x39\xf9\xe3\x07\x33\x60\x5a\xf7\x10\x64\x33\x20\x05\x16\x72\xed\xb8\xcc\x8c\x05\x1a\x98\xd2\x3a\x95\x9a\x3d\x2c\x8a\xa5\x39\xdd\x25\x12\x4c\x6e\xef\xfd\x2b\xaa\x88\x3c\x3a\xe4\x63\x46\x33\xbe\x25\x30\x6b\x63\x21\xad\x24\x6d\xe4\xc4\x46\x03\x6f\xba\xc7\x59\x7d\xeb\xfe\xe2\x57\x37\x5a\x6d\xea\xf6\xca\x4b\xee\xf8\x3c\x3a\x3d\x69\xbf\x27\xb4\xc8\x51\x3a\xb6\xcf\x93\x69\x9b\xcd\x32\x5a\x80\x9d\x56\xcc\xb5\xc1\x97\x9f\xf6\xd2\x63\x60\xb9\x7e\x8d\x2e\x0f\x97\x87\xe8\xb2\x79\xfe\xa3\x66\x6c\x03\x12\xb8\x45\x6a\x07\x97\x2f\x4e\xbc\x9e\x34\x60\x1c\xac\x2e\xe6\x73\xa1\x84\x5d\x3b\x86\x5b\x54\xf5\x08\x89\xed\xba\x08\xf0\xcb\x22\x98\xae\xa7\x1b\x4f\x1e\xd5\xa4\x1d\x8e\xd5\x0b\xce\x31\x53\xf6\x40\xc8\xfe\xc7\xc0\xe2\x48\xb0\x17\xae\x7a\x23\xbf\x2b\x65\x77\xe0\x1f\x68\xae\xae\x29\x1c\x26\xe7\x42\xe6\x13\x0c\xcf\x4f\x4f\xa2\x6f\x5f\x94\x1b\x00\x22\x24\x53\x3c\x2f\x81\x49\xbb\x2c\x9e\xb7\xc8\x8e\xca\x4c\x30\x94\xc8\x99\x8c\x84\x1a\xb0\x24\xa1\x21\x23\xcd\x22\xa1\xcf\x8a\x87\x52\x5a\x14\x69\x4c\x4c\x24\x94\x01\x9e\x11\x54\x2f\x33\x6d\x2c\x01\x4b\xab\xbf\xe7\x4c\x4a\xbb\x24\xcc\x16\x4b\xbf\xbc\x82\xf0\xa5\xf8\x6f\x9b\x35\xa3\x73\x97\x53\x8b\xb7\x73\xa4\x27\x46\x49\x34\x8c\x8e\xc1\xf2\x63\x02\x83\x72\x35\xe4\xa8\xe6\xc5\x38\x67\x7c\x09\xd1\xc9\xa8\xf8\x4b\x22\xea\xe2\x89\x40\x22\x4b\xaa\xb7\x2c\x99\x31\xc9\x14\x87\x2f\xea\xe5\x8b\xea\xe6\x99\x2a\xee\x2e\x51\xcd\xc5\xe2\x86\xe9\xff\x87\x5c\x2d\xe4\x98\xd6\xe6\xd8\x07\xd3\x09\x68\x89\xeb\x14\x7e\x60\x88\xbe\xd5\x3e\xf6\x1a\xd3\xf6\x6d\x63\x84\x0b\x02\x63\x26\xc0\x12\x29\x14\xdc\x03\x47\x95\x38\x2b\x9c\x8d\x46\xb5\x39\x08\xb4\x14\x9c\xb9\x81\xf7\x8d\xd7\x2b\xe1\xbc\xf3\x9b\x30\x16\x69\xfd\x49\xa4\xc2\x99\x65\x3c\xda\x23\xf1\xa7\xcc\xf2\xe5\x27\x9f\xd1\x5f\x67\xf6\x5d\x81\x5a\xdf\x98\x1a\xfb\x8a\x25\x66\x61\xb1\x6e\xeb\x47\x28\xa5\x50\x8b\xcf\x3a\x61\x16\xba\x1a\xa6\xec\xf9\x3e\xa3\x45\x6e\xf4\xf7\xa7\xef\xda\xaa\xa4\xec\xf9\xb3\x62\x2b\x26\x24\x9b\xe5\x69\x70\x1c\xda\xad\x37\xbb\xd6\x5d\x63\x42\xaf\xae\x16\x52\x2d\xbb\xea\xf8\x83\x3d\xea\x2f\x23\x7b\xec\x9c\x59\x18\x54\x5a\x01\x7f\x1f\x37\xb8\x5e\x5a\x2b\xe5\x04\xb9\xfc\x07\x91\x82\xb1\x2c\x75\xe6\x57\x99\x94\x2d\x32\x2f\xbc\x7a\x74\xd8\xe1\xeb\xdd\xde\xae\xfb\xbb\x6d\xf2\x0e\x10\x0a\x5b\x6d\x4b\x8b\x8e\x92\x0a\x13\xb8\x08\x8f\xe7\x58\xf8\x57\x26\x08\x92\x49\x46\x42\x2d\xee\xf9\x12\x92\xcc\xf9\xf3\x7a\xa1\x70\xf3\xfa\xea\x19\x78\x66\x8b\x7c\xd6\x95\x51\xce\x73\x5f\x22\xe6\x01\x28\x6d\xd7\x98\xdb\x9f\x8f\x3d\xda\x00\xeb\xea\x59\x53\x51\x30\x85\x25\xf4\x49\xc9\x25\x3d\x42\x5e\x66\xcd\xc0\xb2\x61\x33\x67\x61\xd7\x1f\x0d\x4e\xd4\x40\xac\x00\x7d\x7c\xad\xfa\x69\x57\x4c\x66\xd0\xaf\x65\x4e\x27\x85\xca\x9e\xe3\x1e\x9a\x3f\x82\x63\x2f\x61\x05\x5e\x69\x00\x46\x7c\xf9\xdf\x37\x01\x4b\x93\xb3\x9f\x5f\x69\x82\xc0\x88\x9f\xc3\x47\xdd\xa5\x6c\x53\x75\xcc\x1c\x6b\x4c\x2e\x94\x15\xfd\xc8\xd1\x04\x73\xa0\x43\xa0\xe3\x33\x93\xdf\x91\xb9\x06\xe5\xec\x0e\x4f\x01\xdc\x45\x9b\x14\x75\xef\xdf\xae\x5a\xa4\x07\x61\xac\x3f\xc8\xb6\x61\x56\x25\xb4\xbe\x50\x39\x2c\xb0\xf6\x0f\xad\x28\x94\x44\xdb\xbf\x70\x84\x85\x63\x2c\xcc\x15\x04\x66\x6c\x51\xa3\xc4\xc5\xfa\x6f\xa5\x6d\x1a\xe8\x5b\xa2\xb1\x79\x45\xe4\x0f\x5e\xbf\xd0\xf8\x09\xc4\x62\x59\xd4\x27\x23\x0f\x45\x57\xfb\xb6\xd6\x2f\xfd\x1b\x21\x2a\xcb\x84\x02\xf2\x59\xdb\x13\xf6\x8c\x16\x21\xbf\xc4\x03\xd7\x59\x78\x5d\x1b\xe7\xfd\x47\xb9\x29\x1e\x6f\xfa\xac\xae\xee\x5d\xe6\x58\xa4\xac\x28\x58\xde\x99\x61\xf2\x48\x43\xe0\x34\x7c\x67\x86\xef\xcc\x31\x3c\x9a\x4a\xe6\xf9\x6a\x3c\x3c\x1b\x9e\x79\x26\x2f\xf8\xa7\x99\x94\x53\x94\x82\xe7\x7e\xb9\x9e\xdf\xa2\x9d\x12\x98\x7a\xf1\x5d\x63\x91\x62\x05\x0a\x8c\x99\x12\xce\xba\x55\x54\x49\x34\x67\x42\x66\x04\x0f\x4b\x02\xb3\x44\xe9\x6a\xfa\x53\xef\xda\x97\xd6\xea\x8f\x60\x83\xd8\x8c\x35\xb3\x4b\xa7\xd6\x71\xd1\x5c\x06\xc0\x51\x9d\x79\x7c\x18\x7d\x18\x05\x28\x0c\x5f\x42\x51\x71\xff\xf6\xf0\x30\xf5\xc5\x99\x37\xca\x62\x97\x68\x04\x93\x13\x90\x6c\x5d\x2f\xa6\xbd\xc4\x1a\x48\x60\xb2\x25\x1b\xfb\xc9\x4c\xc6\x39\x18\x53\x37\xcf\xd8\x4b\x68\x45\x0a\x98\xd9\xad\xc0\xd3\x6e\xca\xf6\xf8\x28\xdc\x5b\x6c\x35\xf5\x1c\x77\x55\xbf\x80\x2b\x36\x70\x98\xfa\x0f\x98\x3a\xd3\xfb\xa7\x8e\x7c\xe7\x62\xfb\xba\xe3\x0d\x55\xf3\x1c\x9d\x79\xd5\x7b\xb8\x7c\x73\xf5\x7e\x19\xef\x54\x30\x05\x4b\x82\xef\x65\xbf\x90\x82\x7b\x65\x10\x02\x96\x88\xd7\xe0\xd9\xbb\x80\xff\x01\x3c\x7f\x77\x88\x8e\xf7\x82\x28\x81\xc1\x8c\x38\xf8\x1a\xa8\xa8\xc8\xb3\xa9\xb0\xa1\xd1\xbc\x43\x4c\x91\xf2\x8c\x3d\xfe\xcb\xe8\x46\xec\x6f\x00\xd7\xd6\x80\xe9\x13\xcd\x75\x96\xcb\x1d\x8d\xd2\x90\x7f\xb6\xb3\x07\x27\xdf\xcb\x0c\xf9\x39\x9f\xb0\xeb\x4b\x54\x16\x9e\x43\x71\x13\x33\x29\xf1\x69\x4a\x62\x25\x24\x2c\xe0\xca\x70\x26\x59\x59\x39\xce\x99\x34\xe0\x5d\x28\x67\x9a\xcd\x84\x14\x56\x04\xad\xec\x44\x27\x49\x4f\x2d\x15\xdf\x5e\x3d\xfc\xf9\xeb\xf5\xed\xe4\xcf\xfb\xab\xbb\xdf\xaf\x2f\xaf\xfc\x05\x8a\x07\x59\x39\x77\x42\xa8\xfb\xa4\x33\x29\x03\x02\x0f\x70\x27\x4b\xfe\xae\xe4\xfa\x0e\xd1\xfe\x55\x48\x28\x8f\x8a\xce\x23\x4b\x19\xec\xe5\x03\x0b\x94\x0a\x95\xdb\xf3\x06\x8c\x71\x15\x41\x05\xd2\x04\x56\xc7\xb5\xe1\x81\xc4\x85\x6f\x33\xf1\x48\xd8\xd4\x13\x4e\x27\x1f\xcf\x0a\x65\x96\xc2\x0d\x66\xea\xd0\x7d\x28\x75\x3c\x1b\x15\x6b\xc5\x53\x28\x58\xb7\xdb\xa1\x9a\x8b\xc5\xa0\x98\x39\x44\x5c\xd9\x33\x64\xc1\xc3\x32\x7f\x53\x57\x9b\x06\x77\x9c\x4a\x47\x47\xf2\x06\xa5\x6c\x2b\x20\xdd\x7e\xb7\x75\xc9\x04\xe6\x2c\x93\xed\xea\x2e\xd6\x24\x30\xc7\xa2\x64\xc6\xdc\x96\xfa\x14\xe1\x34\xa8\x6e\xf3\x38\x09\x2b\x38\x93\x6d\x5e\x02\x63\x19\xd9\xed\x1c\x17\xf2\x89\xad\x3b\xe7\x79\xa6\xe8\x04\x81\x2a\xf1\x49\xa1\xca\x60\x33\xd0\xe1\xe8\x26\x88\x76\x99\x6e\x9a\x77\x3a\xe1\xd3\xc4\x26\xe1\x6d\x6f\x91\x54\x8f\xe9\x8f\xc4\x38\x4c\x5b\xfb\xc6\xc9\xa8\xcd\x80\xd2\xb5\x71\x81\xe6\xd1\xd3\x2e\xc0\x7c\x0e\xdc\x16\xd7\x5e\x65\x8b\xec\x45\x4a\xd9\x4c\x2a\x4c\x60\x40\x28\xa1\x75\x70\x91\x32\xe7\x99\x76\xd0\x74\x82\xd4\xa3\x40\x29\xf8\xb2\xf4\xe9\x45\x92\xa0\x32\x79\xec\x7b\xb4\xa8\x37\xa9\x57\xcf\xc2\x6d\x20\x07\x45\x60\x81\xba\x7d\x4d\x93\x6a\xbb\x9e\x08\xf2\xb8\x3b\xda\x81\x96\x7d\x16\xce\x37\xb7\x31\x81\xfd\xa6\x0c\xcb\x1b\x4c\xdc\x34\x3f\xbf\xf7\xd7\x08\xcd\x2f\x06\xda\xbf\xe0\xa9\x44\x65\xf6\xaa\xd3\x0b\x76\xcc\x55\xad\x14\xee\x09\xa3\xd0\xc9\x8e\x57\xdf\x76\x5b\x70\x60\x2f\x51\x4f\x9e\xfd\xae\x3f\xf2\x8d\x54\x4f\xfb\x5c\x0c\xd1\x8c\xf1\x21\xcb\xec\x12\x49\x7c\xcd\x31\x35\x7c\xfc\x90\x47\xbb\xef\xb6\xa8\xbc\x1d\xbe\x43\x79\xe8\x47\x18\x3f\xc4\x75\xd1\x0c\xd1\x1a\x4b\x4c\x6b\xa1\x16\xd5\xea\x07\x65\x08\xee\xb8\x98\x2b\xd2\xf3\x79\xcb\xa3\xdb\x0b\x22\xca\x64\x0b\x73\x8d\xd5\x31\x2d\x3e\x12\x66\xba\x1b\xc5\x71\xdd\xc5\x8d\x70\x6a\x94\xae\x2d\x26\x50\x89\x46\xe1\x76\x74\x7f\xea\xf5\x7c\x37\x91\x74\xde\x6d\xae\xbf\x4c\x58\x87\x15\xd0\xcc\x33\xbf\x14\xa6\xb3\xad\x3d\x31\xcb\x97\x0d\x49\x3e\x8b\x7e\x57\xb3\xb8\xd4\x7d\xf8\x62\x16\x60\x03\x6a\x1f\xd5\xdf\x7c\x27\x24\xfd\x2a\x54\xe2\xe2\xf1\x30\x40\x35\x0c\xe2\x99\xba\x79\xe4\x9e\x59\xcc\xaa\xdb\xb8\xb7\xfe\x88\xe9\x87\x47\x26\x4a\xb8\x83\x79\xcb\x9a\x65\xe0\xf5\x7a\xae\x7e\x55\xdc\x97\x02\x0f\x50\xc6\x64\xb3\x7f\x02\xb7\x3d\x99\x62\xc7\x07\x34\xd1\xae\x63\xa7\x9d\x97\xda\x9d\xb0\x3e\x2a\x61\xb2\x99\xfa\x93\x03\xf7\xd1\xcb\xd1\xbf\x03\x00\x00\xff\xff\xcc\xb2\x2a\xb9\xc4\x27\x00\x00") +var _coredns117Json = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5f\x73\x1b\xb9\x0d\x7f\xf7\xa7\xd8\xd9\x99\xbc\x9d\x64\x29\x8e\xdd\x9c\xdf\x7c\xb6\x9b\xf3\x34\x76\x35\xb6\x73\x2f\xcd\xcd\x0d\xc5\x85\x24\x56\x5c\x82\x05\xb9\xb2\x75\x19\x7f\xf7\x0e\xf7\x8f\xb4\x7f\xc8\x95\xe4\x3a\x9d\x74\xa6\x7a\x48\xd6\x24\x00\x62\x01\xfc\x40\x80\xdc\x6f\x47\x51\x14\x33\x2d\x7e\x03\x32\x02\x55\x7c\x1e\xc5\xab\x71\xfc\x93\x1b\x15\x16\x52\x13\x9f\x47\xff\x38\x8a\xa2\x28\xfa\x96\xff\x1b\x22\xce\x67\x96\x42\x25\x6e\xec\x01\x68\x25\x38\x6c\x27\x52\xb0\x2c\x61\x96\xc5\xe7\x1b\x31\x4e\x90\x52\x68\x99\x15\xa8\x4c\x63\x22\x8a\x62\x4d\x98\x82\x5d\x40\x66\x86\x02\x8f\x35\x92\x75\x72\x7f\x1e\x9f\x9e\x6c\x84\x7a\xe8\x0c\x27\xa6\xc1\x51\x5a\xca\x20\xde\x10\xbe\x6c\x79\x62\xc9\xa6\x20\x3b\xeb\xc1\xd2\x0c\x59\xca\xfe\x44\xc5\x9e\xcc\x90\x63\x7a\xcc\x31\xd5\xa8\x40\xe5\x0b\x2f\xb3\x29\x0c\x12\x65\x9a\x8b\x2f\x3f\x9a\x01\xd3\xba\x87\x20\x9b\x02\x29\xb0\x90\x6b\xc7\x65\x66\x2c\xd0\xc0\x94\xd6\xa9\xd4\xec\x61\x51\x2c\xcd\xe9\x2e\x91\xe0\xea\xee\xc1\xff\x46\x15\x91\x47\x87\x7c\xce\x68\xc6\xb7\x04\x66\x6d\x2c\xa4\x95\xa4\x8d\x9c\xd8\x68\xe0\x4d\xf7\x38\xab\x6f\xdd\x5f\xfc\xea\x46\xab\x2d\xdd\x7e\xf3\x92\x3b\x3e\x8f\x4e\x4f\xda\xe3\x84\x16\x39\x4a\xc7\xf6\xe5\x6a\xd2\x66\xb3\x8c\xe6\x60\x27\x15\x73\x6d\xf2\xe5\xa7\xbd\xf4\x18\x58\xae\x5f\xa3\xcb\xe3\xe5\x21\xba\x6c\x9e\x7f\xaf\x19\xdb\x80\x04\x6e\x91\xda\xc1\xe5\x8b\x13\xaf\x27\x0d\x18\x07\xab\x8b\xd9\x4c\x28\x61\xd7\x8e\xe1\x0e\x55\x3d\x42\x62\xbb\x2e\x02\xfc\xb2\x08\xa6\x9b\xc9\xc6\x93\x47\x35\x69\x87\x63\xf5\x82\x73\xcc\x94\x3d\x10\xb2\xff\x31\xb0\x38\x12\xec\x85\xab\xde\xc8\xef\x4a\xd9\x1d\xf8\x07\x9a\xab\x6b\x0a\x87\xc9\x99\x90\xf9\x02\xc3\xf3\xd3\x93\xe8\xdb\x57\xe5\x26\x80\x08\xc9\x14\xcf\x0b\x60\xd2\x2e\x8a\xe7\x2d\xb2\xa3\x32\x13\x0c\x25\x72\x26\x23\xa1\x06\x2c\x49\x68\xc8\x48\xb3\x48\xe8\xb3\xe2\xa1\x94\x16\x45\x1a\x13\x13\x09\x65\x80\x67\x04\xd5\x60\xa6\x8d\x25\x60\x69\xf5\xf7\x8c\x49\x69\x17\x84\xd9\x7c\xe1\x97\x57\x10\xbe\x14\xff\x6d\xb3\x66\x74\xee\x72\x6a\x31\x3a\x43\x7a\x62\x94\x44\xc3\xe8\x18\x2c\x3f\x26\x30\x28\x57\x43\x8e\x6a\x56\xcc\x73\xc6\x17\x10\x9d\x8c\x8a\xbf\x24\xa2\x2e\x9e\x08\x24\xb2\xa4\x1a\x65\xc9\x94\x49\xa6\x38\x7c\x55\x2f\x5f\x55\x37\xcf\x54\x71\x77\x89\x6a\x26\xe6\xb7\x4c\xff\x3f\xe4\x6a\x21\xc7\xb4\x36\xc7\x3e\x98\x5e\x81\x96\xb8\x4e\xe1\x07\x86\xe8\x5b\xed\x63\xaf\x31\x6d\xdf\x36\x46\x38\x27\x30\xe6\x0a\x58\x22\x85\x82\x07\xe0\xa8\x12\x67\x85\xb3\xd1\xa8\xb6\x06\x81\x96\x82\x33\x37\xf1\xbe\x31\xbc\x12\xce\x3b\xbf\x0a\x63\x91\xd6\x9f\x45\x2a\x9c\x59\xc6\xa3\x3d\x12\x7f\xca\x2c\x5f\x7c\xf6\x19\xfd\x75\x66\xdf\x15\xa8\xf5\x8d\xa9\xb1\xaf\x58\x62\x16\xe6\xeb\xb6\x7e\x84\x52\x0a\x35\xff\xa2\x13\x66\xa1\xab\x61\xca\x9e\x1f\x32\x9a\xe7\x46\x7f\x7f\xfa\xae\xad\x4a\xca\x9e\xbf\x28\xb6\x62\x42\xb2\x69\x9e\x06\xc7\xa1\xdd\x7a\xb3\x6b\xdd\x37\x16\xf4\xea\x6a\x21\xd5\xb2\xab\x8e\x3f\xd8\xa3\xfe\x32\xb2\xc7\xce\x99\x85\x41\xa5\x15\xf0\xf7\x71\x83\xeb\xa5\xf5\xa6\x9c\x20\x97\xff\x28\x52\x30\x96\xa5\xce\xfc\x2a\x93\xb2\x45\xe6\x85\x57\x8f\x0e\x3b\x7c\xbd\xdb\xdb\x75\x7f\xb7\x4d\xde\x01\x42\x61\xab\x6d\x69\xd1\x51\x52\x61\x02\x17\xe1\xf9\x1c\x0b\xff\xca\x04\x41\x72\x95\x91\x50\xf3\x07\xbe\x80\x24\x73\xfe\xbc\x99\x2b\xdc\x0c\x5f\x3f\x03\xcf\x6c\x91\xcf\xba\x32\xca\x75\x1e\x4a\xc4\x3c\x02\xa5\xed\x1a\x73\xfb\xf3\xb1\x47\x1b\x60\x5d\x3f\x6b\x2a\x0a\xa6\xb0\x84\x3e\x29\xb9\xa4\x25\xe4\x65\xd6\x14\x2c\x1b\x36\x73\x16\x76\xfd\xd1\xe0\x44\x0d\xc4\x0a\xd0\xc7\x37\xaa\x9f\x76\xc5\x64\x06\xfd\x5a\xe6\x74\x52\xa8\xec\x39\xee\xa1\xf9\x3d\x38\xf7\x12\x56\xe0\x95\x06\x60\xc4\x17\xff\x7d\x13\xb0\x34\x39\xfb\xd0\x2b\xca\x11\x51\x7a\xf6\xe1\x95\x76\x0a\xcc\xf8\x39\x7c\xd4\x5d\xca\x36\x55\xc7\x17\xb1\xc6\xe4\x42\x59\xd1\x0f\x2f\x4d\x30\x03\x3a\x04\x5f\x3e\x5b\xfa\xbd\x9d\x6b\x50\xae\xee\x40\x17\x00\x67\xb4\xc9\x63\x0f\xfe\x3d\xad\x45\x7a\x10\x10\xfb\x23\x71\x1b\x8b\x55\xd6\xdb\x11\x04\x07\x44\xdf\xfe\xf1\x17\x85\x32\x6d\xfb\x17\x8e\xb0\x70\x8c\x85\xb9\x82\xe8\x8d\x2d\x6a\x94\x38\x5f\xff\xad\xb4\x4d\x03\xa2\x0b\x34\x36\x2f\x9b\xfc\xc1\xeb\x17\x1a\x3f\x81\x98\x2f\x8a\x22\x66\xe4\xa1\xe8\x6a\xdf\xd6\xfa\xa5\x7f\xb7\x44\x65\x99\x50\x40\x3e\x6b\x7b\xc2\x9e\xd1\x3c\xe4\x97\x78\xe0\xda\x0f\xaf\x6b\xe3\xbc\x49\x29\x77\xce\xe3\x4d\x33\xd6\xd5\xbd\xcb\x1c\x8b\x94\x15\x55\xcd\x3b\x33\x4c\x96\x34\x04\x4e\xc3\x77\x66\xf8\xce\x1c\xc3\xd2\x54\x32\xcf\x57\xe3\xe1\xd9\xf0\x6c\x00\x4b\x33\xcd\x84\x4c\x86\x63\x8f\x1e\x85\xa8\x49\x26\xe5\x04\xa5\xe0\xb9\x8b\x6e\x66\x77\x68\x27\x04\xa6\x5e\xac\xd7\x58\xa4\x58\x81\x02\x63\x26\x84\xd3\x6e\xd5\x55\x12\xcd\x98\x90\x19\xc1\xe3\x82\xc0\x2c\x50\xba\x1e\xe0\xd4\x6b\x86\x85\xb5\xfa\x13\xd8\x20\x4c\x63\xcd\xec\xc2\xa9\x75\x5c\x34\xa3\x01\x9c\x54\x67\x24\x1f\x47\x1f\x47\x01\x0a\xc3\x17\x50\x54\xe8\xbf\x3e\x3e\x4e\x7c\x21\xe7\x0d\xb8\xd8\xe5\x1c\xc1\xe4\x15\x48\xb6\xae\x17\xdf\x5e\x62\x0d\x24\x30\xd9\x92\x8d\xfd\x64\x26\xe3\x1c\x8c\xa9\x9b\x67\xec\x25\xb4\x22\x05\xcc\xec\x56\xe0\x69\x37\x7b\x7b\x7c\x14\xee\x45\xb6\x9a\x7a\x8e\xc7\xaa\x5f\xc0\x15\x1b\x64\x4c\xfc\x07\x52\x9d\xe5\xfd\x4b\x47\xbe\x73\xb4\x7d\xdd\xf1\x86\xaa\x79\x8e\xda\xbc\xea\x3d\x5e\xbe\xb9\x7a\x3f\x8f\x77\x2a\x98\x82\x25\xc1\xf7\xb2\x5f\x48\xc1\xbd\x92\x09\x01\x4b\xc4\x6b\xf0\xec\x7d\x81\xff\x01\x3c\x7f\x77\x88\x8e\xf7\x82\x28\x81\xc1\x8c\x38\xf8\x1a\xae\xa8\xc8\xb3\xa9\xb0\xa1\xd9\xbc\xa3\x4c\x91\xf2\x8c\x3d\xfe\xcb\xe8\x56\xec\x6f\x00\xd7\x06\x81\xe9\x13\xcd\x75\x96\xcb\x1d\x8d\xd2\x90\x7f\xb6\xab\x07\x17\xdf\xcb\x0c\xf9\xb9\xa0\xb0\xeb\x4b\x54\x16\x9e\x43\x71\x13\x33\x29\xf1\x69\x42\x62\x25\x24\xcc\xe1\xda\x70\x26\x59\x59\x44\xce\x98\x34\xe0\x7d\x51\xce\x34\x9b\x0a\x29\xac\x08\x5a\xd9\x89\x4e\x92\x9e\xb2\x2a\xbe\xbb\x7e\xfc\xe3\x97\x9b\xbb\xab\x3f\x1e\xae\xef\x7f\xbb\xb9\xbc\xf6\xd7\x2a\x1e\x64\xe5\xdc\x09\xa1\xee\x93\xce\xa4\x0c\x08\x3c\xc0\x9d\x2c\xf9\xbb\x92\xeb\x7b\x44\xfb\x57\x21\xa1\x3c\x5a\x3a\x8f\x2c\x65\xb0\x97\x0f\x2c\x50\x2a\x54\x6e\xcf\x5b\x30\xc6\x55\x04\x15\x48\x13\x58\x1d\xd7\xa6\x07\x12\xe7\xbe\xcd\xc4\x23\x61\x53\x4f\x38\x9d\x7c\x3c\x2b\x94\x59\x0a\xb7\x98\xa9\x43\xf7\xa1\xd4\xf1\x6c\x54\xac\xd5\x51\xa1\x60\xdd\x6e\x87\x6a\x26\xe6\x83\x62\xe5\x10\x71\x65\xcf\x90\x05\x0f\xcb\xfc\x4d\x5d\x6d\x1a\xdc\x71\x2a\x1d\x1d\xc9\x1b\x54\xb5\xad\x80\x74\xfb\xdd\xd6\x25\x57\x30\x63\x99\x6c\x57\x77\xb1\x26\x81\x39\x16\x25\x33\xe6\xae\xd4\xa7\x08\xa7\x41\x75\xfb\xc7\x49\x58\xc1\x99\x6c\xf3\x12\x18\xcb\xc8\x6e\xd7\xb8\x90\x4f\x6c\xdd\x39\xff\x33\x45\x53\x08\x54\x89\x4f\x0a\x55\x06\x9b\x89\x0e\x47\x37\x41\xb4\x2b\x76\xd3\xbc\x03\x0a\x9f\x3e\x36\x09\xef\x7a\x8b\xa4\x7a\x4c\x7f\x22\xc6\x61\xd2\xda\x37\x4e\x46\x6d\x06\x94\xae\xa3\x0b\xf4\x91\x9e\xce\x01\x66\x33\xe0\xb6\xb8\x26\x2b\xbb\x65\x2f\x52\xca\xbe\x52\x61\x02\x03\x42\x09\xad\x83\x8e\x94\x39\xcf\xb4\x83\xa6\x13\xa4\x1e\x05\x4a\xc1\x97\xa5\x4f\x2f\x92\x04\x95\xc9\x63\xdf\xa3\x45\xbd\x5f\xbd\x7e\x16\x6e\x03\x39\x28\x02\x0b\xd4\xed\x6b\x9a\x54\xdb\xf5\x95\x20\x8f\xbb\xa3\x1d\x68\xd9\xe7\xc5\xf9\xe6\xf6\x26\xb0\xdf\x94\x61\x79\x8b\x89\x5b\xe6\xc3\x7b\x7f\x8d\xd0\xfc\xc2\xa0\xfd\x0b\x1e\x50\x54\x66\xaf\x9a\xbe\x60\xf3\x5c\xd5\x4a\xe1\xf6\x30\x0a\x1d\xf2\x78\xf5\x6d\xb7\x05\x07\xf6\x12\xf5\xe4\xd9\xef\xfa\x23\xdf\x4c\xf5\xb4\xcf\x45\x12\x4d\x19\x1f\xb2\xcc\x2e\x90\xc4\x9f\x39\xa6\x86\xcb\x8f\x79\xb4\xfb\x6e\x97\xca\xdb\xe4\x7b\x94\x87\x7e\xb4\xf1\x43\x5c\x2f\x4d\x11\xad\xb1\xc4\xb4\x16\x6a\x5e\xbd\xfd\xa0\x0c\xc1\x1d\x17\x79\x45\x7a\x3e\x6f\x79\x74\x7b\xa1\x44\x99\x6c\x61\xae\xf1\x76\x4c\x8b\x4f\x84\x99\xee\x46\x71\x5c\x77\x71\x23\x9c\x1a\xa5\x6b\x8b\x09\x54\xa2\x51\xb8\x1d\xdd\x9f\x7a\x3d\xdf\x59\x24\x9d\xb1\xcd\x75\x99\x09\xeb\xb0\x02\x9a\x7a\xd6\x97\xc2\x74\xb6\xb5\x27\x66\xf9\xa2\x21\xc9\x67\xd1\xef\x6a\x16\x97\xba\x0f\x7f\x99\x39\xd8\x80\xda\x47\xf5\x91\xef\x84\xa4\x5f\x84\x4a\x5c\x3c\x1e\x06\xa8\x86\x41\x3c\x4b\x37\x8f\xe8\x33\x8b\x59\x75\x7b\xf7\xd6\x1f\x3d\xfd\xf0\xc8\x44\x09\xf7\x30\x6b\x59\xb3\x0c\xbc\x5e\xcf\xd5\xaf\x96\xfb\x52\xe0\x01\xca\x98\x6c\xfa\x4f\xe0\xb6\x27\x53\xec\xf8\xe0\x26\xda\x75\xec\xb4\xf3\x12\xbc\x13\xd6\x47\x25\x4c\x36\x4b\x7f\x76\xe0\x3e\x7a\x39\xfa\x77\x00\x00\x00\xff\xff\x85\x7f\x10\xa7\xf4\x27\x00\x00") func coredns117JsonBytes() ([]byte, error) { return bindataRead( @@ -169,7 +169,7 @@ func coredns117Json() (*asset, error) { } info := bindataFileInfo{name: "coredns-1.17.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb2, 0x4a, 0x2d, 0xc0, 0xc0, 0x44, 0x91, 0xb8, 0x4a, 0x68, 0xe9, 0x44, 0x50, 0x1, 0x27, 0x85, 0x8b, 0xd7, 0x19, 0x2a, 0x90, 0xbe, 0x39, 0x46, 0xc, 0xc8, 0xb8, 0x3a, 0x93, 0xd7, 0x45, 0xf0}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9d, 0x70, 0x23, 0x87, 0xb4, 0xbb, 0xaf, 0x6f, 0x43, 0xc2, 0xf2, 0xe, 0xd2, 0xc1, 0x68, 0x9c, 0xb8, 0x1c, 0xf1, 0x3, 0xac, 0x82, 0xf4, 0x54, 0x6d, 0x63, 0xf3, 0x36, 0xa2, 0x7c, 0xa2, 0x1}} return a, nil } diff --git a/pkg/addons/default/assets/aws-node.yaml b/pkg/addons/default/assets/aws-node.yaml index 52558e5be7..78ebe9b3b1 100644 --- a/pkg/addons/default/assets/aws-node.yaml +++ b/pkg/addons/default/assets/aws-node.yaml @@ -77,6 +77,7 @@ spec: operator: In values: - amd64 + - arm64 - key: "eks.amazonaws.com/compute-type" operator: NotIn values: @@ -90,6 +91,7 @@ spec: operator: In values: - amd64 + - arm64 - key: "eks.amazonaws.com/compute-type" operator: NotIn values: diff --git a/pkg/addons/default/assets/coredns-1.15.json b/pkg/addons/default/assets/coredns-1.15.json index 05695d5f9c..0c592cf9fb 100644 --- a/pkg/addons/default/assets/coredns-1.15.json +++ b/pkg/addons/default/assets/coredns-1.15.json @@ -128,7 +128,8 @@ "key": "beta.kubernetes.io/arch", "operator": "In", "values": [ - "amd64" + "amd64", + "arm64" ] } ] @@ -164,7 +165,7 @@ "-conf", "/etc/coredns/Corefile" ], - "image": "%s.dkr.ecr.%s.%s/eks/coredns:v1.6.6", + "image": "%s.dkr.ecr.%s.%s/eks/coredns:v1.6.6-eksbuild.1", "imagePullPolicy": "IfNotPresent", "livenessProbe": { "failureThreshold": 5, diff --git a/pkg/addons/default/assets/coredns-1.16.json b/pkg/addons/default/assets/coredns-1.16.json index 05695d5f9c..0c592cf9fb 100644 --- a/pkg/addons/default/assets/coredns-1.16.json +++ b/pkg/addons/default/assets/coredns-1.16.json @@ -128,7 +128,8 @@ "key": "beta.kubernetes.io/arch", "operator": "In", "values": [ - "amd64" + "amd64", + "arm64" ] } ] @@ -164,7 +165,7 @@ "-conf", "/etc/coredns/Corefile" ], - "image": "%s.dkr.ecr.%s.%s/eks/coredns:v1.6.6", + "image": "%s.dkr.ecr.%s.%s/eks/coredns:v1.6.6-eksbuild.1", "imagePullPolicy": "IfNotPresent", "livenessProbe": { "failureThreshold": 5, diff --git a/pkg/addons/default/assets/coredns-1.17.json b/pkg/addons/default/assets/coredns-1.17.json index 05695d5f9c..0c592cf9fb 100644 --- a/pkg/addons/default/assets/coredns-1.17.json +++ b/pkg/addons/default/assets/coredns-1.17.json @@ -128,7 +128,8 @@ "key": "beta.kubernetes.io/arch", "operator": "In", "values": [ - "amd64" + "amd64", + "arm64" ] } ] @@ -164,7 +165,7 @@ "-conf", "/etc/coredns/Corefile" ], - "image": "%s.dkr.ecr.%s.%s/eks/coredns:v1.6.6", + "image": "%s.dkr.ecr.%s.%s/eks/coredns:v1.6.6-eksbuild.1", "imagePullPolicy": "IfNotPresent", "livenessProbe": { "failureThreshold": 5, diff --git a/pkg/addons/default/aws_node.go b/pkg/addons/default/aws_node.go index fb92ce3c51..1f336fa8fd 100644 --- a/pkg/addons/default/aws_node.go +++ b/pkg/addons/default/aws_node.go @@ -6,11 +6,11 @@ import ( "github.com/kris-nova/logger" "github.com/pkg/errors" - "github.com/weaveworks/eksctl/pkg/addons" appsv1 "k8s.io/api/apps/v1" apierrs "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "github.com/weaveworks/eksctl/pkg/addons" "github.com/weaveworks/eksctl/pkg/kubernetes" ) @@ -21,6 +21,63 @@ const ( awsNodeImageFormatPrefix = "%s.dkr.ecr.%s.%s/amazon-k8s-cni" ) +// IsAWSNodeUpToDate will update the `aws-node` add-on and returns true +// if an update is available. +func IsAWSNodeUpToDate(rawClient kubernetes.RawClientInterface, region string) (bool, error) { + clusterDaemonSet, err := rawClient.ClientSet().AppsV1().DaemonSets(metav1.NamespaceSystem).Get(AWSNode, metav1.GetOptions{}) + if err != nil { + if apierrs.IsNotFound(err) { + logger.Warning("%q was not found", AWSNode) + return false, nil + } + return false, errors.Wrapf(err, "getting %q", AWSNode) + } + + // if DaemonSets is present, go through our list of assets + list, err := LoadAsset(AWSNode, "yaml") + if err != nil { + return false, err + } + + for _, rawObj := range list.Items { + resource, err := rawClient.NewRawResource(rawObj.Object) + if err != nil { + return false, err + } + if resource.GVK.Kind != "DaemonSet" { + continue + } + + daemonSet, ok := resource.Info.Object.(*appsv1.DaemonSet) + if !ok { + return false, fmt.Errorf("expected type %T; got %T", &appsv1.Deployment{}, resource.Info.Object) + } + container := &daemonSet.Spec.Template.Spec.Containers[0] + imageParts := strings.Split(container.Image, ":") + if len(imageParts) != 2 { + return false, fmt.Errorf("invalid container image: %s", container.Image) + } + + if !strings.HasSuffix(imageParts[1], "-eksbuild.1") { + imageParts[1] = imageParts[1] + "-eksbuild.1" + } + + container.Image = awsNodeImageFormatPrefix + ":" + imageParts[1] + if err := addons.UseRegionalImage(&daemonSet.Spec.Template, region); err != nil { + return false, err + } + tagMismatch, err := addons.ImageTagsDiffer( + container.Image, + clusterDaemonSet.Spec.Template.Spec.Containers[0].Image, + ) + if err != nil { + return false, err + } + return !tagMismatch, nil + } + return true, nil +} + // UpdateAWSNode will update the `aws-node` add-on and returns true // if an update is available. func UpdateAWSNode(rawClient kubernetes.RawClientInterface, region string, plan bool) (bool, error) { @@ -57,6 +114,10 @@ func UpdateAWSNode(rawClient kubernetes.RawClientInterface, region string, plan return false, fmt.Errorf("invalid container image: %s", container.Image) } + if !strings.HasSuffix(imageParts[1], "-eksbuild.1") { + imageParts[1] = imageParts[1] + "-eksbuild.1" + } + container.Image = awsNodeImageFormatPrefix + ":" + imageParts[1] if err := addons.UseRegionalImage(&daemonSet.Spec.Template, region); err != nil { return false, err diff --git a/pkg/addons/default/aws_node_test.go b/pkg/addons/default/aws_node_test.go index 7486061dec..5207d43e4e 100644 --- a/pkg/addons/default/aws_node_test.go +++ b/pkg/addons/default/aws_node_test.go @@ -13,7 +13,7 @@ import ( ) var _ = Describe("default addons - aws-node", func() { - Describe("can update aws-node add-on", func() { + Describe("can update aws-node add-on to multi-architecture images", func() { var ( rawClient *testutils.FakeRawClient ct *testutils.CollectionTracker @@ -52,7 +52,7 @@ var _ = Describe("default addons - aws-node", func() { }) - It("can update 1.14 sample to latest", func() { + It("can update 1.14 sample to latest multi-architecture image", func() { rawClient.AssumeObjectsMissing = false _, err := UpdateAWSNode(rawClient, "eu-west-1", false) @@ -69,13 +69,13 @@ var _ = Describe("default addons - aws-node", func() { Expect(err).ToNot(HaveOccurred()) Expect(awsNode.Spec.Template.Spec.Containers).To(HaveLen(1)) Expect(awsNode.Spec.Template.Spec.Containers[0].Image).To( - Equal("602401143452.dkr.ecr.eu-west-1.amazonaws.com/amazon-k8s-cni:v1.6.3"), + Equal("602401143452.dkr.ecr.eu-west-1.amazonaws.com/amazon-k8s-cni:v1.6.3-eksbuild.1"), ) rawClient.ClearUpdated() }) - It("can update 1.14 sample for different region", func() { + It("can update 1.14 sample for different region to multi-architecture image", func() { rawClient.ClientSetUseUpdatedObjects = false // must be set for subsequent UpdateAWSNode _, err := UpdateAWSNode(rawClient, "us-east-1", false) @@ -87,11 +87,11 @@ var _ = Describe("default addons - aws-node", func() { Expect(err).ToNot(HaveOccurred()) Expect(awsNode.Spec.Template.Spec.Containers).To(HaveLen(1)) Expect(awsNode.Spec.Template.Spec.Containers[0].Image).To( - Equal("602401143452.dkr.ecr.us-east-1.amazonaws.com/amazon-k8s-cni:v1.6.3"), + Equal("602401143452.dkr.ecr.us-east-1.amazonaws.com/amazon-k8s-cni:v1.6.3-eksbuild.1"), ) }) - It("can update 1.14 sample for china region", func() { + It("can update 1.14 sample for china region to multi-architecture image", func() { rawClient.ClientSetUseUpdatedObjects = false // must be set for subsequent UpdateAWSNode _, err := UpdateAWSNode(rawClient, "cn-northwest-1", false) @@ -103,7 +103,7 @@ var _ = Describe("default addons - aws-node", func() { Expect(err).ToNot(HaveOccurred()) Expect(awsNode.Spec.Template.Spec.Containers).To(HaveLen(1)) Expect(awsNode.Spec.Template.Spec.Containers[0].Image).To( - Equal("961992271922.dkr.ecr.cn-northwest-1.amazonaws.com.cn/amazon-k8s-cni:v1.6.3"), + Equal("961992271922.dkr.ecr.cn-northwest-1.amazonaws.com.cn/amazon-k8s-cni:v1.6.3-eksbuild.1"), ) }) diff --git a/pkg/addons/default/coredns.go b/pkg/addons/default/coredns.go index 953d3b98bf..b1d657e1b8 100644 --- a/pkg/addons/default/coredns.go +++ b/pkg/addons/default/coredns.go @@ -24,6 +24,55 @@ const ( KubeDNS = "kube-dns" ) +func IsCoreDNSUpToDate(rawClient kubernetes.RawClientInterface, region, controlPlaneVersion string) (bool, error) { + kubeDNSDeployment, err := rawClient.ClientSet().AppsV1().Deployments(metav1.NamespaceSystem).Get(CoreDNS, metav1.GetOptions{}) + if err != nil { + if apierrs.IsNotFound(err) { + logger.Warning("%q was not found", CoreDNS) + return false, nil + } + return false, errors.Wrapf(err, "getting %q", CoreDNS) + } + + // if Deployment is present, go through our list of assets + list, err := loadAssetCoreDNS(controlPlaneVersion) + if err != nil { + return false, err + } + + for _, rawObj := range list.Items { + resource, err := rawClient.NewRawResource(rawObj.Object) + if err != nil { + return false, err + } + if resource.GVK.Kind != "Deployment" { + continue + } + if resource.Info.Name != "coredns" { + continue + } + deployment, ok := resource.Info.Object.(*appsv1.Deployment) + if !ok { + return false, fmt.Errorf("expected type %T; got %T", &appsv1.Deployment{}, resource.Info.Object) + } + if err := addons.UseRegionalImage(&deployment.Spec.Template, region); err != nil { + return false, err + } + if computeType, ok := kubeDNSDeployment.Spec.Template.Annotations[coredns.ComputeTypeAnnotationKey]; ok { + deployment.Spec.Template.Annotations[coredns.ComputeTypeAnnotationKey] = computeType + } + tagMismatch, err := addons.ImageTagsDiffer( + deployment.Spec.Template.Spec.Containers[0].Image, + kubeDNSDeployment.Spec.Template.Spec.Containers[0].Image, + ) + if err != nil { + return false, err + } + return !tagMismatch, err + } + return true, nil +} + // UpdateCoreDNS will update the `coredns` add-on and returns true // if an update is available func UpdateCoreDNS(rawClient kubernetes.RawClientInterface, region, controlPlaneVersion string, plan bool) (bool, error) { diff --git a/pkg/addons/default/coredns_test.go b/pkg/addons/default/coredns_test.go index 8ac4ce7901..2f3cf71415 100644 --- a/pkg/addons/default/coredns_test.go +++ b/pkg/addons/default/coredns_test.go @@ -75,7 +75,7 @@ var _ = Describe("default addons - coredns", func() { loadSampleAndCheck("1.14", "1.6.0") - Context("[1.14 –> 1.15] can update coredns", func() { + Context("[1.14 –> 1.15] can update coredns to multi-architecture images", func() { loadSample("1.14", 10) @@ -86,7 +86,7 @@ var _ = Describe("default addons - coredns", func() { It("can update to correct version", func() { _, err := UpdateCoreDNS(rawClient, "eu-west-2", "1.15.x", false) Expect(err).ToNot(HaveOccurred()) - checkCoreDNSImage(rawClient, "eu-west-2", "v1.6.6", false) + checkCoreDNSImage(rawClient, "eu-west-2", "v1.6.6-eksbuild.1", false) createReqs := []string{ "POST [/clusterrolebindings] (aws-node)", @@ -124,7 +124,7 @@ var _ = Describe("default addons - coredns", func() { loadSampleAndCheck("1.14", "1.6.0") - Context("[1.14 –> 1.15] can update coredns", func() { + Context("[1.14 –> 1.15] can update coredns to multi-architecture image", func() { loadSample("1.14", 10) @@ -135,7 +135,7 @@ var _ = Describe("default addons - coredns", func() { It("can update to correct version", func() { _, err := UpdateCoreDNS(rawClient, "eu-west-2", "1.15.x", false) Expect(err).ToNot(HaveOccurred()) - checkCoreDNSImage(rawClient, "eu-west-2", "v1.6.6", false) + checkCoreDNSImage(rawClient, "eu-west-2", "v1.6.6-eksbuild.1", false) createReqs := []string{ "POST [/clusterrolebindings] (aws-node)", @@ -173,7 +173,7 @@ var _ = Describe("default addons - coredns", func() { loadSampleAndCheck("1.15", "1.6.6") - Context("[1.15 –> 1.16] can update coredns", func() { + Context("[1.15 –> 1.16] can update coredns to a multi-architecture image", func() { loadSample("1.15", 10) @@ -184,7 +184,7 @@ var _ = Describe("default addons - coredns", func() { It("can update to correct version", func() { _, err := UpdateCoreDNS(rawClient, "eu-west-2", "1.16.x", false) Expect(err).ToNot(HaveOccurred()) - checkCoreDNSImage(rawClient, "eu-west-2", "v1.6.6", false) + checkCoreDNSImage(rawClient, "eu-west-2", "v1.6.6-eksbuild.1", false) createReqs := []string{ "POST [/clusterrolebindings] (aws-node)", diff --git a/pkg/addons/default/kube_proxy.go b/pkg/addons/default/kube_proxy.go index 2673448d30..b3084cb159 100644 --- a/pkg/addons/default/kube_proxy.go +++ b/pkg/addons/default/kube_proxy.go @@ -7,6 +7,7 @@ import ( "github.com/kris-nova/logger" "github.com/pkg/errors" + "github.com/weaveworks/eksctl/pkg/addons" "github.com/weaveworks/eksctl/pkg/printers" apierrs "k8s.io/apimachinery/pkg/api/errors" @@ -19,6 +20,28 @@ const ( KubeProxy = "kube-proxy" ) +func IsKubeProxyUpToDate(clientSet kubernetes.Interface, controlPlaneVersion string) (bool, error) { + d, err := clientSet.AppsV1().DaemonSets(metav1.NamespaceSystem).Get(KubeProxy, metav1.GetOptions{}) + if err != nil { + if apierrs.IsNotFound(err) { + logger.Warning("%q was not found", KubeProxy) + return false, nil + } + return false, errors.Wrapf(err, "getting %q", KubeProxy) + } + if numContainers := len(d.Spec.Template.Spec.Containers); !(numContainers >= 1) { + return false, fmt.Errorf("%s has %d containers, expected at least 1", KubeProxy, numContainers) + } + + desiredTag := kubeProxyImageTag(controlPlaneVersion) + image := d.Spec.Template.Spec.Containers[0].Image + imageTag, err := addons.ImageTag(image) + if err != nil { + return false, err + } + return desiredTag == imageTag, nil +} + // UpdateKubeProxyImageTag updates image tag for kube-system:damoneset/kube-proxy based to match controlPlaneVersion func UpdateKubeProxyImageTag(clientSet kubernetes.Interface, controlPlaneVersion string, plan bool) (bool, error) { printer := printers.NewJSONPrinter() @@ -46,7 +69,7 @@ func UpdateKubeProxyImageTag(clientSet kubernetes.Interface, controlPlaneVersion return false, fmt.Errorf("unexpected image format %q for %q", *image, KubeProxy) } - desiredTag := "v" + controlPlaneVersion + desiredTag := kubeProxyImageTag(controlPlaneVersion) if imageParts[1] == desiredTag { logger.Debug("imageParts = %v, desiredTag = %s", imageParts, desiredTag) @@ -72,3 +95,7 @@ func UpdateKubeProxyImageTag(clientSet kubernetes.Interface, controlPlaneVersion logger.Info("%q is now up-to-date", KubeProxy) return false, nil } + +func kubeProxyImageTag(controlPlaneVersion string) string { + return fmt.Sprintf("v%s-eksbuild.1", controlPlaneVersion) +} diff --git a/pkg/addons/default/kube_proxy_test.go b/pkg/addons/default/kube_proxy_test.go index eb6d708f0a..1ebaa69abf 100644 --- a/pkg/addons/default/kube_proxy_test.go +++ b/pkg/addons/default/kube_proxy_test.go @@ -37,10 +37,10 @@ var _ = Describe("default addons - kube-proxy", func() { check("v1.14.6") }) - It("can update based on control plane version", func() { + It("can update to multi-architecture image based on control plane version", func() { _, err := UpdateKubeProxyImageTag(clientSet, "1.15.0", false) Expect(err).ToNot(HaveOccurred()) - check("v1.15.0") + check("v1.15.0-eksbuild.1") }) It("can dry-run update based on control plane version", func() { diff --git a/pkg/addons/image.go b/pkg/addons/image.go index 9ba621900b..9a0bf112b5 100644 --- a/pkg/addons/image.go +++ b/pkg/addons/image.go @@ -32,8 +32,8 @@ func UseRegionalImage(spec *corev1.PodTemplateSpec, region string) error { return nil } -// imageTag extracts the container image's tag. -func imageTag(image string) (string, error) { +// ImageTag extracts the container image's tag. +func ImageTag(image string) (string, error) { parts := strings.Split(image, ":") if len(parts) != 2 { return "", fmt.Errorf("unexpected image format %q", image) @@ -45,11 +45,11 @@ func imageTag(image string) (string, error) { // ImageTagsDiffer returns true if the image tags are not the same // while ignoring the image name. func ImageTagsDiffer(image1, image2 string) (bool, error) { - tag1, err := imageTag(image1) + tag1, err := ImageTag(image1) if err != nil { return false, err } - tag2, err := imageTag(image2) + tag2, err := ImageTag(image2) if err != nil { return false, err } diff --git a/pkg/ami/api.go b/pkg/ami/api.go index de4d8d98c6..649f9ffb6c 100644 --- a/pkg/ami/api.go +++ b/pkg/ami/api.go @@ -18,6 +18,7 @@ import ( const ( ImageClassGeneral = iota ImageClassGPU + ImageClassARM ) // ImageClasses is a list of image class names diff --git a/pkg/ami/auto_resolver.go b/pkg/ami/auto_resolver.go index 1470c188ff..ef0e74e396 100644 --- a/pkg/ami/auto_resolver.go +++ b/pkg/ami/auto_resolver.go @@ -24,6 +24,7 @@ func MakeImageSearchPatterns(version string) map[string]map[int]string { api.NodeImageFamilyAmazonLinux2: { ImageClassGeneral: fmt.Sprintf("amazon-eks-node-%s-v*", version), ImageClassGPU: fmt.Sprintf("amazon-eks-gpu-node-%s-*", version), + ImageClassARM: fmt.Sprintf("amazon-eks-arm64-node-%s-*", version), }, api.NodeImageFamilyUbuntu1804: { ImageClassGeneral: fmt.Sprintf("ubuntu-eks/k8s_%s/images/*", version), @@ -77,6 +78,15 @@ func (r *AutoResolver) Resolve(region, version, instanceType, imageFamily string } } + if utils.IsARMInstanceType(instanceType) { + var ok bool + namePattern, ok = imageClasses[ImageClassARM] + if !ok { + logger.Critical("image family %s doesn't support ARM image class", imageFamily) + return "", NewErrFailedResolution(region, version, instanceType, imageFamily) + } + } + ownerAccount, err := OwnerAccountID(imageFamily, region) if err != nil { logger.Critical("%v", err) diff --git a/pkg/ami/ssm_resolver.go b/pkg/ami/ssm_resolver.go index 0c427dcc14..7410a1c519 100644 --- a/pkg/ami/ssm_resolver.go +++ b/pkg/ami/ssm_resolver.go @@ -88,5 +88,9 @@ func imageType(imageFamily, instanceType string) string { if utils.IsGPUInstanceType(instanceType) { return family + "-gpu" } + + if utils.IsARMInstanceType(instanceType) { + return family + "-arm64" + } return family } diff --git a/pkg/apis/eksctl.io/v1alpha5/nodegroups.go b/pkg/apis/eksctl.io/v1alpha5/nodegroups.go index 3591f4e28f..735599021f 100644 --- a/pkg/apis/eksctl.io/v1alpha5/nodegroups.go +++ b/pkg/apis/eksctl.io/v1alpha5/nodegroups.go @@ -15,6 +15,22 @@ func HasInstanceType(nodeGroup *NodeGroup, hasType func(string) bool) bool { return false } +// ClusterHasInstanceType checks all nodegroups and managed nodegroups for a specific instance type +func ClusterHasInstanceType(cfg *ClusterConfig, hasType func(string) bool) bool { + for _, ng := range cfg.NodeGroups { + if HasInstanceType(ng, hasType) { + return true + } + } + + for _, mng := range cfg.ManagedNodeGroups { + if hasType(mng.InstanceType) { + return true + } + } + return false +} + // HasNodegroup returns true if this clusterConfig contains a managed or un-managed nodegroup with the given name func (c *ClusterConfig) FindNodegroup(name string) *NodeGroup { for _, ng := range c.NodeGroups { @@ -36,3 +52,16 @@ func (c *ClusterConfig) GetAllNodeGroupNames() []string { } return ngNames } + +// AllNodeGroups combines managed and self-managed nodegroups and returns a slice of *api.NodeGroupBase containing +// both types of nodegroups +func (c *ClusterConfig) AllNodeGroups() []*NodeGroupBase { + var baseNodeGroups []*NodeGroupBase + for _, ng := range c.NodeGroups { + baseNodeGroups = append(baseNodeGroups, ng.NodeGroupBase) + } + for _, ng := range c.ManagedNodeGroups { + baseNodeGroups = append(baseNodeGroups, ng.NodeGroupBase) + } + return baseNodeGroups +} diff --git a/pkg/cfn/builder/managed_nodegroup.go b/pkg/cfn/builder/managed_nodegroup.go index 69ca83c80f..24554c7e8e 100644 --- a/pkg/cfn/builder/managed_nodegroup.go +++ b/pkg/cfn/builder/managed_nodegroup.go @@ -95,6 +95,10 @@ func getAMIType(instanceType string) string { if utils.IsGPUInstanceType(instanceType) { return eks.AMITypesAl2X8664Gpu } + if utils.IsARMInstanceType(instanceType) { + // TODO Upgrade SDK and use constant from the eks library + return "AL2_ARM_64" + } return eks.AMITypesAl2X8664 } diff --git a/pkg/ctl/cmdutils/cluster.go b/pkg/ctl/cmdutils/cluster.go index d41547d07a..20239f7f77 100644 --- a/pkg/ctl/cmdutils/cluster.go +++ b/pkg/ctl/cmdutils/cluster.go @@ -44,16 +44,3 @@ func ToKubeNodeGroups(clusterConfig *api.ClusterConfig) []eks.KubeNodeGroup { } return kubeNodeGroups } - -// ToBaseNodeGroups combines managed and self-managed nodegroups and returns a slice of *api.NodeGroupBase containing -// both types of nodegroups -func ToBaseNodeGroups(clusterConfig *api.ClusterConfig) []*api.NodeGroupBase { - var baseNodeGroups []*api.NodeGroupBase - for _, ng := range clusterConfig.NodeGroups { - baseNodeGroups = append(baseNodeGroups, ng.NodeGroupBase) - } - for _, ng := range clusterConfig.ManagedNodeGroups { - baseNodeGroups = append(baseNodeGroups, ng.NodeGroupBase) - } - return baseNodeGroups -} diff --git a/pkg/ctl/create/cluster.go b/pkg/ctl/create/cluster.go index 6b95e4c50c..6b1582b943 100644 --- a/pkg/ctl/create/cluster.go +++ b/pkg/ctl/create/cluster.go @@ -273,7 +273,7 @@ func doCreateCluster(cmd *cmdutils.Cmd, ng *api.NodeGroup, params *cmdutils.Crea } nodeGroupService := eks.NewNodeGroupService(cfg, ctl.Provider.EC2()) - if err := nodeGroupService.Normalize(cmdutils.ToBaseNodeGroups(cfg)); err != nil { + if err := nodeGroupService.Normalize(cfg.AllNodeGroups()); err != nil { return err } diff --git a/pkg/ctl/create/nodegroup.go b/pkg/ctl/create/nodegroup.go index 93f18ab268..7dc2951dc6 100644 --- a/pkg/ctl/create/nodegroup.go +++ b/pkg/ctl/create/nodegroup.go @@ -8,9 +8,12 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" + defaultaddons "github.com/weaveworks/eksctl/pkg/addons/default" "github.com/weaveworks/eksctl/pkg/cfn/manager" "github.com/weaveworks/eksctl/pkg/ctl/cmdutils/filter" "github.com/weaveworks/eksctl/pkg/eks" + "github.com/weaveworks/eksctl/pkg/kubernetes" + "github.com/weaveworks/eksctl/pkg/utils" "github.com/weaveworks/eksctl/pkg/utils/names" "github.com/weaveworks/eksctl/pkg/vpc" @@ -117,6 +120,15 @@ func doCreateNodeGroups(cmd *cmdutils.Cmd, ng *api.NodeGroup, params createNodeG logFiltered := cmdutils.ApplyFilter(cfg, ngFilter) + clientSet, err := ctl.NewStdClientSet(cfg) + if err != nil { + return err + } + + if err = checkARMSupport(ctl, clientSet, cfg); err != nil { + return err + } + // EKS 1.14 clusters created with prior versions of eksctl may not support Managed Nodes supportsManagedNodes, err := ctl.SupportsManagedNodes(cfg) if err != nil { @@ -140,7 +152,7 @@ func doCreateNodeGroups(cmd *cmdutils.Cmd, ng *api.NodeGroup, params createNodeG } nodeGroupService := eks.NewNodeGroupService(cfg, ctl.Provider.EC2()) - if err := nodeGroupService.Normalize(cmdutils.ToBaseNodeGroups(cfg)); err != nil { + if err := nodeGroupService.Normalize(cfg.AllNodeGroups()); err != nil { return err } @@ -205,11 +217,6 @@ func doCreateNodeGroups(cmd *cmdutils.Cmd, ng *api.NodeGroup, params createNodeG } { // post-creation action - clientSet, err := ctl.NewStdClientSet(cfg) - if err != nil { - return err - } - tasks := ctl.ClusterTasksForNodeGroups(cfg, params.installNeuronDevicePlugin) logger.Info(tasks.Describe()) errs := tasks.DoAllSync() @@ -261,3 +268,27 @@ func doCreateNodeGroups(cmd *cmdutils.Cmd, ng *api.NodeGroup, params createNodeG return nil } + +func checkARMSupport(ctl *eks.ClusterProvider, clientSet kubernetes.Interface, cfg *api.ClusterConfig) error { + rawClient, err := ctl.NewRawClient(cfg) + if err != nil { + return err + } + + kubernetesVersion, err := rawClient.ServerVersion() + if err != nil { + return err + } + if api.ClusterHasInstanceType(cfg, utils.IsARMInstanceType) { + upToDate, err := defaultaddons.AreAddonsUpToDate(clientSet, rawClient, kubernetesVersion, ctl.Provider.Region()) + if err != nil { + return err + } + if !upToDate { + logger.Critical("to create an ARM nodegroup kube-proxy, coredns and aws-node addons should be up to date. " + + "Please use `eksctl utils update-coredns`, `eksctl utils update-kube-proxy` and `eksctl utils update-aws-node` before proceeding.") + return errors.New("expected default addons up to date") + } + } + return nil +} diff --git a/pkg/eks/tasks.go b/pkg/eks/tasks.go index 55dd8ca52f..e764f65be1 100644 --- a/pkg/eks/tasks.go +++ b/pkg/eks/tasks.go @@ -5,6 +5,7 @@ import ( "github.com/pkg/errors" "github.com/weaveworks/eksctl/pkg/addons" + defaultaddons "github.com/weaveworks/eksctl/pkg/addons/default" iamoidc "github.com/weaveworks/eksctl/pkg/iam/oidc" "github.com/weaveworks/eksctl/pkg/utils" @@ -69,6 +70,38 @@ func (n *neuronDevicePluginTask) Do(errCh chan error) error { return nil } +// UpdateAddonsTask makes sure the default addons are up to date. This is used when creating a cluster with ARM nodes, +// which require addons to have the multi-architecture images. +// TODO Remove this once the multi-architecture images are used by EKS by default in new clusters +type UpdateAddonsTask struct { + info string + clusterProvider *ClusterProvider + spec *api.ClusterConfig +} + +func (t *UpdateAddonsTask) Describe() string { return t.info } + +func (t *UpdateAddonsTask) Do(errCh chan error) error { + defer close(errCh) + rawClient, err := t.clusterProvider.NewRawClient(t.spec) + if err != nil { + return err + } + clientSet, err := t.clusterProvider.NewStdClientSet(t.spec) + if err != nil { + return err + } + kubernetesVersion, err := rawClient.ServerVersion() + if err != nil { + return err + } + err = defaultaddons.EnsureAddonsUpToDate(clientSet, rawClient, kubernetesVersion, t.clusterProvider.Provider.Region()) + if err != nil { + return err + } + return nil +} + // CreateExtraClusterConfigTasks returns all tasks for updating cluster configuration not depending on the control plane availability func (c *ClusterProvider) CreateExtraClusterConfigTasks(cfg *api.ClusterConfig, installVPCController bool) *manager.TaskTree { newTasks := &manager.TaskTree{ @@ -118,6 +151,14 @@ func (c *ClusterProvider) CreateExtraClusterConfigTasks(cfg *api.ClusterConfig, clusterProvider: c, }) } + + if api.ClusterHasInstanceType(cfg, utils.IsARMInstanceType) { + newTasks.Append(&UpdateAddonsTask{ + info: "update default addons", + clusterProvider: c, + spec: cfg, + }) + } return newTasks } diff --git a/pkg/nodebootstrap/assets.go b/pkg/nodebootstrap/assets.go index 250882f8eb..73edc18fc3 100644 --- a/pkg/nodebootstrap/assets.go +++ b/pkg/nodebootstrap/assets.go @@ -1,8 +1,8 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// assets/10-eksclt.al2.conf (982B) -// assets/bootstrap.al2.sh (1.313kB) -// assets/bootstrap.ubuntu.sh (2.134kB) +// assets/10-eksclt.al2.conf (985B) +// assets/bootstrap.al2.sh (1.094kB) +// assets/bootstrap.ubuntu.sh (2.139kB) // assets/kubelet.yaml (464B) package nodebootstrap @@ -72,7 +72,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var __10EkscltAl2Conf = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x52\xdf\x6f\xd3\x30\x10\x7e\xcf\x5f\x61\x69\x7d\x00\xa9\x4e\xc4\x78\x9b\x94\x87\x90\x66\x23\x22\x4b\xa7\xa6\x03\x24\x40\x91\x6b\x5f\xbb\x53\x9d\x73\xe4\x38\xdd\x46\xd5\xff\x1d\xb9\x69\xa0\x13\x13\xe2\xcd\xbe\xef\xee\xfb\xbe\xfb\x71\xc1\x60\xdb\x49\xa7\x79\xd7\x82\xc4\x35\x4a\xd6\x3d\x77\x0e\x1a\xc5\x94\x35\x2d\x47\x62\x3d\xa1\x63\x6b\x63\xd9\xb6\x5f\x81\x06\x37\x3d\x7e\x92\x46\xfc\x34\xc4\x0a\xa4\xfe\x89\x5d\xb2\x37\x49\x71\xf9\x36\x08\xbe\x55\x60\x77\x28\xe1\x47\x70\xc1\x0a\x23\x85\x66\x0d\x38\xa1\x84\x13\xac\x15\x56\x34\xe0\xc0\x76\x57\x6c\x91\xdd\xe4\xf3\x72\xca\x92\x2f\x55\x3d\xcb\xae\x93\xfb\x62\x59\x0f\xb1\x20\xa3\x1d\x5a\x43\x0d\x90\xbb\x46\x0d\x71\x04\x4e\x46\x83\xc5\x68\xe4\x0a\x81\x76\xc1\x05\xbb\xd1\x66\x25\x34\x13\xa4\x58\xe7\x84\x43\xf9\x42\x23\x2d\xee\xab\x65\xb6\xa8\x67\x65\x35\x65\xe5\x7c\x96\xd5\x45\xf2\x21\x2b\xc6\xcf\x32\xc9\xcb\x65\xf5\x4f\xb9\x53\xbf\x27\xb5\xa1\x1d\x32\xc4\x5f\x11\x3b\x52\xe6\x77\x53\x96\x97\xd5\x32\x29\xd3\xac\xce\x67\xff\xc5\xad\x3d\xeb\x51\x21\xc8\x9e\x40\x56\x4e\x58\x17\x9f\x3d\xa3\xbe\xb3\xd1\x0a\x69\x2c\x60\xdf\x03\xc6\x38\x27\xa3\x80\x63\x1b\x4f\xf6\x27\xe5\xc3\x39\xa0\xc5\x0a\x74\x37\x82\x43\xdb\x87\xa9\xd0\xed\x83\x08\x07\xfd\x10\x4d\x84\xd4\x39\x41\x12\x38\xaa\x78\xb2\x3f\x33\x3e\x72\x35\xe2\x89\xb7\x46\x79\xa2\xdb\xe4\x6b\x7d\x37\x9f\x55\x23\x64\x61\x83\x9d\x03\x7b\xd4\x8b\x9d\xed\xe1\x3c\xf8\x88\xee\x81\x3b\x81\xe4\x7e\x9b\x18\xc6\x3d\x96\x4b\x6d\x7a\xc5\x5b\x6b\x76\xa8\xc0\xc6\xe2\xb1\x1b\x01\x43\xbe\x0e\x2c\xb7\x3d\x39\x6c\x20\x56\x46\x6e\xc1\x8e\xdd\x81\x7b\x34\x76\xcb\x5b\xdd\x6f\x90\x62\x49\x38\xd6\x11\xf2\x15\x12\x57\x68\xe3\xc8\xb4\x2e\x92\x84\x7e\x6c\x67\xb0\x34\xb4\x1e\x70\xbf\x06\x8f\x13\xb8\x50\x9d\x32\x5a\xa3\x38\xd2\xda\x8a\x33\x0b\xd8\x88\x0d\xc4\x93\xbd\xbf\xd2\xec\x53\x55\x67\xe9\xa2\x4e\xd2\x74\x7e\x5f\x2e\x0f\xa1\xda\xda\x10\xa4\x0d\x07\xf8\xe5\x11\x1f\x4e\xd1\x2a\x5b\x7c\xce\xd3\xac\xaa\x67\xf3\xdb\x24\x2f\x0f\x7e\xf9\x51\x2b\xfa\x0e\xf8\x64\x9f\x2c\xd2\x8f\x87\xab\xf7\xe1\xbb\x93\x03\xbf\x60\xef\x11\x37\x7f\x1d\xca\x10\x0e\x9f\x45\xa3\xff\xcc\xe9\xb5\x44\x7f\x51\x3e\x2b\xf8\x15\x00\x00\xff\xff\x5b\x08\x1a\xba\xd6\x03\x00\x00") +var __10EkscltAl2Conf = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x52\xdf\x6b\xdb\x30\x10\x7e\xf7\x5f\x21\x68\x1f\x36\x88\x6c\xda\xbd\x15\xfc\xe0\x25\x6e\x31\x73\x9d\x12\xa7\xdb\x60\x1b\x46\x91\x2e\xe9\x11\xf9\x64\x24\x39\x6d\x57\xf2\xbf\x0f\xc5\xf1\x96\xb2\x32\xf6\x26\xdd\x77\xf7\x7d\xdf\xfd\x38\x63\xb0\x75\xd2\x6b\xee\x3a\x90\xb8\x46\xc9\xdc\xb3\xf3\xd0\x2a\xa6\xac\xe9\x38\x12\xeb\x09\x3d\x5b\x1b\xcb\xb6\xfd\x0a\x34\xf8\xc9\xe1\x93\xb5\xe2\xa7\x21\x56\x22\xf5\x4f\xec\x92\xbd\xcb\xca\xcb\xf7\x51\xf4\xad\x06\xbb\x43\x09\x3f\xa2\x33\x56\x1a\x29\x34\x6b\xc1\x0b\x25\xbc\x60\x9d\xb0\xa2\x05\x0f\xd6\x5d\xb1\x45\x7e\x53\xcc\xab\x09\xcb\xbe\xd4\xcd\x2c\xbf\xce\xee\xcb\x65\x33\xc4\xa2\x9c\x76\x68\x0d\xb5\x40\xfe\x1a\x35\xa4\x09\x78\x99\x0c\x16\x93\x91\x2b\x06\xda\x45\x67\xec\x46\x9b\x95\xd0\x4c\x90\x62\xce\x0b\x8f\xf2\x95\xc6\xb4\xbc\xaf\x97\xf9\xa2\x99\x55\xf5\x84\x55\xf3\x59\xde\x94\xd9\xc7\xbc\x1c\x3f\xcb\xac\xa8\x96\xf5\x3f\xe5\x8e\xfd\x1e\xd5\x86\x76\xc8\x10\x7f\x43\xec\x40\x59\xdc\x4d\x58\x51\xd5\xcb\xac\x9a\xe6\x4d\x31\xfb\x2f\x6e\x1d\x58\x0f\x0a\x51\xfe\x04\xb2\xf6\xc2\xfa\xf4\xe4\x99\xf4\xce\x26\x2b\xa4\xb1\x80\x7d\x8f\x18\xe3\x9c\x8c\x02\x8e\x5d\x7a\xfe\x72\x54\xde\x9f\x02\x5a\xac\x40\xbb\x11\x1c\xda\xde\x4f\x84\xee\x1e\x44\x3c\xe8\xc7\x68\x12\x24\xe7\x05\x49\xe0\xa8\xd2\xf3\x97\x13\xe3\x23\x57\x2b\x9e\x78\x67\x54\x20\xba\xcd\xbe\x36\x77\xf3\x59\x3d\x42\x16\x36\xe8\x3c\xd8\x83\x5e\xea\x6d\x0f\xa7\xc1\x47\xf4\x0f\xdc\x0b\x24\xff\xdb\xc4\x30\xee\xb1\x5c\x6a\xd3\x2b\xde\x59\xb3\x43\x05\x36\x15\x8f\x6e\x04\x0c\x85\x3a\xb0\xdc\xf6\xe4\xb1\x85\x54\x19\xb9\x05\x3b\x76\x07\xfe\xd1\xd8\x2d\xef\x74\xbf\x41\x4a\x25\xe1\x58\x47\xc8\x57\x48\x5c\xa1\x4d\x13\xd3\xf9\x44\x12\x86\xb1\x9d\xc0\xd2\xd0\x7a\xc0\xc3\x1a\x02\x4e\xe0\x63\x75\xcc\xe8\x8c\xe2\x48\x6b\x2b\x4e\x2c\x60\x2b\x36\x90\x9e\xbf\x84\x2b\xcd\x3f\xd5\x4d\x3e\x5d\x34\xd9\x74\x3a\xbf\xaf\x96\xfb\x58\x6d\x6d\x0c\xd2\xc6\x03\xfc\xfa\x88\xf7\xc7\x68\x9d\x2f\x3e\x17\xd3\xbc\x6e\x66\xf3\xdb\xac\xa8\xf6\x61\xf9\x49\x27\x7a\x07\x57\x1f\xe2\x0b\x0e\x5b\xb7\xea\x51\xab\xf8\xe2\x68\x22\xec\x38\xd8\xc4\xcd\x5f\xb7\x32\x84\xe3\x67\xd1\xea\x3f\xa3\x7a\x2b\x31\x1c\x55\xc8\x8a\x7e\x05\x00\x00\xff\xff\x30\x3f\x63\x4d\xd9\x03\x00\x00") func _10EkscltAl2ConfBytes() ([]byte, error) { return bindataRead( @@ -88,11 +88,11 @@ func _10EkscltAl2Conf() (*asset, error) { } info := bindataFileInfo{name: "10-eksclt.al2.conf", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2a, 0x99, 0xdb, 0x6d, 0x46, 0x69, 0x8a, 0xf5, 0x84, 0xe3, 0x6a, 0xe7, 0xca, 0x7b, 0x3f, 0xc5, 0xd3, 0xea, 0xd8, 0xe2, 0xc2, 0xf2, 0x9, 0x14, 0x55, 0x10, 0x30, 0x2e, 0xca, 0x69, 0x53, 0x21}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4a, 0xbf, 0xa0, 0x4b, 0x49, 0x6d, 0x88, 0xe7, 0x32, 0x9e, 0xe6, 0xa2, 0xaa, 0x6d, 0xbd, 0xa8, 0x2, 0xb8, 0xe7, 0x4a, 0x8e, 0xcb, 0xa8, 0xa, 0x46, 0xea, 0xe0, 0x70, 0x6f, 0x65, 0x2d, 0xc8}} return a, nil } -var _bootstrapAl2Sh = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x54\x7f\x6f\xe2\x38\x10\xfd\xdf\x9f\x62\xce\x8d\xba\x45\x27\x93\x16\x71\xe8\x96\x2d\x2b\x21\xc8\xa9\xe8\xc4\x0f\x2d\xec\x5d\x4f\x15\x17\x19\x67\x38\xac\x26\x76\x14\x4f\xd8\xae\x50\xee\xb3\xaf\x4c\x43\x05\x2d\xdb\xbf\xe2\x99\x79\x6f\x3c\x9e\xf7\xe0\xe2\x97\x70\xa5\x4d\xb8\x92\x6e\xc3\x98\x43\x02\x61\x01\x8b\x02\x9f\x34\x1d\xc2\x5c\xe7\xb8\x96\x3a\x3d\xc4\xc6\x96\xc6\x21\x31\xb6\x2e\x8d\x22\x6d\x0d\xfc\x87\x14\x67\xf2\x29\xce\x6d\xe2\xae\x1a\xb0\x63\x00\xdf\x36\x3a\x45\x28\x50\x26\xa0\x8d\x23\x69\x14\xc6\xf4\x3d\x47\xf0\x98\x4f\x90\x58\x06\x00\xa0\xd7\x00\x0f\x0f\xc0\x83\xdd\x09\xa8\xe2\xd0\xeb\xf9\xec\x4d\xc5\x61\xb9\x84\xcb\xcb\x1a\xe5\xc9\xbe\xf8\x3f\xfc\xfb\x70\x2d\x3e\x2e\x7f\x0d\x7c\xf9\x13\xd0\x06\xcd\xbe\x21\x00\xaa\x8d\x85\x1a\x59\xa7\x0a\xa4\xb2\x78\xae\xaf\x35\x03\x48\xac\x41\xb8\x85\x10\x49\x85\xf8\xe8\x14\xa5\xe1\x61\xfa\x66\x26\x73\x56\x31\x76\x01\x5f\x1d\xc2\x68\x3c\x9c\x6f\x5b\x40\xd6\xbf\x10\x32\x24\x99\x48\x92\x6c\x31\xfd\x33\x9a\xf4\x78\x70\xa5\xca\x22\x05\x21\x9c\x4e\xd1\x10\x88\x7b\x98\x7d\x5d\x80\xb8\x03\x7e\x2f\xe4\x37\x27\x50\xb5\xc4\x81\x24\xc8\x3e\xa2\x11\x44\xa9\x70\xa8\xac\x49\x5c\x17\x3a\xd7\xd7\x1c\x36\x44\x79\x37\x0c\x6f\x3a\x1f\x9b\xad\xdf\xda\xcd\xfa\x1b\xa6\x92\xd0\x51\x28\x73\x1d\xee\x99\x0d\xfe\x6a\xdd\x75\xdf\x7a\xdd\xaf\x26\x79\x67\x84\x2e\x04\xfb\xf9\x39\xf0\xf7\xaf\xf6\x34\xe1\x79\x61\x70\xc3\xfd\x4e\x26\xd3\x61\x14\x8f\x66\xfe\xe1\xc7\x13\x40\x6a\x95\x4c\x85\xce\xb7\xed\x06\x67\xa3\xc9\x7c\xd1\x9f\x0c\xa2\x78\x34\x7c\x03\x3c\x68\x2c\x74\x72\x8c\x5c\xfc\x33\x8b\x7e\x8e\xf5\x7e\x68\x70\xd6\xff\x7b\x1e\xcf\xa3\x2f\x7f\x8d\x06\xd1\x3c\x1e\x4e\xc7\xfd\xd1\xe4\x0d\xc7\x61\xb1\xd5\x0a\x5d\x98\xd8\x4c\x6a\xbf\x32\x36\xee\x0f\xee\x46\x93\xa8\x17\x5c\x95\x46\x66\x08\x22\x6b\x30\xa6\xd7\xe0\xdd\x54\xd7\x9e\xbd\xf6\xf4\x7b\x27\xee\xb4\x39\x2c\x8f\xcc\xd4\xff\x32\xb8\xeb\x71\x99\x25\x9d\x36\x67\x98\x9e\xa3\x49\x59\xa8\xcd\x4f\x78\x45\xf6\xcc\x73\xf8\xb6\xdb\x8b\x53\xf9\x1c\x09\x12\x5c\xcb\x32\x25\xf0\xcd\x34\xa1\xa2\xb2\x40\xef\xba\x0f\x81\x27\x7d\xe0\xf0\xf9\xb2\xc5\xd6\x9a\x31\x67\xcb\x42\xe1\x89\x73\x1f\xcb\x15\xa6\x48\x4d\x34\x5b\xb8\x00\xda\x68\x07\x4a\x1a\xb0\x5b\x2c\x0a\x9d\x20\x8c\xfb\xf7\xf1\x6c\x3a\x9c\x33\xa6\x24\xc1\xe7\xb3\xdc\xbd\x82\xfb\x0e\xb7\xb7\xd1\xf4\x8f\x17\xa5\x83\x5d\x7d\xaa\x4e\x74\x0d\x76\x47\x51\xf5\x4a\xc8\xa3\xa2\x8f\xab\xb3\xca\x05\xbb\x33\xd9\x8a\x1d\x66\xed\x05\xbb\xc3\xb1\x2b\x6a\x91\xeb\x1f\xa8\xff\x17\x38\xbd\x80\x37\x2a\xb6\xdf\x6d\xb0\xf3\x9f\x8a\xf9\x17\x30\xf7\xdd\x11\x66\x8a\x52\x48\x24\x66\xd6\x88\x02\x53\x2b\x93\xa3\x3c\x1a\xb9\x4a\x11\xea\x1d\x1c\x15\x1c\xc9\x82\x5e\xf2\x3f\x02\x00\x00\xff\xff\xf0\x09\xf8\x2f\x21\x05\x00\x00") +var _bootstrapAl2Sh = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x53\x71\x4f\xdb\x3e\x10\xfd\xdf\x9f\xe2\x7e\x26\x42\x54\x3f\xb9\x01\xc4\x90\x28\x74\x52\x45\x33\xad\x9a\x68\xab\xb5\x6c\x4c\x88\x45\xae\x73\x5d\x2d\x5c\x3b\x8a\xaf\x05\x54\x65\x9f\x7d\x72\x97\xa0\x14\x18\x7f\xc5\x77\xf7\x9e\xfd\xde\xb3\xb3\xf7\x5f\x3c\xd3\x36\x9e\x49\xbf\x60\xcc\x23\x81\x70\x80\x45\x81\x8f\x9a\xea\x32\xd7\x39\xce\xa5\x36\x75\x6d\xdd\xca\x7a\x24\xc6\xe6\x2b\xab\x48\x3b\x0b\xbf\x90\xd2\xa5\x7c\x4c\x73\x97\xf9\x83\x16\x6c\x18\xc0\xc3\x42\x1b\x84\x02\x65\x06\xda\x7a\x92\x56\x61\x4a\x4f\x39\x42\xc0\x9c\x43\xe6\x18\x00\x80\x9e\x03\xdc\xde\x02\x8f\x36\x3b\xa0\x92\x43\xb7\x1b\xba\x47\x25\x87\xbb\x3b\xd8\xdf\xaf\x50\x81\x1c\x86\xbf\xe1\xe7\xed\xa1\x38\xbb\xfb\x3f\x0a\xe3\x73\xa0\x05\xda\xed\x86\x00\xa8\x16\x0e\x2a\x64\xd5\x2a\x90\x56\xc5\xdf\xf9\x5c\x33\x80\xcc\x59\x84\x0b\x88\x91\x54\x8c\xf7\x5e\x91\x89\x6b\xf5\xed\xa5\xcc\x59\xc9\xd8\x1e\x5c\x7b\x84\xc1\x55\x7f\xb2\x3e\x06\x72\xc1\x21\x2c\x91\x64\x26\x49\xb2\xe9\xe8\x4b\x32\xec\xf2\xe8\x40\xad\x0a\x03\x42\x78\x6d\xd0\x12\x88\x1b\x18\x5f\x4f\x41\x7c\x06\x7e\x23\xe4\x83\x17\xa8\x8e\x45\x4d\x12\xe4\xee\xd1\x0a\x22\x23\x3c\x2a\x67\x33\xdf\x81\xd3\xc3\x43\x0e\x0b\xa2\xbc\x13\xc7\x47\xa7\x67\xed\xe3\x0f\x27\xed\xea\x1b\x1b\x49\xe8\x29\x96\xb9\x8e\xb7\xcc\x16\x7f\x11\x77\xb5\x6f\x15\xf7\x0b\x25\xef\x48\xe8\x40\xb4\xd5\xcf\x81\xbf\x7f\x74\xa0\x89\xc0\x8b\xa3\x23\x1e\x32\x19\x8e\xfa\x49\x3a\x18\x07\xe3\x4d\x05\x60\x9c\x92\x46\xe8\x7c\x7d\xd2\xe2\x6c\x30\x9c\x4c\x7b\xc3\xcb\x24\x1d\xf4\x5f\x01\xeb\x3b\x16\x3a\x6b\x22\xa7\x3f\xc6\xc9\xbf\xb1\xe1\x3d\xb4\x38\xeb\x7d\x9f\xa4\x93\xe4\xeb\xb7\xc1\x65\x32\x49\xfb\xa3\xab\xde\x60\xf8\x8a\xe3\xb1\x58\x6b\x85\x3e\xce\xdc\x52\xea\x10\x19\x63\xde\xad\x0a\x85\x3b\x77\x7d\xbf\x9a\xa1\x41\x6a\xa3\x5d\xc3\x1e\xd0\x42\x7b\x50\xd2\x82\x5b\x63\x51\xe8\x0c\xe1\xaa\x77\x93\x8e\x47\xfd\x09\x63\x4a\x12\x7c\x7c\x93\xbb\xf5\xbc\xdd\xe1\xe2\x22\x19\x7d\x7a\xce\x26\xda\x54\xab\x72\x27\x89\x68\xd3\xa8\xca\x17\xd6\x1b\xc3\x50\x97\x6f\x7a\x8d\x36\x6f\x74\x4b\x56\x6b\xed\x46\x9b\x7a\xd9\x11\x55\x2c\xd5\x93\x0e\xff\xcd\xee\x01\xbc\x55\xb2\x20\x9a\xf9\x27\x4f\xb8\x54\x64\x20\x93\xb8\x74\x56\x14\x68\x9c\xcc\x1a\x7d\xb4\x72\x66\x10\x2a\xdb\x8d\x81\x27\x59\xd0\x73\xff\x4f\x00\x00\x00\xff\xff\xe2\x16\xc0\xf8\x46\x04\x00\x00") func bootstrapAl2ShBytes() ([]byte, error) { return bindataRead( @@ -108,11 +108,11 @@ func bootstrapAl2Sh() (*asset, error) { } info := bindataFileInfo{name: "bootstrap.al2.sh", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0xc1, 0x8e, 0x92, 0x57, 0xd6, 0xdb, 0xa3, 0x1c, 0x3d, 0xfc, 0xe4, 0xc3, 0xb7, 0x18, 0x9b, 0x40, 0xa2, 0x3e, 0x5f, 0x86, 0x78, 0x64, 0x94, 0x94, 0x77, 0x8e, 0xf8, 0xc9, 0xe6, 0x7f, 0x65}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xec, 0x80, 0x36, 0x7f, 0x8, 0xd8, 0x7a, 0x91, 0xb0, 0xad, 0xcd, 0x62, 0x3f, 0x7c, 0xa6, 0x14, 0x0, 0xb1, 0x9d, 0x9a, 0xb5, 0xed, 0x23, 0x6, 0x0, 0x35, 0x5a, 0x6f, 0x45, 0x56, 0xc4}} return a, nil } -var _bootstrapUbuntuSh = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\x61\x6f\x1a\x47\x10\xfd\xbe\xbf\x62\x7a\x46\xa9\x51\xb3\x5c\xec\xa6\x91\xe2\x84\xaa\xd4\x90\x16\xc5\x01\x2b\xe0\x36\x95\xe5\xa2\x65\x77\xe0\x56\xec\xed\x9e\x76\xe7\x20\x96\x45\x7f\x7b\xb5\xc7\x1d\xc1\x24\xf1\x27\x6e\xf7\xbd\x37\x37\x33\xf7\x66\x38\xf9\x21\x9d\x6b\x9b\xce\x45\xc8\x18\x0b\x48\xc0\x1d\xa0\xf7\xf8\x59\x53\x73\x2c\x74\x81\x0b\xa1\x4d\x73\xb6\xae\xb4\x01\x89\xb1\x45\x69\x25\x69\x67\x61\x89\x34\xcb\xc5\xe7\x59\xe1\x54\x38\x6d\xc3\x03\x03\xd8\x64\xda\x20\x78\x14\x0a\xb4\x0d\x24\xac\xc4\x19\xdd\x17\x08\x91\xf3\x06\x94\x63\x00\x00\x7a\x01\x70\x7b\x0b\x49\xeb\xe1\x11\x69\x9b\x40\xb7\x1b\x6f\xcf\xb6\x09\xdc\xdd\xc1\xb3\x67\x35\x2b\x8a\x23\xf8\x1f\xfc\x7b\xfb\x82\xbf\xbe\xfb\xa9\x15\xe1\x37\x40\x19\xda\x2a\x20\x00\xca\xcc\x41\xcd\x7c\x53\xdf\x79\xa4\xd2\xef\x08\x0b\xcd\x00\x94\xb3\x08\x6f\x21\x45\x92\x29\xae\x82\x24\x93\x36\xe9\x77\x72\x51\xb0\x2d\x63\x27\x70\x13\x10\x86\x1f\xfa\x93\xf5\x39\x90\x8b\x25\x42\x8e\x24\x94\x20\xc1\xa6\xe3\xf7\x83\x51\x37\x69\x9d\xca\xd2\x1b\xe0\x3c\x68\x83\x96\x80\x7f\x82\xeb\x9b\x29\xf0\x3f\x21\xf9\xc4\xc5\x26\x70\x94\xe7\xbc\x11\x71\x72\x2b\xb4\x9c\xc8\xf0\x80\xd2\x59\x15\x2e\xe0\xd5\x8b\x17\x09\x64\x44\xc5\x45\x9a\x9e\xbd\x7a\xdd\x39\xff\xe5\x65\xa7\xfe\x4d\x8d\x20\x0c\x94\x8a\x42\xa7\x95\xb2\x9d\x1c\xf5\xbb\x8e\x5b\xf7\xfb\x28\x93\x27\x52\xb8\x80\x56\x95\x7f\x02\xc9\xd3\xaf\x8e\x32\x1e\x75\x69\xeb\x2c\x89\x3d\x19\x8d\xfb\x83\xd9\xf0\x3a\x16\x7e\x98\x01\x18\x27\x85\xe1\xba\x58\xbf\x6c\x27\x6c\x38\x9a\x4c\x7b\xa3\xcb\xc1\x6c\xd8\xff\x8a\xd8\x7c\x64\xae\xd5\x21\x73\xfa\xcf\xf5\xe0\xfb\xdc\x68\x88\x76\xc2\x7a\x7f\x4f\x66\x93\xc1\xc7\xbf\x86\x97\x83\xc9\xac\x3f\xfe\xd0\x1b\x8e\xbe\xd2\x04\xf4\x6b\x2d\x31\xa4\xca\xe5\x42\xc7\x96\xb1\xe0\x4a\x2f\xf1\xd1\xa7\x5e\x95\x73\x34\x48\x1d\xb4\x6b\x38\x01\xca\x74\x00\x29\x2c\xb8\x35\x7a\xaf\x15\xc2\x87\xde\xa7\xd9\xf5\xb8\x3f\x61\x4c\x0a\x82\x5f\xbf\xa9\xad\x4a\xae\x22\xbc\x7d\x3b\x18\xbf\xdb\xb7\xa6\xf5\x50\x3f\x6d\x1f\x35\xa2\xf5\x70\x70\xda\x1e\x55\x7e\x00\xc6\xf3\x96\x35\x09\x74\x5b\x0f\xcd\xe3\x05\xaf\x4b\xad\x6d\x1a\x87\xe1\xb1\x2a\x69\x6f\x59\xcc\x84\x05\x2b\x0a\x10\x46\x8b\x00\x75\xb6\x1c\x57\xa1\x53\x3f\x37\x77\xc7\x34\x49\x66\x4f\x93\x64\x9a\xbb\x1d\x2d\x90\x2b\x0e\x83\xb1\x70\x1f\x08\xf3\xc8\xf3\x18\x90\x78\x5c\x0f\xa8\x18\x3b\x65\x00\x27\x30\x1d\xf7\xc7\x17\x71\x26\x03\x42\xc8\x5c\x69\x14\xcc\x11\x8c\x73\x2b\x54\x20\x08\x70\x8d\xfe\x1e\x48\xe7\xd8\x04\x85\x40\xc2\x53\x80\xb2\x78\x5e\x45\xd8\x64\x5a\x66\xa0\x03\x6c\x32\x41\xb0\x41\x50\x0e\xb4\x85\xde\xd5\x39\x9c\xee\xb1\xb9\x08\xa8\xc0\x59\x28\x8c\xd0\x16\x76\x39\xa9\x5d\x00\x61\x15\xe4\x28\x2c\xc5\xd9\x9d\xc7\xad\xe3\x49\xcc\x0d\xc6\x63\xee\x02\x35\x6c\x50\x3a\x90\x77\xa1\xfd\x1c\xe6\x25\x81\xa6\x1f\x43\xa5\xb7\x8e\x40\x1a\x14\x1e\x32\xb7\x89\x22\xe3\x84\xaa\x4b\x5a\x78\x97\x7f\x49\x3c\xf6\x67\xa3\x29\x73\x25\x41\x26\xd6\xda\x2e\xab\x00\xe4\x40\x96\x81\x5c\xae\x03\x46\xdd\x8e\xa8\x29\xa0\x59\x30\x80\x27\x6c\xb9\xb7\xd6\xd3\xb4\xef\x12\x9a\x69\xa8\x18\x0c\x60\x61\xc4\x32\x74\x4f\xab\xed\x97\x58\xa7\x90\xeb\xe2\xc0\xa7\xc9\x0e\xc8\xc5\x67\x1e\x8d\x75\xe0\xb9\x06\xaa\x34\x46\xcc\xd1\x84\x46\x77\xd5\xfb\x7d\x70\x35\xd9\x3e\x17\xa6\xc8\x44\x67\xf7\xe2\x8e\x76\xe9\xc1\x80\x1f\x79\xbe\x8e\x55\x38\xc5\xb5\x5d\x78\xc1\xa5\xb3\x24\xb4\x45\xcf\x75\x2e\x96\xd8\x6d\x3d\xc4\x09\x1f\xbc\x9f\xcc\x06\x97\x1f\x67\xbd\xcb\xcb\xf1\xcd\x68\xba\xed\xa8\x95\xef\xa0\xf4\x9d\x1d\xdc\x1f\xbc\xeb\xdd\x5c\x4d\x67\x1f\x07\x7f\x0c\xc7\xa3\x6d\x7d\x7b\xb4\x16\xb6\xb1\x13\x69\x21\xca\x80\x5c\xe4\xea\xd5\xcb\x8b\x9f\x3b\x67\xf5\xfb\xa5\x71\xa5\xe2\x85\x77\x6b\xad\xd0\x77\xc5\x26\x34\x80\xd5\x7c\xae\x2d\x57\xda\x77\x53\x57\x50\x2a\xad\x8e\xff\x8c\x07\xb0\x74\x76\xb1\xc3\x63\xb7\x23\x6e\x91\x3a\xaa\x61\xec\xeb\xf1\xa5\x8d\xde\xee\x2a\x27\x57\xe8\x9b\x26\x22\x6d\x9c\x5f\xf1\xc2\x94\x4b\x6d\xbb\xd2\xea\x1a\xf0\xb8\xd4\x81\xd0\xf3\xd8\xe6\x2e\xf9\x12\x8f\x81\xe8\x2e\x1e\x63\xd3\xbe\xff\xd3\xde\x70\x34\xdd\x7f\xa0\x6a\x56\x9d\x5d\xe8\x65\xf7\xd8\x29\xbb\xeb\xce\xbd\xc8\xcd\x97\x3c\xbf\x45\x8c\x96\x6a\x58\xed\x68\x9b\xdd\xe0\x7f\x59\x18\x71\xee\xe3\xd6\xa9\xec\x74\xfb\xdb\xdd\x36\x61\x6d\xd6\xac\x07\xe1\x1f\xf1\xd8\xff\x01\x00\x00\xff\xff\xae\xe5\x0a\x0b\x56\x08\x00\x00") +var _bootstrapUbuntuSh = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x55\x61\x73\x1a\x37\x10\xfd\xae\x5f\xb1\x3d\x33\xa9\x99\x46\x77\xb1\x9b\x66\x26\x4e\xe8\x94\x1a\xd2\x32\x71\xc0\x13\x70\x9b\x8e\xc7\x65\x84\xb4\x70\x1a\x84\x74\x23\xed\x41\x3c\x1e\xfa\xdb\x3b\x3a\xee\x08\x26\x89\x3f\xf9\xa4\xf7\xde\xb2\xbb\x7a\xbb\x3e\xf9\x21\x9b\x69\x9b\xcd\x44\xc8\x19\x0b\x48\xc0\x1d\xa0\xf7\xf8\x59\x53\x73\x2c\x74\x81\x73\xa1\x4d\x73\xb6\xae\xb4\x01\x89\xb1\x79\x69\x25\x69\x67\x61\x81\x34\x5d\x89\xcf\xd3\xc2\xa9\x70\xda\x86\x07\x06\xb0\xc9\xb5\x41\xf0\x28\x14\x68\x1b\x48\x58\x89\x53\xba\x2f\x10\x22\xe7\x0d\x28\xc7\x00\x00\xf4\x1c\xe0\xf6\x16\x92\xd6\xc3\x23\xd2\x36\x81\x4e\x27\xde\x9e\x6d\x13\xb8\xbb\x83\x67\xcf\x6a\x56\x14\x47\xf0\x3f\xf8\xf7\xf6\x05\x7f\x7d\xf7\x53\x2b\xc2\x6f\x80\x72\xb4\x55\x40\x00\x94\xb9\x83\x9a\xf9\xa6\xbe\xf3\x48\xa5\xdf\x11\xe6\x9a\x01\x28\x67\x11\xde\x42\x86\x24\x33\x5c\x06\x49\x26\x6b\xd2\x4f\x57\xa2\x60\x5b\xc6\x4e\xe0\x26\x20\x0c\x3e\xf4\xc6\xeb\x73\x20\x17\x4b\x84\x15\x92\x50\x82\x04\x9b\x8c\xde\xf7\x87\x9d\xa4\x75\x2a\x4b\x6f\x80\xf3\xa0\x0d\x5a\x02\xfe\x09\xae\x6f\x26\xc0\xff\x84\xe4\x13\x17\x9b\xc0\x51\x9e\xf3\x46\xc4\xc9\x2d\xd1\x72\x22\xc3\x03\x4a\x67\x55\xb8\x80\x57\x2f\x5e\x24\x90\x13\x15\x17\x59\x76\xf6\xea\x75\x7a\xfe\xcb\xcb\xb4\xfe\x9b\x19\x41\x18\x28\x13\x85\xce\x2a\x65\x3b\x39\xea\x77\x1d\xb7\xee\xf7\x51\x26\x4f\xa4\x70\x01\xad\x2a\xff\x04\x92\xa7\x7f\x3a\xca\x78\xd4\x65\xad\xb3\x24\xf6\x64\x38\xea\xf5\xa7\x83\xeb\x58\xf8\x61\x06\x60\x9c\x14\x86\xeb\x62\xfd\xb2\x9d\xb0\xc1\x70\x3c\xe9\x0e\x2f\xfb\xd3\x41\xef\x2b\x62\xf3\xc8\x5c\xab\x43\xe6\xe4\x9f\xeb\xfe\xf7\xb9\xd1\x10\xed\x84\x75\xff\x1e\x4f\xc7\xfd\x8f\x7f\x0d\x2e\xfb\xe3\x69\x6f\xf4\xa1\x3b\x18\x7e\xa5\x09\xe8\xd7\x5a\x62\xc8\x94\x5b\x09\x1d\x5b\xc6\x82\x2b\xbd\xc4\x47\x4f\xbd\x2c\x67\x68\x90\x52\xb4\x6b\x38\x01\xca\x75\x00\x29\x2c\xb8\x35\x7a\xaf\x15\xc2\x87\xee\xa7\xe9\xf5\xa8\x37\x66\x4c\x0a\x82\x5f\xbf\xa9\xad\x4a\xae\x22\xbc\x7d\xdb\x1f\xbd\xdb\xb7\xa6\xf5\x50\x7f\x6d\x1f\x35\xa2\xf5\x70\x70\xda\x1e\x55\x7e\x00\xc6\xf3\x96\x35\x09\x74\x5a\x0f\xcd\xe7\x05\xaf\x4b\xad\x6d\x1a\x87\xe1\xb1\x2a\x69\x6f\x59\xcc\x84\x05\x2b\x0a\x10\x46\x8b\x00\x75\xb6\x1c\x97\x21\xad\xbf\x9b\xbb\x63\x9a\x24\xb3\xa7\x49\x32\xcd\xdd\x8e\x16\xc8\x15\x87\xc1\x58\xb8\x0f\x84\xab\xc8\xf3\x18\x90\x78\x5c\x0f\xa8\x18\x3b\x65\x00\x27\x30\x19\xf5\x46\x17\x71\x26\x03\x42\xc8\x5d\x69\x14\xcc\x10\x8c\x73\x4b\x54\x20\x08\x70\x8d\xfe\x1e\x48\xaf\xb0\x09\x0a\x81\x84\xa7\x00\x65\xf1\xbc\x8a\xb0\xc9\xb5\xcc\x41\x07\xd8\xe4\x82\x60\x83\xa0\x1c\x68\x0b\xdd\xab\x73\x38\xdd\x63\x33\x11\x50\x81\xb3\x50\x18\xa1\x2d\xec\x72\x52\xbb\x00\xc2\x2a\x58\xa1\xb0\x14\x67\x77\x16\xb7\x8e\x27\x31\x33\x18\x8f\x2b\x17\xa8\x61\x83\xd2\x81\xbc\x0b\xed\xe7\x30\x2b\x09\x34\xfd\x18\x2a\xbd\x75\x04\xd2\xa0\xf0\x90\xbb\x4d\x14\x19\x27\x54\x5d\xd2\xdc\xbb\xd5\x97\xc4\x63\x7f\x36\x9a\x72\x57\x12\xe4\x62\xad\xed\xa2\x0a\x40\x0e\x64\x19\xc8\xad\x74\xc0\xa8\xdb\x11\x35\x05\x34\x73\x06\xf0\x84\x2d\xf7\xd6\x7a\x9a\xf6\x5d\x42\x33\x0d\x15\x83\x01\xcc\x8d\x58\x84\xce\x69\xb5\xfd\x12\xeb\x14\x72\x5d\x1c\xf8\x34\xd9\x01\x2b\xf1\x99\x47\x63\x1d\x78\xae\x81\x2a\x8d\x11\x33\x34\xa1\xd1\x5d\x75\x7f\xef\x5f\x8d\xb7\xcf\x85\x29\x72\x91\xee\x7e\x38\xd5\x2e\x3b\x18\xf0\x23\xcf\xd7\xb1\x0a\xa7\xb8\xb6\x73\x2f\xb8\x74\x96\x84\xb6\xe8\xb9\x5e\x89\x05\x76\x5a\x0f\x71\xc2\xfb\xef\xc7\xd3\xfe\xe5\xc7\x69\xf7\xf2\x72\x74\x33\x9c\x6c\x53\xb5\xf4\x29\x4a\x9f\xee\xe0\x5e\xff\x5d\xf7\xe6\x6a\x32\xfd\xd8\xff\x63\x30\x1a\x6e\xeb\xdb\xa3\xb5\xb0\x8d\x9d\xc8\x0a\x51\x06\xbc\xf8\x39\x3d\x8b\x86\x9d\x95\xda\xa8\xf4\xac\x4e\x42\x1a\x57\x2a\x5e\x78\xb7\xd6\x0a\x7d\x47\x6c\x42\x03\x58\xcd\x67\xda\x72\xa5\x7d\x27\x73\x05\x65\xd2\xea\xf8\xef\xf1\x00\x96\xce\xce\x77\x78\x6c\x79\xc4\x2d\x52\xaa\x1a\xc6\xbe\x28\x5f\xda\x68\xf0\x8e\x72\x72\x89\xbe\xe9\x24\xd2\xc6\xf9\x25\x2f\x4c\xb9\xd0\xb6\x23\xad\xae\x01\x8f\x0b\x1d\x08\x3d\x8f\xbd\xee\x90\x2f\xf1\x18\x88\x16\xe3\x31\x36\xed\x1f\x61\xd2\x1d\x0c\x27\xfb\x57\xaa\x06\xd6\xd9\xb9\x5e\x74\x8e\xed\xb2\xbb\x4e\xef\xc5\xca\x7c\xc9\xf3\x5b\xc4\xe8\xab\x86\xd5\x8e\xde\xd9\x4d\xff\x97\xad\x11\x7b\x19\x57\x4f\xe5\xa9\xdb\xdf\xee\xb6\x09\x6b\xb3\x66\x47\x08\xff\x88\xc7\xfe\x0f\x00\x00\xff\xff\x45\xd3\xa7\xae\x5b\x08\x00\x00") func bootstrapUbuntuShBytes() ([]byte, error) { return bindataRead( @@ -128,7 +128,7 @@ func bootstrapUbuntuSh() (*asset, error) { } info := bindataFileInfo{name: "bootstrap.ubuntu.sh", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x97, 0xec, 0xc4, 0x20, 0xf3, 0x1c, 0x0, 0x5c, 0x54, 0xb1, 0x1f, 0xec, 0x5a, 0x97, 0xd0, 0xe7, 0xb0, 0xbf, 0x3e, 0x8b, 0x83, 0xc8, 0x92, 0x49, 0x84, 0xe4, 0xfa, 0xff, 0xa1, 0x6b, 0x5f}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1c, 0xde, 0xe6, 0xf6, 0x78, 0xd3, 0xf3, 0x74, 0xf6, 0xa1, 0x93, 0xe3, 0x9d, 0x3a, 0x4c, 0x50, 0xc4, 0x82, 0x9b, 0x6e, 0x3b, 0x2d, 0x29, 0x12, 0x3, 0xa2, 0xfd, 0x96, 0xd, 0x97, 0xdd, 0x55}} return a, nil } diff --git a/pkg/nodebootstrap/assets/10-eksclt.al2.conf b/pkg/nodebootstrap/assets/10-eksclt.al2.conf index d3386036e2..84dfa52d35 100644 --- a/pkg/nodebootstrap/assets/10-eksclt.al2.conf +++ b/pkg/nodebootstrap/assets/10-eksclt.al2.conf @@ -19,6 +19,6 @@ ExecStart=/usr/bin/kubelet \ --network-plugin=cni \ --cni-bin-dir=/opt/cni/bin \ --cni-conf-dir=/etc/cni/net.d \ - --pod-infra-container-image=${AWS_EKS_ECR_ACCOUNT}.dkr.ecr.${AWS_DEFAULT_REGION}.${AWS_SERVICES_DOMAIN}/eks/pause-${ARCH}:3.1 \ + --pod-infra-container-image=${AWS_EKS_ECR_ACCOUNT}.dkr.ecr.${AWS_DEFAULT_REGION}.${AWS_SERVICES_DOMAIN}/eks/pause:3.1-eksbuild.1 \ --kubeconfig=/etc/eksctl/kubeconfig.yaml \ --config=/etc/eksctl/kubelet.yaml diff --git a/pkg/nodebootstrap/assets/bootstrap.al2.sh b/pkg/nodebootstrap/assets/bootstrap.al2.sh index 489becd18b..fc3132e702 100644 --- a/pkg/nodebootstrap/assets/bootstrap.al2.sh +++ b/pkg/nodebootstrap/assets/bootstrap.al2.sh @@ -24,16 +24,6 @@ INSTANCE_ID="$(get_metadata instance-id)" INSTANCE_TYPE="$(get_metadata instance-type)" AWS_SERVICES_DOMAIN="$(get_metadata services/domain)" -MACHINE=$(uname -m) - -if [ "$MACHINE" == "x86_64" ]; then - ARCH="amd64" -elif [ "$MACHINE" == "aarch64" ]; then - ARCH="arm64" -else - ARCH="amd64" - echo "Set default architecture to '$ARCH'" >&2 -fi source /etc/eksctl/kubelet.env # this can override MAX_PODS @@ -43,7 +33,6 @@ INSTANCE_ID=${INSTANCE_ID} INSTANCE_TYPE=${INSTANCE_TYPE} AWS_SERVICES_DOMAIN=${AWS_SERVICES_DOMAIN} MAX_PODS=${MAX_PODS:-$(get_max_pods "${INSTANCE_TYPE}")} -ARCH=${ARCH} EOF systemctl daemon-reload diff --git a/pkg/nodebootstrap/assets/bootstrap.ubuntu.sh b/pkg/nodebootstrap/assets/bootstrap.ubuntu.sh index dafe4fdb34..77967dc72f 100644 --- a/pkg/nodebootstrap/assets/bootstrap.ubuntu.sh +++ b/pkg/nodebootstrap/assets/bootstrap.ubuntu.sh @@ -52,7 +52,7 @@ systemctl reset-failed "node-ip=${NODE_IP}" "max-pods=${MAX_PODS}" "node-labels=${NODE_LABELS},alpha.eksctl.io/instance-id=${INSTANCE_ID}" - "pod-infra-container-image=${AWS_EKS_ECR_ACCOUNT}.dkr.ecr.${AWS_DEFAULT_REGION}.${AWS_SERVICES_DOMAIN}/eks/pause-amd64:3.1" + "pod-infra-container-image=${AWS_EKS_ECR_ACCOUNT}.dkr.ecr.${AWS_DEFAULT_REGION}.${AWS_SERVICES_DOMAIN}/eks/pause:3.1-eksbuild.1" "cloud-provider=aws" "cni-bin-dir=/opt/cni/bin" "cni-conf-dir=/etc/cni/net.d" diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 346b70de70..473ef7e1a1 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -9,6 +9,17 @@ import ( "github.com/pkg/errors" ) +// IsARMInstanceType returns true if the instance type is ARM architecture +func IsARMInstanceType(instanceType string) bool { + return strings.HasPrefix(instanceType, "a1") || + strings.HasPrefix(instanceType, "m6g") || + strings.HasPrefix(instanceType, "m6gd") || + strings.HasPrefix(instanceType, "c6g") || + strings.HasPrefix(instanceType, "c6gd") || + strings.HasPrefix(instanceType, "r6g") || + strings.HasPrefix(instanceType, "r6gd") +} + // IsGPUInstanceType returns true if the instance type is GPU optimised func IsGPUInstanceType(instanceType string) bool { return strings.HasPrefix(instanceType, "p2") || strings.HasPrefix(instanceType, "p3") || strings.HasPrefix(instanceType, "g3") || strings.HasPrefix(instanceType, "g4") || strings.HasPrefix(instanceType, "inf1") diff --git a/userdocs/mkdocs.yml b/userdocs/mkdocs.yml index 88c22af004..94ef8edfd2 100644 --- a/userdocs/mkdocs.yml +++ b/userdocs/mkdocs.yml @@ -21,6 +21,7 @@ nav: - usage/custom-ami-support.md - usage/vpc-networking.md - usage/gpu-support.md + - usage/arm-support.md - usage/spot-instances.md - IAM: - usage/iam-permissions-boundary.md diff --git a/userdocs/src/usage/arm-support.md b/userdocs/src/usage/arm-support.md new file mode 100644 index 0000000000..b64a19ecd9 --- /dev/null +++ b/userdocs/src/usage/arm-support.md @@ -0,0 +1,66 @@ +# ARM Support + +EKS supports 64 bit ARM architecture with its [Graviton processors](https://aws.amazon.com/ec2/graviton/). To create a cluster, +select one of the Graviton-based instance types (`a1`, `m6g`, `m6gd`, `c6g`, `c6gd`, `r6g`, `r6gd`) and run: + + +``` +eksctl create cluster --node-type=a1.large +``` + +or use a config file: + +``` +--- +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: cluster-arm-1 + region: us-west-2 + + +nodeGroups: + - name: ng-arm-1 + instanceType: m6g.medium + desiredCapacity: 1 +``` + +``` +eksctl create cluster -f cluster-arm-1.yaml +``` + +ARM is also supported in managed nodegroups: + +``` +--- +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: cluster-arm-2 + region: us-west-2 + + +managedNodeGroups: + - name: mng-arm-1 + instanceType: m6g.medium + desiredCapacity: 1 +``` + +``` +eksctl create cluster -f cluster-arm-2.yaml +``` + + +The AMI resolvers, `auto` and `auto-ssm`, will see that you want to use an ARM instance type and they will select the correct AMI. + +!!!note + Note that currently there are only AmazonLinux2 EKS optimized AMIs for ARM. + +Additionally, the default add-ons will use multi-architecture docker images. This is why, when a cluster is created, and before a nodegroup +is created, eksctl will make sure it upgrades the add-ons. + +!!!note + ARM is supported for clusters with version 1.15 and higher. +