From f6ea7ddb8309796058c48b1ad27ed5ba59732661 Mon Sep 17 00:00:00 2001 From: Erik Sundell Date: Sun, 5 Feb 2023 18:54:24 +0100 Subject: [PATCH] openscapes: add aws eks addon for ebs driver --- eksctl/openscapes.jsonnet | 53 +++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/eksctl/openscapes.jsonnet b/eksctl/openscapes.jsonnet index 988972859f..0d7a264049 100644 --- a/eksctl/openscapes.jsonnet +++ b/eksctl/openscapes.jsonnet @@ -1,4 +1,18 @@ -// Exports an eksctl config file for carbonplan cluster +/* + This file is a jsonnet template of a eksctl's cluster configuration file, + that is used with the eksctl CLI to both update and initialize an AWS EKS + based cluster. + + This file has in turn been generated from eksctl/template.jsonnet which is + relevant to compare with for changes over time. + + To use jsonnet to generate an eksctl configuration file from this, do: + + jsonnet openscapes.jsonnet > eksctl-config.yaml + + References: + - https://eksctl.io/usage/schema/ +*/ local ng = import "./libsonnet/nodegroup.jsonnet"; // place all cluster nodes here @@ -21,27 +35,27 @@ local notebookNodes = [ { instanceType: "m5.2xlarge" }, { instanceType: "m5.8xlarge" }, ]; - -// Node definitions for dask worker nodes. Config here is merged -// with our dask worker node definition, which uses spot instances. -// A `node.kubernetes.io/instance-type label is set to the name of the -// *first* item in instanceDistribution.instanceTypes, to match -// what we do with notebook nodes. Pods can request a particular -// kind of node with a nodeSelector local daskNodes = [ + // Node definitions for dask worker nodes. Config here is merged + // with our dask worker node definition, which uses spot instances. + // A `node.kubernetes.io/instance-type label is set to the name of the + // *first* item in instanceDistribution.instanceTypes, to match + // what we do with notebook nodes. Pods can request a particular + // kind of node with a nodeSelector { instancesDistribution+: { instanceTypes: ["m5.large"] }}, { instancesDistribution+: { instanceTypes: ["m5.xlarge"] }}, { instancesDistribution+: { instanceTypes: ["m5.2xlarge"] }}, { instancesDistribution+: { instanceTypes: ["m5.8xlarge"] }}, ]; + { apiVersion: 'eksctl.io/v1alpha5', kind: 'ClusterConfig', metadata+: { name: "openscapeshub", region: clusterRegion, - version: '1.21' + version: '1.24' }, availabilityZones: masterAzs, iam: { @@ -57,9 +71,28 @@ local daskNodes = [ ], } for namespace in namespaces], }, + // If you add an addon to this config, run the create addon command. + // + // eksctl create addon --config-file=eksctl-config.yaml + // + addons: [ + { + // aws-ebs-csi-driver ensures that our PVCs are bound to PVs that + // couple to AWS EBS based storage, without it expect to see pods + // mounting a PVC failing to schedule and PVC resources that are + // unbound. + // + // Related docs: https://docs.aws.amazon.com/eks/latest/userguide/managing-ebs-csi.html + // + name: 'aws-ebs-csi-driver', + wellKnownPolicies: { + ebsCSIController: true, + }, + }, + ], nodeGroups: [n + {clusterName:: $.metadata.name} for n in [ ng { - name: 'core-b', + name: 'core-a', availabilityZones: [nodeAz], ssh: { publicKeyPath: 'ssh-keys/openscapes.key.pub'