apiVersion: kro.run/v1alpha1 kind: ResourceGraphDefinition metadata: name: ekscluster.kro.run annotations: argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true argocd.argoproj.io/sync-wave: "0" spec: schema: apiVersion: v1alpha1 kind: EksCluster spec: name: string tenant: string | default="auto1" environment: string | default="staging" region: string | default="us-west-2" k8sVersion: string | default="1.34" accountId: string managementAccountId: string adminRoleName: string | default="Admin" fleetSecretManagerSecretNameSuffix: string | default="argocd-secret" domainName: string | default="cluster.example.com" vpc: create: boolean | default=true az1Suffix: string | default="a" az2Suffix: string | default="b" vpcCidr: string | default="10.0.0.0/16" publicSubnet1Cidr: string | default="10.0.1.0/24" publicSubnet2Cidr: string | default="10.0.2.0/24" privateSubnet1Cidr: string | default="10.0.11.0/24" privateSubnet2Cidr: string | default="10.0.12.0/24" vpcId: string | default="" publicSubnet1Id: string | default="" publicSubnet2Id: string | default="" privateSubnet1Id: string | default="" privateSubnet2Id: string | default="" workloads: string | default="false" # Define if we want to deploy workloads application gitops: addonsRepoBasePath: string | default="addons/" addonsRepoPath: string | default="bootstrap" addonsRepoRevision: string | default="main" addonsRepoUrl: string | default="https://github.com/allamand/eks-cluster-mgmt" fleetRepoBasePath: string | default="fleet/" fleetRepoPath: string | default="bootstrap" fleetRepoRevision: string | default="main" fleetRepoUrl: string | default="https://github.com/allamand/eks-cluster-mgmt" addons: enable_external_secrets: string | default="true" external_secrets_namespace: string | default="external-secrets" external_secrets_service_account: string | default="external-secrets-sa" resources: - id: vpc includeWhen: - ${schema.spec.vpc.create} readyWhen: - ${vpc.status.conditions.exists(x, x.type == 'Ready' && x.status == "True")} # Check on kro conditions template: apiVersion: kro.run/v1alpha1 kind: Vpc metadata: name: ${schema.spec.name} namespace: ${schema.spec.name} labels: app.kubernetes.io/instance: ${schema.spec.name} annotations: argocd.argoproj.io/tracking-id: clusters:kro.run/Vpc:${schema.spec.name}/${schema.spec.name} spec: name: ${schema.spec.name} region: ${schema.spec.region} az1Suffix: ${schema.spec.vpc.az1Suffix} az2Suffix: ${schema.spec.vpc.az2Suffix} cidr: vpcCidr: ${schema.spec.vpc.vpcCidr} publicSubnet1Cidr: ${schema.spec.vpc.publicSubnet1Cidr} publicSubnet2Cidr: ${schema.spec.vpc.publicSubnet2Cidr} privateSubnet1Cidr: ${schema.spec.vpc.privateSubnet1Cidr} privateSubnet2Cidr: ${schema.spec.vpc.privateSubnet2Cidr} - id: eksWithVpc includeWhen: - ${schema.spec.vpc.create} readyWhen: - ${eksWithVpc.status.conditions.exists(x, x.type == 'Ready' && x.status == "True")} # Check on kro conditions template: apiVersion: kro.run/v1alpha1 kind: EksClusterBasic metadata: name: ${schema.spec.name} namespace: ${schema.spec.name} labels: app.kubernetes.io/instance: ${schema.spec.name} annotations: argocd.argoproj.io/tracking-id: clusters:kro.run/EksCluster:${schema.spec.name}/${schema.spec.name} spec: name: ${schema.spec.name} tenant: ${schema.spec.tenant} environment: ${schema.spec.environment} region: ${schema.spec.region} accountId: ${schema.spec.accountId} managementAccountId: ${schema.spec.managementAccountId} k8sVersion: ${schema.spec.k8sVersion} adminRoleName: ${schema.spec.adminRoleName} fleetSecretManagerSecretNameSuffix: ${schema.spec.fleetSecretManagerSecretNameSuffix} domainName: ${schema.spec.domainName} network: vpcID: "${vpc.status.vpcID}" subnets: controlplane: subnet1ID: "${vpc.status.privateSubnet1ID}" subnet2ID: "${vpc.status.privateSubnet2ID}" workers: subnet1ID: "${vpc.status.privateSubnet1ID}" subnet2ID: "${vpc.status.privateSubnet2ID}" workloads: ${schema.spec.workloads} gitops: addonsRepoBasePath: ${schema.spec.gitops.addonsRepoBasePath} addonsRepoPath: ${schema.spec.gitops.addonsRepoPath} addonsRepoRevision: ${schema.spec.gitops.addonsRepoRevision} addonsRepoUrl: ${schema.spec.gitops.addonsRepoUrl} fleetRepoBasePath: ${schema.spec.gitops.fleetRepoBasePath} fleetRepoPath: ${schema.spec.gitops.fleetRepoPath} fleetRepoRevision: ${schema.spec.gitops.fleetRepoRevision} fleetRepoUrl: ${schema.spec.gitops.fleetRepoUrl} addons: enable_external_secrets: ${schema.spec.addons.enable_external_secrets} external_secrets_namespace: ${schema.spec.addons.external_secrets_namespace} external_secrets_service_account: ${schema.spec.addons.external_secrets_service_account} - id: eksExistingVpc includeWhen: - ${!schema.spec.vpc.create} readyWhen: - ${eksExistingVpc.status.conditions.exists(x, x.type == 'Ready' && x.status == "True")} # Check on kro conditions template: apiVersion: kro.run/v1alpha1 kind: EksClusterBasic metadata: name: ${schema.spec.name} namespace: ${schema.spec.name} labels: app.kubernetes.io/instance: ${schema.spec.name} annotations: argocd.argoproj.io/tracking-id: clusters:kro.run/EksCluster:${schema.spec.name}/${schema.spec.name} spec: name: ${schema.spec.name} tenant: ${schema.spec.tenant} environment: ${schema.spec.environment} region: ${schema.spec.region} accountId: ${schema.spec.accountId} managementAccountId: ${schema.spec.managementAccountId} k8sVersion: ${schema.spec.k8sVersion} adminRoleName: ${schema.spec.adminRoleName} fleetSecretManagerSecretNameSuffix: ${schema.spec.fleetSecretManagerSecretNameSuffix} domainName: ${schema.spec.domainName} network: vpcID: "${schema.spec.vpc.vpcId}" subnets: controlplane: subnet1ID: "${schema.spec.vpc.privateSubnet1Id}" subnet2ID: "${schema.spec.vpc.privateSubnet2Id}" workers: subnet1ID: "${schema.spec.vpc.privateSubnet1Id}" subnet2ID: "${schema.spec.vpc.privateSubnet2Id}" workloads: ${schema.spec.workloads} gitops: addonsRepoBasePath: ${schema.spec.gitops.addonsRepoBasePath} addonsRepoPath: ${schema.spec.gitops.addonsRepoPath} addonsRepoRevision: ${schema.spec.gitops.addonsRepoRevision} addonsRepoUrl: ${schema.spec.gitops.addonsRepoUrl} fleetRepoBasePath: ${schema.spec.gitops.fleetRepoBasePath} fleetRepoPath: ${schema.spec.gitops.fleetRepoPath} fleetRepoRevision: ${schema.spec.gitops.fleetRepoRevision} fleetRepoUrl: ${schema.spec.gitops.fleetRepoUrl} addons: enable_external_secrets: ${schema.spec.addons.enable_external_secrets} external_secrets_namespace: ${schema.spec.addons.external_secrets_namespace} external_secrets_service_account: ${schema.spec.addons.external_secrets_service_account}