Skip to content

Commit

Permalink
Sync branch with main (#5366)
Browse files Browse the repository at this point in the history
* Update opencontainers/runc (#5306)

* Add Cilium skipUpgrade flag to v1alpha1 API (#5298)

* More 1.26 e2e tests (#5275)

* Changing logic for removing hardware from catalogue (#5296)

* Changing logic for removing hardware from catalogue to save list copy

* Adding more unit tests and moving out key create

* Revert "Update opencontainers/runc (#5306)" (#5309)

This reverts commit b1681d6.

* Validate Mgmt Cluster Bundles Version on Upgrade (#5263)

Validates that the management cluster's bundle is the same version or newer than the bundle version used to upgrade a workload cluster.

* change signaling method for FCL curated packages support (#5315)

Previously, the creation a of package bundle controller was executed via a
helm chart release. Now that helm chart will create a package instead. The end
result being the same, that the packages controller will notice the newly
created resource and do what it needs to support curated packages on the new
workload cluster.

One additional value is passed to the helm invocation to help the packages
controller take the appropriate actions.

* Make image-builder OS support and prerequisites section more clear (#5317)

* Autogenerate eksctl anywhere command doc from code (#5299)

* fix field to adapt to new schema (#5323)

* Fix kubectl get call to point to full API name (#5326)

* Fix providers to point to full API name

* Fix

* Fix unit-test

* Fixing tink reconcile worker template omit and logs (#5246)

* Implement unmanaged CNI for CLI based clusters (#5305)

* Remove hardcoded artifact links in docs (#5320)

* added insecure skip verify e2e test for 1.26 (#5322)

* Validate Mgmt Cluster Bundles Version on Create (#5321)

Validates that the management cluster's bundle is the same version or newer than the bundle version used to create a workload cluster.

* Add doc for Nutanix projects and Terraform support (#5330)

* Enable full lifecycle support for Tinkerbell (#5327)

* Fix ECR endpoint URL in Harbor use-case doc (#5233)

* add validation that checks if the OS is valid for the provided registry mirror configuration (#5314)

* set management cluster name helm value (#5331)

Passes the management cluster's name when installing curated packages on a
workload cluster. Removes the workloadOnly flag, as it's no longer needed in
this case, as the FCL/CLI curated packages installation for workload clusters
is now triggered from the workloadPackageOnly flag.

* Add insecureSkipVerify in registry mirror doc (#5339)

* Expand all kubectl calls to fully qualified names (#5332)

* Expand all kubectl calls to fully qualified names

* Fix unit-test

* Fix CAPI Machines

* Add uncovered unit-tests - 1

* Fix harbor endpoint URL in docs (#5340)

* Fix harbor endpoint URL in docs

* Restored previous image

* Add doc for harbor v2.7.1 (#5346)

* add doc for harbor v2.7.1

* more updates

* Add cluster lifecycle information to docs (#5302)

* Add cluster lifecycle information to docs

* Fixes from review comments

* Add wording about upgrade and delete

* Use default credential names if credential names are not set (#5324)

Use `nutanix-credentials` as NutanixDatacenterConfig credentialRef name
if it is not present. This ensures we don't get a nil-pointer dereference
during upgrade and upgrade can happen smoothly.

* Update e2e pkg metallb && Wait for pkg controller installation (#5351)

* MetalLB tests for multiple k8s versions

* Add e2e validation for package controller package installation

* Packages e2e cluster spec (#5221)

* Packages e2e tests for cluster spec

* Packages e2e cluster spec

* lint

* Fix nutanix bad rebase

* [PR BOT] Generate release test file (#5303)

* skipping tink tests due to lack of resources (#5357)

* [PR BOT] Update ATTRIBUTION.txt file (#5255)

* add kernel settings for BR (#5304)

* Bump Homebrew version for EKS-A v0.14.5 (#5355)

* Backport v0.14.5 changelog to main (#5354)

* [PR BOT] Generate release testdata files (#5362)

---------

Co-authored-by: Xu Deng <xudeng@amazon.com>
Co-authored-by: Chris Doherty <chris.doherty4@gmail.com>
Co-authored-by: Taylor Neyland <57606775+taneyland@users.noreply.github.com>
Co-authored-by: Aravind Ramalingam <60027164+pokearu@users.noreply.github.com>
Co-authored-by: Jonathan Meier <jonathanmeier5@users.noreply.github.com>
Co-authored-by: Eric Wollesen <169516+ewollesen@users.noreply.github.com>
Co-authored-by: Abhay Krishna <arnchlm@amazon.com>
Co-authored-by: Joey Wang <jiayiwang7@yahoo.com>
Co-authored-by: Vincent Ni <vincentni@users.noreply.github.com>
Co-authored-by: Vignesh Goutham Ganesh <72776369+vignesh-goutham@users.noreply.github.com>
Co-authored-by: Yannick Struyf <yannick.struyf@nutanix.com>
Co-authored-by: Mitali Paygude <mitalipaygude@gmail.com>
Co-authored-by: Hendry Anwar <hendry.anwar@live.com>
Co-authored-by: Chris Negus <striker57@gmail.com>
Co-authored-by: Sid Shukla <6081171+thunderboltsid@users.noreply.github.com>
Co-authored-by: Lewis Diamond <git@lewisdiamond.com>
Co-authored-by: Terry Howe <terrylhowe@gmail.com>
Co-authored-by: EKS Distro PR Bot <75336432+eks-distro-pr-bot@users.noreply.github.com>
Co-authored-by: ahreehong <46465244+ahreehong@users.noreply.github.com>
  • Loading branch information
1 parent efa77e8 commit 4fb93aa
Show file tree
Hide file tree
Showing 149 changed files with 6,999 additions and 1,782 deletions.
381 changes: 378 additions & 3 deletions ATTRIBUTION.txt

Large diffs are not rendered by default.

8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,10 @@ build-cross-platform: eks-a-cross-platform
eks-a-tool: ## Build eks-a-tool
$(GO) build -o bin/eks-a-tool github.com/aws/eks-anywhere/cmd/eks-a-tool

.PHONY: docgen
docgen: eks-a-tool ## generate eksctl anywhere commands doc from code
bin/eks-a-tool docgen

.PHONY: eks-a-cluster-controller
eks-a-cluster-controller: ## Build eks-a-cluster-controller
$(GO) build -ldflags "-s -w -buildid='' -extldflags -static" -o bin/manager ./manager
Expand Down Expand Up @@ -501,7 +505,7 @@ capd-test-%: build-all-test-binaries ## Run CAPD tests
./bin/e2e.test -test.v -test.run TestDockerKubernetes$*SimpleFlow


PACKAGES_E2E_TESTS ?= TestDockerKubernetes121CuratedPackagesSimpleFlow
PACKAGES_E2E_TESTS ?= TestDockerKubernetes125CuratedPackagesSimpleFlow
ifeq ($(PACKAGES_E2E_TESTS),all)
PACKAGES_E2E_TESTS='Test.*CuratedPackages'
endif
Expand Down Expand Up @@ -646,7 +650,7 @@ build-integration-test-binary:
.PHONY: conformance
conformance:
$(MAKE) e2e-tests-binary E2E_TAGS=conformance_e2e
./bin/e2e.test -test.v -test.run 'TestVSphereKubernetes121ThreeWorkersConformanc.*'
./bin/e2e.test -test.v -test.run 'TestVSphereKubernetes.*ThreeWorkersConformanceFlow'

.PHONY: conformance-tests
conformance-tests: build-eks-a-for-e2e build-integration-test-binary ## Build e2e conformance tests
Expand Down
58 changes: 58 additions & 0 deletions cmd/eks-a-tool/cmd/docgen.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package cmd

import (
"fmt"
"path"
"path/filepath"
"strings"

"github.com/spf13/cobra"
"github.com/spf13/cobra/doc"

anywhere "github.com/aws/eks-anywhere/cmd/eksctl-anywhere/cmd"
)

const fmTemplate = `---
title: "%s"
linkTitle: "%s"
---
`

var cmdDocPath string

var docgenCmd = &cobra.Command{
Use: "docgen",
Short: "Generate the documentation for the CLI commands",
Long: "Use eks-a-tool docgen to auto generate CLI commands documentation",
Hidden: true,
RunE: docgenCmdRun,
}

func init() {
docgenCmd.Flags().StringVar(&cmdDocPath, "path", "./docs/content/en/docs/reference/eksctl", "Path to write the generated documentation to")
rootCmd.AddCommand(docgenCmd)
}

func docgenCmdRun(_ *cobra.Command, _ []string) error {
anywhereRootCmd := anywhere.RootCmd()
anywhereRootCmd.DisableAutoGenTag = true
if err := doc.GenMarkdownTreeCustom(anywhereRootCmd, cmdDocPath, filePrepender, linkHandler); err != nil {
return fmt.Errorf("error generating markdown doc from eksctl-anywhere root cmd: %v", err)
}
return nil
}

func filePrepender(filename string) string {
name := filepath.Base(filename)
base := strings.TrimSuffix(name, path.Ext(name))
title := strings.Replace(base, "_", " ", -1)
return fmt.Sprintf(fmTemplate, title, title)
}

func linkHandler(name string) string {
base := strings.TrimSuffix(name, path.Ext(name))
base = strings.Replace(base, "(", "", -1)
base = strings.Replace(base, ")", "", -1)
return "../" + strings.ToLower(base) + "/"
}
5 changes: 5 additions & 0 deletions cmd/eksctl-anywhere/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,8 @@ func initLogger() error {
func Execute() error {
return rootCmd.ExecuteContext(context.Background())
}

// RootCmd returns the eksctl-anywhere root cmd.
func RootCmd() *cobra.Command {
return rootCmd
}
9 changes: 7 additions & 2 deletions config/crd/bases/anywhere.eks.amazonaws.com_clusters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,12 @@ spec:
allowed between pods. Accepted values are default, always,
never.
type: string
skipUpgrade:
default: false
description: SkipUpgrade indicicates that Cilium maintenance
should be skipped during upgrades. This can be used
when operators wish to self manage the Cilium installation.
type: boolean
type: object
kindnetd:
type: object
Expand Down Expand Up @@ -340,8 +346,7 @@ spec:
insecureSkipVerify:
description: InsecureSkipVerify skips the registry certificate
verification. Only use this solution for isolated testing or
in a tightly controlled, air-gapped environment. Currently only
supported for snow provider
in a tightly controlled, air-gapped environment.
type: boolean
ociNamespaces:
description: OCINamespaces defines the mapping from an upstream
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,61 @@ spec:
items:
type: string
type: array
hostOSConfiguration:
description: HostOSConfiguration provides OS specific configurations
for the machine
properties:
bottlerocketConfiguration:
description: BottlerocketConfiguration defines the Bottlerocket
configuration on the host OS. These settings only take effect
when the `osFamily` is bottlerocket.
properties:
kernel:
description: Kernel defines the kernel settings for bottlerocket.
properties:
sysctlSettings:
additionalProperties:
type: string
description: SysctlSettings defines the kernel sysctl
settings to set for bottlerocket nodes.
type: object
type: object
kubernetes:
description: Kubernetes defines the Kubernetes settings on
the host OS.
properties:
allowedUnsafeSysctls:
description: AllowedUnsafeSysctls defines the list of
unsafe sysctls that can be set on a node.
items:
type: string
type: array
clusterDNSIPs:
description: ClusterDNSIPs defines IP addresses of the
DNS servers.
items:
type: string
type: array
maxPods:
description: MaxPods defines the maximum number of pods
that can run on a node.
type: integer
type: object
type: object
ntpConfiguration:
description: NTPConfiguration defines the NTP configuration on
the host OS.
properties:
servers:
description: Servers defines a list of NTP servers to be configured
on the host OS.
items:
type: string
type: array
required:
- servers
type: object
type: object
instanceType:
description: InstanceType is the type of instance to create.
type: string
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,16 @@ spec:
configuration on the host OS. These settings only take effect
when the `osFamily` is bottlerocket.
properties:
kernel:
description: Kernel defines the kernel settings for bottlerocket.
properties:
sysctlSettings:
additionalProperties:
type: string
description: SysctlSettings defines the kernel sysctl
settings to set for bottlerocket nodes.
type: object
type: object
kubernetes:
description: Kubernetes defines the Kubernetes settings on
the host OS.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,16 @@ spec:
configuration on the host OS. These settings only take effect
when the `osFamily` is bottlerocket.
properties:
kernel:
description: Kernel defines the kernel settings for bottlerocket.
properties:
sysctlSettings:
additionalProperties:
type: string
description: SysctlSettings defines the kernel sysctl
settings to set for bottlerocket nodes.
type: object
type: object
kubernetes:
description: Kubernetes defines the Kubernetes settings on
the host OS.
Expand Down
86 changes: 83 additions & 3 deletions config/manifest/eksa-components.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3642,6 +3642,12 @@ spec:
allowed between pods. Accepted values are default, always,
never.
type: string
skipUpgrade:
default: false
description: SkipUpgrade indicicates that Cilium maintenance
should be skipped during upgrades. This can be used
when operators wish to self manage the Cilium installation.
type: boolean
type: object
kindnetd:
type: object
Expand Down Expand Up @@ -3911,8 +3917,7 @@ spec:
insecureSkipVerify:
description: InsecureSkipVerify skips the registry certificate
verification. Only use this solution for isolated testing or
in a tightly controlled, air-gapped environment. Currently only
supported for snow provider
in a tightly controlled, air-gapped environment.
type: boolean
ociNamespaces:
description: OCINamespaces defines the mapping from an upstream
Expand Down Expand Up @@ -5047,6 +5052,61 @@ spec:
items:
type: string
type: array
hostOSConfiguration:
description: HostOSConfiguration provides OS specific configurations
for the machine
properties:
bottlerocketConfiguration:
description: BottlerocketConfiguration defines the Bottlerocket
configuration on the host OS. These settings only take effect
when the `osFamily` is bottlerocket.
properties:
kernel:
description: Kernel defines the kernel settings for bottlerocket.
properties:
sysctlSettings:
additionalProperties:
type: string
description: SysctlSettings defines the kernel sysctl
settings to set for bottlerocket nodes.
type: object
type: object
kubernetes:
description: Kubernetes defines the Kubernetes settings on
the host OS.
properties:
allowedUnsafeSysctls:
description: AllowedUnsafeSysctls defines the list of
unsafe sysctls that can be set on a node.
items:
type: string
type: array
clusterDNSIPs:
description: ClusterDNSIPs defines IP addresses of the
DNS servers.
items:
type: string
type: array
maxPods:
description: MaxPods defines the maximum number of pods
that can run on a node.
type: integer
type: object
type: object
ntpConfiguration:
description: NTPConfiguration defines the NTP configuration on
the host OS.
properties:
servers:
description: Servers defines a list of NTP servers to be configured
on the host OS.
items:
type: string
type: array
required:
- servers
type: object
type: object
instanceType:
description: InstanceType is the type of instance to create.
type: string
Expand Down Expand Up @@ -5295,6 +5355,16 @@ spec:
configuration on the host OS. These settings only take effect
when the `osFamily` is bottlerocket.
properties:
kernel:
description: Kernel defines the kernel settings for bottlerocket.
properties:
sysctlSettings:
additionalProperties:
type: string
description: SysctlSettings defines the kernel sysctl
settings to set for bottlerocket nodes.
type: object
type: object
kubernetes:
description: Kubernetes defines the Kubernetes settings on
the host OS.
Expand Down Expand Up @@ -5661,6 +5731,16 @@ spec:
configuration on the host OS. These settings only take effect
when the `osFamily` is bottlerocket.
properties:
kernel:
description: Kernel defines the kernel settings for bottlerocket.
properties:
sysctlSettings:
additionalProperties:
type: string
description: SysctlSettings defines the kernel sysctl
settings to set for bottlerocket nodes.
type: object
type: object
kubernetes:
description: Kubernetes defines the Kubernetes settings on
the host OS.
Expand Down Expand Up @@ -6024,7 +6104,7 @@ rules:
- apiGroups:
- packages.eks.amazonaws.com
resources:
- packagebundlecontrollers
- packages
verbs:
- create
- delete
Expand Down
2 changes: 1 addition & 1 deletion config/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ rules:
- apiGroups:
- packages.eks.amazonaws.com
resources:
- packagebundlecontrollers
- packages
verbs:
- create
- delete
Expand Down
7 changes: 3 additions & 4 deletions controllers/cluster_controller_legacy.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,10 @@ func NewClusterReconcilerLegacy(client client.Client, log logr.Logger, scheme *r
// +kubebuilder:rbac:groups=bmc.tinkerbell.org,resources=machines;machines/status,verbs=get;list;watch
//
// For the full cluster lifecycle to support Curated Packages, the controller
// must be able to create, delete, update, and patch package bundle controller
// resources, which will trigger the curated packages controller to do the
// rest.
// must be able to create, delete, update, and patch package resources, which
// will trigger the curated packages controller to do the rest.
//
// +kubebuilder:rbac:groups=packages.eks.amazonaws.com,resources=packagebundlecontrollers,verbs=create;delete;get;list;patch;update;watch;
// +kubebuilder:rbac:groups=packages.eks.amazonaws.com,resources=packages,verbs=create;delete;get;list;patch;update;watch;

// Reconcile is part of the main kubernetes reconciliation loop which aims to
// move the current state of the cluster closer to the desired state.
Expand Down
9 changes: 9 additions & 0 deletions docs/content/en/docs/concepts/cluster-topologies.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,15 @@ This shows examples of a management cluster that deploys and manages multiple wo

![Management clusters can create and manage multiple workload clusters](/images/eks-a_cluster_management.png)

With the management cluster in place, you have a choice of tools for creating, upgrading, and deleting workload clusters.
Check each provider to see which tools it currently supports.
Supported workload cluster creation, upgrade and deletion tools include:

* `eksctl` CLI
* Terraform
* GitOps
* `kubectl` CLI to communicate with the Kubernetes API

## What’s the difference between a management cluster and a bootstrap cluster for EKS Anywhere?

A management cluster is a long-lived entity you have to actively operate.
Expand Down
5 changes: 3 additions & 2 deletions docs/content/en/docs/concepts/clusterworkflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ description: >
---

Each EKS Anywhere cluster is built from a cluster specification file, with the structure of the configuration file based on the target provider for the cluster.
Currently, Bare Metal, CloudStack, and VMware vSphere are the recommended providers for supported EKS Anywhere clusters.
We step through the cluster creation workflow for those providers here.
Currently, Bare Metal, CloudStack, Nutanix, Snow, and VMware vSphere are the recommended providers for supported EKS Anywhere clusters.
Docker is available as an unsupported provider.
We step through the cluster creation workflow for Bare Metal and vSphere providers here.


## Management and workload clusters
Expand Down
Loading

0 comments on commit 4fb93aa

Please sign in to comment.