-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
#### Motivation Kubernetes upgrades every quarter and to upgrade EKS is a few steps, we need this process to be well documented so we can upgrade frequently. #### Modification Upgrade EKS to 1.28 and document the steps that it took to upgrade. #### Checklist _If not applicable, provide explanation of why._ - [ ] Tests updated - [ ] Docs updated - [ ] Issue linked in Title --------- Co-authored-by: paulfouquet <[email protected]>
- Loading branch information
1 parent
b5fe78a
commit 61e72c7
Showing
5 changed files
with
105 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
# Upgrade Kubernetes Versions | ||
|
||
Because Kubernetes deprecates quickly and releases often, we need to keep our kubernetes cluster up to date. | ||
|
||
**You cannot jump multiple versions** You must do a deployment per individual version bump. | ||
|
||
## Upgrade steps | ||
|
||
Below is an example of upgrading from v1.27 to v1.28 | ||
|
||
1. Update lambda-layer version to the matching version number | ||
|
||
```bash | ||
npm install --save-dev @aws-cdk/lambda-layer-kubectl-v28 | ||
``` | ||
|
||
While also removing the old lambda-layer version | ||
|
||
```bash | ||
npm rm @aws-cdk/lambda-layer-kubectl-v27 | ||
``` | ||
|
||
2. Set the new Kubernetes version in `LinzEksCluster` | ||
|
||
```typescript | ||
version = KubernetesVersion.of('1.28'); | ||
``` | ||
|
||
3. Modify layer version | ||
|
||
```typescript | ||
import { KubectlV28Layer } from '@aws-cdk/lambda-layer-kubectl-v28'; | ||
|
||
// ... | ||
|
||
kubectlLayer: new KubectlV28Layer(this, 'KubeCtlLayer'), | ||
``` | ||
|
||
4. Diff the stack to make sure that only versions are updated | ||
|
||
```bash | ||
npx cdk diff Workflows -c ci-role-arn=... | ||
``` | ||
|
||
The only changes should be Kubernetes version related. | ||
|
||
``` | ||
Resources | ||
[~] AWS::Lambda::LayerVersion KubeCtlLayer KubeCtlLayer replace | ||
├─ [~] Content (requires replacement) | ||
│ └─ [~] .S3Key: | ||
│ ├─ [-] 8e18eb5caccd2617fb76e648fa6a35dc0ece98c4681942bc6861f41afdff6a1b.zip | ||
│ └─ [+] b4d47e4f1c5e8fc2df2cd474ede548de153300d332ba8d582b7c1193e61cbe1e.zip | ||
├─ [~] Description (requires replacement) | ||
│ ├─ [-] /opt/kubectl/kubectl 1.27; /opt/helm/helm 3.12 | ||
│ └─ [+] /opt/kubectl/kubectl 1.28; /opt/helm/helm 3.13 | ||
└─ [~] Metadata | ||
└─ [~] .aws:asset:path: | ||
├─ [-] asset.8e18eb5caccd2617fb76e648fa6a35dc0ece98c4681942bc6861f41afdff6a1b.zip | ||
└─ [+] asset.b4d47e4f1c5e8fc2df2cd474ede548de153300d332ba8d582b7c1193e61cbe1e.zip | ||
[~] Custom::AWSCDK-EKS-Cluster EksWorkflows/Resource/Resource EksWorkflows | ||
└─ [~] Config | ||
└─ [~] .version: | ||
├─ [-] 1.27 | ||
└─ [+] 1.28 | ||
``` | ||
|
||
5. Create a pull request and wait for CI/CD to deploy the changes. | ||
|
||
**Version bump deployments can take 10+ minutes :coffee: ** | ||
|
||
## Cycle out EC2 Nodes to the new version. | ||
|
||
1. Find the nodegroup name for the cluster | ||
|
||
```bash | ||
aws eks list-nodegroups --cluster-name Workflows | ||
``` | ||
|
||
2. Describe the nodegroup to validate the versions | ||
|
||
By describing the node group you can check the current version, or you can use `k get nodes` to see what version is currently running | ||
|
||
```bash | ||
aws eks describe-nodegroup --cluster-name Workflows --nodegroup-name EksWorkflowsNodegroupCluste | ||
``` | ||
|
||
3. Update the version to match | ||
|
||
```bash | ||
aws eks update-nodegroup-version --cluster-name Workflows --nodegroup-name EksWorkflowsNodegroupCluste-OWsXxRuVz2B7 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters