Last active
February 17, 2022 10:14
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
--- | |
apiVersion: apiextensions.crossplane.io/v1 | |
kind: Composition | |
metadata: | |
name: amazon-eks-cluster | |
labels: | |
provider: aws | |
service: eks | |
compute: managed | |
spec: | |
writeConnectionSecretsToNamespace: crossplane | |
compositeTypeRef: | |
apiVersion: eks.sarathy.io/v1beta1 | |
kind: EKSCluster | |
patchSets: | |
- name: common-parameters | |
patches: | |
- fromFieldPath: "spec.parameters.region" | |
toFieldPath: "spec.forProvider.region" | |
resources: | |
- name: vpc | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: VPC | |
spec: | |
forProvider: | |
enableDnsSupport: true | |
enableDnsHostNames: true | |
tags: | |
- key: Name | |
patches: | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: spec.parameters.vpc-cidrBlock | |
toFieldPath: spec.forProvider.cidrBlock | |
- fromFieldPath: spec.parameters.vpc-name | |
toFieldPath: spec.forProvider.tags[0].value | |
- name: internetgateway | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: InternetGateway | |
metadata: | |
labels: | |
type: igw | |
spec: | |
forProvider: | |
vpcIdSelector: | |
matchControllerRef: true | |
tags: | |
- key: Name | |
patches: | |
- type: PatchSet | |
patchSetName: common-parameters | |
- type: CombineFromComposite | |
combine: | |
variables: | |
- fromFieldPath: spec.parameters.vpc-name | |
strategy: string | |
string: | |
fmt: "%s-igw" | |
toFieldPath: spec.forProvider.tags[0].value | |
policy: | |
fromFieldPath: Required | |
- name: subnet-public-1 | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: Subnet | |
metadata: | |
labels: | |
type: subnet | |
visibility: public | |
spec: | |
forProvider: | |
mapPublicIpOnLaunch: true | |
vpcIdSelector: | |
matchControllerRef: true | |
tags: | |
- key: Name | |
- key: kubernetes.io/role/elb | |
value: "1" | |
patches: | |
- type: CombineFromComposite | |
combine: | |
variables: | |
- fromFieldPath: spec.parameters.vpc-name | |
- fromFieldPath: spec.parameters.subnet1-public-name | |
strategy: string | |
string: | |
fmt: "%s-%s" | |
toFieldPath: spec.forProvider.tags[0].value | |
policy: | |
fromFieldPath: Required | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: spec.parameters.subnet1-public-cidrBlock | |
toFieldPath: spec.forProvider.cidrBlock | |
- fromFieldPath: spec.parameters.subnet1-public-availabilityZone | |
toFieldPath: spec.forProvider.availabilityZone | |
- fromFieldPath: spec.parameters.subnet1-public-availabilityZone | |
toFieldPath: metadata.labels.zone | |
- name: subnet-public-2 | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: Subnet | |
metadata: | |
labels: | |
type: subnet | |
visibility: public | |
spec: | |
forProvider: | |
mapPublicIpOnLaunch: true | |
vpcIdSelector: | |
matchControllerRef: true | |
tags: | |
- key: Name | |
- key: kubernetes.io/role/elb | |
value: "1" | |
patches: | |
- type: CombineFromComposite | |
combine: | |
variables: | |
- fromFieldPath: spec.parameters.vpc-name | |
- fromFieldPath: spec.parameters.subnet2-public-name | |
strategy: string | |
string: | |
fmt: "%s-%s" | |
toFieldPath: spec.forProvider.tags[0].value | |
policy: | |
fromFieldPath: Required | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: spec.parameters.subnet2-public-cidrBlock | |
toFieldPath: spec.forProvider.cidrBlock | |
- fromFieldPath: spec.parameters.subnet2-public-availabilityZone | |
toFieldPath: spec.forProvider.availabilityZone | |
- fromFieldPath: spec.parameters.subnet2-public-availabilityZone | |
toFieldPath: metadata.labels.zone | |
- name: subnet-private-1 | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: Subnet | |
metadata: | |
labels: | |
type: subnet | |
visibility: private | |
tier: middleware | |
spec: | |
forProvider: | |
mapPublicIpOnLaunch: false | |
vpcIdSelector: | |
matchControllerRef: true | |
tags: | |
- key: Name | |
- key: kubernetes.io/role/internal-elb | |
value: "1" | |
patches: | |
- type: CombineFromComposite | |
combine: | |
variables: | |
- fromFieldPath: spec.parameters.vpc-name | |
- fromFieldPath: spec.parameters.subnet1-private-name | |
strategy: string | |
string: | |
fmt: "%s-%s" | |
toFieldPath: spec.forProvider.tags[0].value | |
policy: | |
fromFieldPath: Required | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: spec.parameters.subnet1-private-cidrBlock | |
toFieldPath: spec.forProvider.cidrBlock | |
- fromFieldPath: spec.parameters.subnet1-private-availabilityZone | |
toFieldPath: spec.forProvider.availabilityZone | |
- fromFieldPath: spec.parameters.subnet1-private-availabilityZone | |
toFieldPath: metadata.labels.zone | |
- name: subnet-private-2 | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: Subnet | |
metadata: | |
labels: | |
type: subnet | |
visibility: private | |
tier: middleware | |
spec: | |
forProvider: | |
mapPublicIpOnLaunch: false | |
vpcIdSelector: | |
matchControllerRef: true | |
tags: | |
- key: Name | |
- key: kubernetes.io/role/internal-elb | |
value: "1" | |
patches: | |
- type: CombineFromComposite | |
combine: | |
variables: | |
- fromFieldPath: spec.parameters.vpc-name | |
- fromFieldPath: spec.parameters.subnet2-private-name | |
strategy: string | |
string: | |
fmt: "%s-%s" | |
toFieldPath: spec.forProvider.tags[0].value | |
policy: | |
fromFieldPath: Required | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: spec.parameters.subnet2-private-cidrBlock | |
toFieldPath: spec.forProvider.cidrBlock | |
- fromFieldPath: spec.parameters.subnet2-private-availabilityZone | |
toFieldPath: spec.forProvider.availabilityZone | |
- fromFieldPath: spec.parameters.subnet2-private-availabilityZone | |
toFieldPath: metadata.labels.zone | |
- name: elastic-ip-1 | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: Address | |
metadata: | |
labels: | |
type: eip-1 | |
spec: | |
forProvider: | |
domain: vpc | |
patches: | |
- type: PatchSet | |
patchSetName: common-parameters | |
- name: elastic-ip-2 | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: Address | |
metadata: | |
labels: | |
type: eip-2 | |
spec: | |
forProvider: | |
domain: vpc | |
patches: | |
- type: PatchSet | |
patchSetName: common-parameters | |
- name: natgateway-1 | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: NATGateway | |
metadata: | |
labels: | |
type: natgw-1 | |
spec: | |
forProvider: | |
allocationIdSelector: | |
matchLabels: | |
type: eip-1 | |
vpcIdSelector: | |
matchControllerRef: true | |
subnetIdSelector: | |
matchLabels: | |
type: subnet | |
visibility: public | |
tags: | |
- key: Name | |
patches: | |
- type: CombineFromComposite | |
combine: | |
variables: | |
- fromFieldPath: spec.parameters.vpc-name | |
strategy: string | |
string: | |
fmt: "%s-nat-gateway-1" | |
toFieldPath: spec.forProvider.tags[0].value | |
policy: | |
fromFieldPath: Required | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: spec.parameters.subnet1-public-availabilityZone | |
toFieldPath: spec.forProvider.subnetIdSelector.matchLabels.zone | |
- name: natgateway-2 | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: NATGateway | |
metadata: | |
labels: | |
type: natgw-2 | |
spec: | |
forProvider: | |
allocationIdSelector: | |
matchLabels: | |
type: eip-2 | |
vpcIdSelector: | |
matchControllerRef: true | |
subnetIdSelector: | |
matchLabels: | |
type: subnet | |
visibility: public | |
tags: | |
- key: Name | |
patches: | |
- type: CombineFromComposite | |
combine: | |
variables: | |
- fromFieldPath: spec.parameters.vpc-name | |
strategy: string | |
string: | |
fmt: "%s-nat-gateway-2" | |
toFieldPath: spec.forProvider.tags[0].value | |
policy: | |
fromFieldPath: Required | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: spec.parameters.subnet2-public-availabilityZone | |
toFieldPath: spec.forProvider.subnetIdSelector.matchLabels.zone | |
- name: routetable-public | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: RouteTable | |
spec: | |
forProvider: | |
vpcIdSelector: | |
matchControllerRef: true | |
routes: | |
- destinationCidrBlock: 0.0.0.0/0 | |
gatewayIdSelector: | |
matchLabels: | |
type: igw | |
associations: | |
- subnetIdSelector: | |
matchLabels: | |
type: subnet | |
visibility: public | |
- subnetIdSelector: | |
matchLabels: | |
type: subnet | |
visibility: public | |
tags: | |
- key: Name | |
patches: | |
- type: CombineFromComposite | |
combine: | |
variables: | |
- fromFieldPath: spec.parameters.vpc-name | |
strategy: string | |
string: | |
fmt: "%s-public-route-table" | |
toFieldPath: spec.forProvider.tags[0].value | |
policy: | |
fromFieldPath: Required | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: spec.parameters.subnet1-public-availabilityZone | |
toFieldPath: spec.forProvider.associations[0].subnetIdSelector.matchLabels.zone | |
- fromFieldPath: spec.parameters.subnet2-public-availabilityZone | |
toFieldPath: spec.forProvider.associations[1].subnetIdSelector.matchLabels.zone | |
- name: routetable-private-1 | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: RouteTable | |
spec: | |
forProvider: | |
vpcIdSelector: | |
matchControllerRef: true | |
routes: | |
- destinationCidrBlock: 0.0.0.0/0 | |
natGatewayIdSelector: | |
matchLabels: | |
type: natgw-1 | |
associations: | |
- subnetIdSelector: | |
matchLabels: | |
type: subnet | |
visibility: private | |
tags: | |
- key: Name | |
patches: | |
- type: CombineFromComposite | |
combine: | |
variables: | |
- fromFieldPath: spec.parameters.vpc-name | |
strategy: string | |
string: | |
fmt: "%s-private-route-table-1" | |
toFieldPath: spec.forProvider.tags[0].value | |
policy: | |
fromFieldPath: Required | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: spec.parameters.subnet1-public-availabilityZone | |
toFieldPath: spec.forProvider.associations[0].subnetIdSelector.matchLabels.zone | |
- name: routetable-private-2 | |
base: | |
apiVersion: ec2.aws.crossplane.io/v1beta1 | |
kind: RouteTable | |
spec: | |
forProvider: | |
vpcIdSelector: | |
matchControllerRef: true | |
routes: | |
- destinationCidrBlock: 0.0.0.0/0 | |
natGatewayIdSelector: | |
matchLabels: | |
type: natgw-2 | |
associations: | |
- subnetIdSelector: | |
matchLabels: | |
type: subnet | |
visibility: private | |
tags: | |
- key: Name | |
patches: | |
- type: CombineFromComposite | |
combine: | |
variables: | |
- fromFieldPath: spec.parameters.vpc-name | |
strategy: string | |
string: | |
fmt: "%s-private-route-table-2" | |
toFieldPath: spec.forProvider.tags[0].value | |
policy: | |
fromFieldPath: Required | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: spec.parameters.subnet2-public-availabilityZone | |
toFieldPath: spec.forProvider.associations[0].subnetIdSelector.matchLabels.zone | |
# | |
# EKS cluster | |
# | |
- name: eks-cluster | |
base: | |
apiVersion: eks.aws.crossplane.io/v1beta1 | |
kind: Cluster | |
spec: | |
forProvider: | |
resourcesVpcConfig: | |
endpointPrivateAccess: false | |
endpointPublicAccess: true | |
subnetIdSelector: | |
matchLabels: | |
type: subnet | |
writeConnectionSecretToRef: | |
namespace: crossplane | |
patches: | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: "spec.parameters.k8s-version" | |
toFieldPath: "spec.forProvider.version" | |
- fromFieldPath: "metadata.uid" | |
toFieldPath: "spec.writeConnectionSecretToRef.name" | |
transforms: | |
- type: string | |
string: | |
fmt: "%s-ekscluster-connection" | |
- fromFieldPath: "spec.parameters.cluster-role" | |
toFieldPath: "spec.forProvider.roleArn" | |
connectionDetails: | |
- name: cluster-ca | |
fromConnectionSecretKey: clusterCA | |
- name: apiserver-endpoint | |
fromConnectionSecretKey: endpoint | |
- name: value | |
fromConnectionSecretKey: kubeconfig | |
- name: eks-nodegroup | |
base: | |
apiVersion: eks.aws.crossplane.io/v1alpha1 | |
kind: NodeGroup | |
spec: | |
forProvider: | |
instanceTypes: | |
- t2.medium | |
scalingConfig: | |
desiredSize: 2 | |
minSize: 2 | |
maxSize: 3 | |
subnetSelector: | |
matchLabels: | |
type: subnet | |
visibility: private | |
tier: middleware | |
clusterNameSelector: | |
matchControllerRef: true | |
patches: | |
- type: PatchSet | |
patchSetName: common-parameters | |
- fromFieldPath: "spec.parameters.workers-size" | |
toFieldPath: "spec.forProvider.scalingConfig.desiredSize" | |
- fromFieldPath: "spec.parameters.workers-size" | |
toFieldPath: "spec.forProvider.scalingConfig.maxSize" | |
- fromFieldPath: "spec.parameters.workload-type" | |
toFieldPath: "spec.forProvider.amiType" | |
transforms: | |
- type: map | |
map: | |
gpu: AL2_x86_64_GPU | |
non-gpu: AL2_x86_64 | |
- fromFieldPath: "spec.parameters.workernode-role" | |
toFieldPath: "spec.forProvider.nodeRole" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment