Merge pull request #8425 from hakman/fix-amazon-linux

Update support for Amazon Linux 2
This commit is contained in:
Kubernetes Prow Robot 2020-01-28 20:12:13 -08:00 committed by GitHub
commit 2509919b5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 74 additions and 55 deletions

View File

@ -29,6 +29,7 @@ var (
DistributionDebian10 Distribution = "buster" DistributionDebian10 Distribution = "buster"
DistributionXenial Distribution = "xenial" DistributionXenial Distribution = "xenial"
DistributionBionic Distribution = "bionic" DistributionBionic Distribution = "bionic"
DistributionAmazonLinux2 Distribution = "amazonlinux2"
DistributionRhel7 Distribution = "rhel7" DistributionRhel7 Distribution = "rhel7"
DistributionCentos7 Distribution = "centos7" DistributionCentos7 Distribution = "centos7"
DistributionRhel8 Distribution = "rhel8" DistributionRhel8 Distribution = "rhel8"
@ -50,6 +51,8 @@ func (d Distribution) BuildTags() []string {
t = []string{"_xenial"} t = []string{"_xenial"}
case DistributionBionic: case DistributionBionic:
t = []string{"_bionic"} t = []string{"_bionic"}
case DistributionAmazonLinux2:
t = []string{"_amazonlinux2"}
case DistributionCentos7: case DistributionCentos7:
t = []string{"_centos7"} t = []string{"_centos7"}
case DistributionRhel7: case DistributionRhel7:
@ -88,7 +91,7 @@ func (d Distribution) IsDebianFamily() bool {
return true return true
case DistributionXenial, DistributionBionic: case DistributionXenial, DistributionBionic:
return true return true
case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8: case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8, DistributionAmazonLinux2:
return false return false
case DistributionCoreOS, DistributionFlatcar, DistributionContainerOS: case DistributionCoreOS, DistributionFlatcar, DistributionContainerOS:
return false return false
@ -104,7 +107,7 @@ func (d Distribution) IsUbuntu() bool {
return false return false
case DistributionXenial, DistributionBionic: case DistributionXenial, DistributionBionic:
return true return true
case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8: case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8, DistributionAmazonLinux2:
return false return false
case DistributionCoreOS, DistributionFlatcar, DistributionContainerOS: case DistributionCoreOS, DistributionFlatcar, DistributionContainerOS:
return false return false
@ -116,7 +119,7 @@ func (d Distribution) IsUbuntu() bool {
func (d Distribution) IsRHELFamily() bool { func (d Distribution) IsRHELFamily() bool {
switch d { switch d {
case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8: case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8, DistributionAmazonLinux2:
return true return true
case DistributionJessie, DistributionXenial, DistributionBionic, DistributionDebian9, DistributionDebian10: case DistributionJessie, DistributionXenial, DistributionBionic, DistributionDebian9, DistributionDebian10:
return false return false
@ -132,7 +135,7 @@ func (d Distribution) IsSystemd() bool {
switch d { switch d {
case DistributionJessie, DistributionXenial, DistributionBionic, DistributionDebian9, DistributionDebian10: case DistributionJessie, DistributionXenial, DistributionBionic, DistributionDebian9, DistributionDebian10:
return true return true
case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8: case DistributionCentos7, DistributionRhel7, DistributionCentos8, DistributionRhel8, DistributionAmazonLinux2:
return true return true
case DistributionCoreOS, DistributionFlatcar: case DistributionCoreOS, DistributionFlatcar:
return true return true

View File

@ -113,8 +113,7 @@ func FindDistribution(rootfs string) (Distribution, error) {
return DistributionContainerOS, nil return DistributionContainerOS, nil
} }
if strings.HasPrefix(line, "PRETTY_NAME=\"Amazon Linux 2") { if strings.HasPrefix(line, "PRETTY_NAME=\"Amazon Linux 2") {
// TODO: This is a hack. Amazon Linux is "special" and should get its own distro entry return DistributionAmazonLinux2, nil
return DistributionRhel7, nil
} }
} }
klog.Warningf("unhandled /etc/os-release info %q", string(osRelease)) klog.Warningf("unhandled /etc/os-release info %q", string(osRelease))

View File

@ -97,7 +97,7 @@ var containerdVersions = []packageVersion{
{ {
PackageVersion: "1.2.10", PackageVersion: "1.2.10",
Name: "containerd.io", Name: "containerd.io",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "1.2.10", Version: "1.2.10",
Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.10-3.2.el7.x86_64.rpm", Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.10-3.2.el7.x86_64.rpm",

View File

@ -74,7 +74,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "1.11.2", PackageVersion: "1.11.2",
Name: "docker-engine", Name: "docker-engine",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "1.11.2", Version: "1.11.2",
Source: "https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.11.2-1.el7.centos.x86_64.rpm", Source: "https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.11.2-1.el7.centos.x86_64.rpm",
@ -117,7 +117,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "1.12.1", PackageVersion: "1.12.1",
Name: "docker-engine", Name: "docker-engine",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "1.12.1", Version: "1.12.1",
Source: "https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.1-1.el7.centos.x86_64.rpm", Source: "https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.1-1.el7.centos.x86_64.rpm",
@ -176,7 +176,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "1.12.3", PackageVersion: "1.12.3",
Name: "docker-engine", Name: "docker-engine",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "1.12.3", Version: "1.12.3",
Source: "https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.3-1.el7.centos.x86_64.rpm", Source: "https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.3-1.el7.centos.x86_64.rpm",
@ -250,7 +250,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "1.12.6", PackageVersion: "1.12.6",
Name: "docker-engine", Name: "docker-engine",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "1.12.6", Version: "1.12.6",
Source: "https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.6-1.el7.centos.x86_64.rpm", Source: "https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.6-1.el7.centos.x86_64.rpm",
@ -324,7 +324,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "1.13.1", PackageVersion: "1.13.1",
Name: "docker-engine", Name: "docker-engine",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "1.13.1", Version: "1.13.1",
Source: "https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.13.1-1.el7.centos.x86_64.rpm", Source: "https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.13.1-1.el7.centos.x86_64.rpm",
@ -409,7 +409,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "17.03.2", PackageVersion: "17.03.2",
Name: "docker-ce", Name: "docker-ce",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "17.03.2.ce", Version: "17.03.2.ce",
Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm", Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm",
@ -508,7 +508,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "17.09.0", PackageVersion: "17.09.0",
Name: "docker-ce", Name: "docker-ce",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "17.09.0.ce", Version: "17.09.0.ce",
Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm", Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm",
@ -598,7 +598,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "18.06.1", PackageVersion: "18.06.1",
Name: "docker-ce", Name: "docker-ce",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "18.06.1.ce", Version: "18.06.1.ce",
Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.1.ce-3.el7.x86_64.rpm", Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.1.ce-3.el7.x86_64.rpm",
@ -628,7 +628,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "18.06.2", PackageVersion: "18.06.2",
Name: "docker-ce", Name: "docker-ce",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "18.06.2.ce", Version: "18.06.2.ce",
Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.2.ce-3.el7.x86_64.rpm", Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.2.ce-3.el7.x86_64.rpm",
@ -681,7 +681,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "18.06.3", PackageVersion: "18.06.3",
Name: "docker-ce", Name: "docker-ce",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "18.06.3.ce", Version: "18.06.3.ce",
Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.3.ce-3.el7.x86_64.rpm", Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.3.ce-3.el7.x86_64.rpm",
@ -782,7 +782,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "18.09.9", PackageVersion: "18.09.9",
Name: "docker-ce", Name: "docker-ce",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "18.09.9", Version: "18.09.9",
Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.09.9-3.el7.x86_64.rpm", Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.09.9-3.el7.x86_64.rpm",
@ -898,7 +898,7 @@ var dockerVersions = []packageVersion{
{ {
PackageVersion: "19.03.4", PackageVersion: "19.03.4",
Name: "docker-ce", Name: "docker-ce",
Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7}, Distros: []distros.Distribution{distros.DistributionRhel7, distros.DistributionCentos7, distros.DistributionAmazonLinux2},
Architectures: []Architecture{ArchitectureAmd64}, Architectures: []Architecture{ArchitectureAmd64},
Version: "19.03.4", Version: "19.03.4",
Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-19.03.4-3.el7.x86_64.rpm", Source: "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-19.03.4-3.el7.x86_64.rpm",

View File

@ -56,17 +56,20 @@ func (b *PackagesBuilder) Build(c *fi.ModelBuilderContext) error {
c.AddTask(&nodetasks.Package{Name: "libseccomp"}) c.AddTask(&nodetasks.Package{Name: "libseccomp"})
c.AddTask(&nodetasks.Package{Name: "socat"}) c.AddTask(&nodetasks.Package{Name: "socat"})
c.AddTask(&nodetasks.Package{Name: "util-linux"}) c.AddTask(&nodetasks.Package{Name: "util-linux"})
// Handle some packages differently for each distro
// Handle RHEL 7 and Amazon Linux 2 differently when installing "extras" switch b.Distribution {
if b.Distribution != distros.DistributionRhel7 { case distros.DistributionRhel7:
c.AddTask(&nodetasks.Package{Name: "container-selinux"}) // Easier to install container-selinux from CentOS than extras
c.AddTask(&nodetasks.Package{Name: "pigz"})
} else {
c.AddTask(&nodetasks.Package{ c.AddTask(&nodetasks.Package{
Name: "container-selinux", Name: "container-selinux",
Source: s("http://vault.centos.org/7.6.1810/extras/x86_64/Packages/container-selinux-2.107-1.el7_6.noarch.rpm"), Source: s("http://vault.centos.org/7.6.1810/extras/x86_64/Packages/container-selinux-2.107-1.el7_6.noarch.rpm"),
Hash: s("7de4211fa0dfd240d8827b93763e1eb5f0d56411"), Hash: s("7de4211fa0dfd240d8827b93763e1eb5f0d56411"),
}) })
case distros.DistributionAmazonLinux2:
// Amazon Linux 2 doesn't have SELinux enabled by default
default:
c.AddTask(&nodetasks.Package{Name: "container-selinux"})
c.AddTask(&nodetasks.Package{Name: "pigz"})
} }
} else { } else {
// Hopefully they are already installed // Hopefully they are already installed

View File

@ -54,7 +54,7 @@ func (b *ContainerdOptionsBuilder) BuildOptions(o interface{}) error {
// Set containerd based on Kubernetes version // Set containerd based on Kubernetes version
if fi.StringValue(containerd.Version) == "" { if fi.StringValue(containerd.Version) == "" {
if b.IsKubernetesGTE("1.17") { if b.IsKubernetesGTE("1.17") {
containerd.Version = fi.String("1.2.10") containerd.Version = fi.String("1.3.2")
} else if b.IsKubernetesGTE("1.11") { } else if b.IsKubernetesGTE("1.11") {
return fmt.Errorf("containerd version is required") return fmt.Errorf("containerd version is required")
} }

View File

@ -502,16 +502,16 @@ func (s *dumpState) getImageInfo(imageID string) (*imageInfo, error) {
func guessSSHUser(image *ec2.Image) string { func guessSSHUser(image *ec2.Image) string {
owner := aws.StringValue(image.OwnerId) owner := aws.StringValue(image.OwnerId)
switch owner { switch owner {
case awsup.WellKnownAccountAmazonSystemLinux2: case awsup.WellKnownAccountAmazonLinux2, awsup.WellKnownAccountRedhat:
return "ec2-user" return "ec2-user"
case awsup.WellKnownAccountRedhat: case awsup.WellKnownAccountCentOS:
return "ec2-user" return "centos"
case awsup.WellKnownAccountCoreOS: case awsup.WellKnownAccountDebian9, awsup.WellKnownAccountDebian10, awsup.WellKnownAccountKopeio:
return "core"
case awsup.WellKnownAccountKopeio:
return "admin" return "admin"
case awsup.WellKnownAccountUbuntu: case awsup.WellKnownAccountUbuntu:
return "ubuntu" return "ubuntu"
case awsup.WellKnownAccountCoreOS, awsup.WellKnownAccountFlatcar:
return "core"
} }
name := aws.StringValue(image.Name) name := aws.StringValue(image.Name)

View File

@ -86,10 +86,14 @@ const TagNameKopsRole = "kubernetes.io/kops/role"
const TagNameClusterOwnershipPrefix = "kubernetes.io/cluster/" const TagNameClusterOwnershipPrefix = "kubernetes.io/cluster/"
const ( const (
WellKnownAccountAmazonLinux2 = "137112412989"
WellKnownAccountCentOS = "679593333241"
WellKnownAccountCoreOS = "595879546273"
WellKnownAccountDebian9 = "379101102735"
WellKnownAccountDebian10 = "136693071363"
WellKnownAccountFlatcar = "075585003325"
WellKnownAccountKopeio = "383156758163" WellKnownAccountKopeio = "383156758163"
WellKnownAccountRedhat = "309956199498" WellKnownAccountRedhat = "309956199498"
WellKnownAccountCoreOS = "595879546273"
WellKnownAccountAmazonSystemLinux2 = "137112412989"
WellKnownAccountUbuntu = "099720109477" WellKnownAccountUbuntu = "099720109477"
) )
@ -1165,14 +1169,24 @@ func resolveImage(ec2Client ec2iface.EC2API, name string) (*ec2.Image, error) {
// Check for well known owner aliases // Check for well known owner aliases
switch owner { switch owner {
case "kope.io": case "amazon", "amazon.com":
owner = WellKnownAccountKopeio owner = WellKnownAccountAmazonLinux2
case "coreos.com": case "centos":
owner = WellKnownAccountCentOS
case "coreos", "coreos.com":
owner = WellKnownAccountCoreOS owner = WellKnownAccountCoreOS
case "redhat.com": case "debian9":
owner = WellKnownAccountDebian9
case "debian10":
owner = WellKnownAccountDebian10
case "flatcar":
owner = WellKnownAccountFlatcar
case "kopeio", "kope.io":
owner = WellKnownAccountKopeio
case "redhat", "redhat.com":
owner = WellKnownAccountRedhat owner = WellKnownAccountRedhat
case "amazon.com": case "ubuntu":
owner = WellKnownAccountAmazonSystemLinux2 owner = WellKnownAccountUbuntu
} }
request.Owners = []*string{&owner} request.Owners = []*string{&owner}