Skip to content

Commit

Permalink
feat: add docs on cycling out ec2 nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
blacha committed Nov 6, 2023
1 parent 71ff15e commit 0cd7959
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 9 deletions.
22 changes: 21 additions & 1 deletion docs/infrastructure/kubernetes.version.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,24 @@ Resources

**Version bump deployments can take 10+ minutes**

6. Cycle out EC2 Nodes to the new version.
## 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
```
5 changes: 5 additions & 0 deletions infra/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,8 @@ The deployment of the K8s config is managed by GithubActions in [main](../.githu
## Troubleshoot

- [DNS](../docs/dns.configuration.md)

## Upgrading Kubernetes Versions

Kubernetes upgrades very frequently to deploy a new version follow the
[Version Upgrade Guide](../docs/infrastructure/kubernetes.version.md)
6 changes: 3 additions & 3 deletions infra/eks/cluster.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { KubectlV27Layer } from '@aws-cdk/lambda-layer-kubectl-v27';
import { KubectlV28Layer } from '@aws-cdk/lambda-layer-kubectl-v28';
import { Aws, CfnOutput, Duration, RemovalPolicy, Stack, StackProps } from 'aws-cdk-lib';
import { InstanceType, IVpc, SubnetType, Vpc } from 'aws-cdk-lib/aws-ec2';
import { Cluster, ClusterLoggingTypes, IpFamily, KubernetesVersion, NodegroupAmiType } from 'aws-cdk-lib/aws-eks';
Expand All @@ -25,7 +25,7 @@ export class LinzEksCluster extends Stack {
/* Cluster ID */
id: string;
/** Version of EKS to use, this must be aligned to the `kubectlLayer` */
version = KubernetesVersion.V1_27;
version = { version: '1.27' } as KubernetesVersion;
/** Argo needs a temporary bucket to store objects */
tempBucket: Bucket;
/* Bucket where read/write roles config files are stored */
Expand Down Expand Up @@ -65,7 +65,7 @@ export class LinzEksCluster extends Stack {
defaultCapacity: 0,
vpcSubnets: [{ subnetType: SubnetType.PRIVATE_WITH_EGRESS }],
/** This must align to Cluster version: {@link version} */
kubectlLayer: new KubectlV27Layer(this, 'KubeCtlLayer'),
kubectlLayer: new KubectlV28Layer(this, 'KubeCtlLayer'),
/** To prevent IP exhaustion when running huge workflows run using ipv6 */
ipFamily: IpFamily.IP_V6,
clusterLogging: [ClusterLoggingTypes.API, ClusterLoggingTypes.CONTROLLER_MANAGER, ClusterLoggingTypes.SCHEDULER],
Expand Down
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"@aws-sdk/client-cloudformation": "3.429.0",
"@aws-sdk/client-eks": "3.429.0",
"@aws-sdk/client-ssm": "3.429.0",
"@aws-cdk/lambda-layer-kubectl-v27": "^2.0.0",
"@aws-cdk/lambda-layer-kubectl-v28": "^2.0.0",
"@linzjs/style": "^5.0.0",
"aws-cdk": "2.93.x",
"aws-cdk-lib": "2.93.x",
Expand Down

0 comments on commit 0cd7959

Please sign in to comment.