├── aws ├── environments │ ├── full │ │ └── kustomization.yaml │ ├── staging │ │ └── kustomization.yaml │ ├── dev-default │ │ └── kustomization.yaml │ ├── prod-default │ │ └── kustomization.yaml │ ├── staging-default │ │ └── kustomization.yaml │ ├── dev │ │ ├── kubernetescluster.yaml │ │ ├── kustomization.yaml │ │ ├── mysqlinstance.yaml │ │ ├── postgresqlinstance.yaml │ │ └── rediscluster.yaml │ └── prod │ │ ├── kubernetescluster.yaml │ │ ├── kustomization.yaml │ │ ├── mysqlinstance.yaml │ │ ├── postgresqlinstance.yaml │ │ └── rediscluster.yaml └── services │ ├── network │ ├── vpc │ │ ├── kustomization.yaml │ │ └── resource.yaml │ ├── routetable │ │ ├── kustomization.yaml │ │ └── resource.yaml │ ├── subnet │ │ ├── kustomization.yaml │ │ └── resource.yaml │ ├── internetgateway │ │ ├── kustomization.yaml │ │ └── resource.yaml │ └── securitygroup │ │ ├── kustomization.yaml │ │ └── resource.yaml │ ├── storage │ └── bucket │ │ ├── kustomization.yaml │ │ └── class.yaml │ ├── cache │ └── rediscluster │ │ ├── kustomization.yaml │ │ └── class.yaml │ ├── identity │ ├── iamrole │ │ ├── kustomization.yaml │ │ └── resource.yaml │ └── iamrolepolicyattachment │ │ ├── kustomization.yaml │ │ └── resource.yaml │ ├── compute │ └── kubernetescluster │ │ ├── kustomization.yaml │ │ └── class.yaml │ ├── database │ ├── dbsubnetgroup │ │ ├── kustomization.yaml │ │ └── resource.yaml │ ├── mysqlinstance │ │ ├── kustomization.yaml │ │ └── class.yaml │ └── postgresqlinstance │ │ ├── kustomization.yaml │ │ └── class.yaml │ └── kustomization.yaml ├── azure ├── environments │ ├── full │ │ └── kustomization.yaml │ ├── staging │ │ └── kustomization.yaml │ ├── dev-default │ │ └── kustomization.yaml │ ├── prod-default │ │ └── kustomization.yaml │ ├── staging-default │ │ └── kustomization.yaml │ ├── dev │ │ ├── rediscluster.yaml │ │ ├── kubernetescluster.yaml │ │ ├── kustomization.yaml │ │ ├── mysqlinstance.yaml │ │ └── postgresqlinstance.yaml │ └── prod │ │ ├── rediscluster.yaml │ │ ├── kubernetescluster.yaml │ │ ├── kustomization.yaml │ │ ├── mysqlinstance.yaml │ │ └── postgresqlinstance.yaml └── services │ ├── cache │ └── rediscluster │ │ ├── kustomization.yaml │ │ └── class.yaml │ ├── compute │ └── kubernetescluster │ │ ├── kustomization.yaml │ │ └── class.yaml │ ├── database │ ├── mysqlinstance │ │ ├── kustomization.yaml │ │ └── class.yaml │ └── postgresqlinstance │ │ ├── kustomization.yaml │ │ └── class.yaml │ ├── storage │ └── bucket │ │ ├── kustomization.yaml │ │ ├── container-class.yaml │ │ └── account-class.yaml │ └── kustomization.yaml ├── gcp ├── environments │ ├── full │ │ └── kustomization.yaml │ ├── staging │ │ └── kustomization.yaml │ ├── dev-default │ │ └── kustomization.yaml │ ├── prod-default │ │ └── kustomization.yaml │ ├── staging-default │ │ └── kustomization.yaml │ ├── dev │ │ ├── kubernetescluster.yaml │ │ ├── rediscluster.yaml │ │ ├── kustomization.yaml │ │ ├── mysqlinstance.yaml │ │ └── postgresqlinstance.yaml │ └── prod │ │ ├── kubernetescluster.yaml │ │ ├── rediscluster.yaml │ │ ├── kustomization.yaml │ │ ├── mysqlinstance.yaml │ │ └── postgresqlinstance.yaml └── services │ ├── storage │ └── bucket │ │ ├── kustomization.yaml │ │ └── class.yaml │ ├── cache │ └── rediscluster │ │ ├── kustomization.yaml │ │ └── class.yaml │ ├── compute │ ├── network │ │ ├── kustomization.yaml │ │ └── resource.yaml │ ├── subnetwork │ │ ├── kustomization.yaml │ │ └── resource.yaml │ ├── globaladdress │ │ ├── kustomization.yaml │ │ └── resource.yaml │ └── kubernetescluster │ │ ├── kustomization.yaml │ │ └── class.yaml │ ├── servicenetworking │ └── connection │ │ ├── kustomization.yaml │ │ └── resource.yaml │ ├── database │ ├── mysqlinstance │ │ ├── kustomization.yaml │ │ └── class.yaml │ └── postgresqlinstance │ │ ├── kustomization.yaml │ │ └── class.yaml │ └── kustomization.yaml ├── apps └── wordpress │ ├── kustomization.yaml │ ├── cluster.yaml │ ├── mysql.yaml │ └── app.yaml ├── kustomization.yaml ├── classpacks ├── workflow │ └── argo │ │ ├── app │ │ ├── kustomization.yaml │ │ └── patch.yaml │ │ ├── app-aws │ │ ├── kustomization.yaml │ │ └── patch.yaml │ │ └── infra │ │ ├── aws │ │ ├── subnet-1 │ │ │ ├── kustomization.yaml │ │ │ └── patch.yaml │ │ ├── subnet-2 │ │ │ ├── kustomization.yaml │ │ │ └── patch.yaml │ │ ├── subnet-3 │ │ │ ├── kustomization.yaml │ │ │ └── patch.yaml │ │ ├── securitygroup-eks │ │ │ ├── kustomization.yaml │ │ │ └── patch.yaml │ │ ├── securitygroup-rds │ │ │ ├── kustomization.yaml │ │ │ └── patch.yaml │ │ ├── iamrolepolicyattachment-cluster │ │ │ ├── kustomization.yaml │ │ │ └── patch.yaml │ │ ├── iamrolepolicyattachment-service │ │ │ ├── kustomization.yaml │ │ │ └── patch.yaml │ │ ├── kustomization.yaml │ │ └── patch.yaml │ │ └── gcp │ │ ├── kustomization.yaml │ │ └── patch.yaml └── quickstart │ ├── dev │ └── kustomization.yaml │ └── prod │ └── kustomization.yaml ├── guides ├── aws-argo │ ├── README.md │ ├── app-1 │ │ ├── mysqlinstanceclaim.yaml │ │ └── kubernetesapplication.yaml │ ├── app-2 │ │ ├── mysqlinstanceclaim.yaml │ │ └── kubernetesapplication.yaml │ └── infra │ │ ├── us-east-1 │ │ ├── internetgateway.yaml │ │ ├── vpc.yaml │ │ ├── kubernetesclusterclaim.yaml │ │ ├── routetable.yaml │ │ ├── eksclusterclass.yaml │ │ ├── securitygroup.yaml │ │ ├── subnet.yaml │ │ ├── rdsinstanceclass.yaml │ │ └── iam.yaml │ │ └── us-west-2 │ │ ├── internetgateway.yaml │ │ ├── vpc.yaml │ │ ├── kubernetesclusterclaim.yaml │ │ ├── routetable.yaml │ │ ├── eksclusterclass.yaml │ │ ├── securitygroup.yaml │ │ ├── subnet.yaml │ │ ├── rdsinstanceclass.yaml │ │ └── iam.yaml └── argo-oam │ ├── infra │ ├── kubernetescluster.yaml │ ├── definitions │ │ ├── bucket-workload-definition.yaml │ │ ├── redis-workload-definition.yaml │ │ ├── manual-scaler-trait-definition.yaml │ │ ├── mysql-workload-definition.yaml │ │ ├── nosql-workload-definition.yaml │ │ ├── containerized-workload-definition.yaml │ │ ├── machine-instance-workload-definition.yaml │ │ ├── postgres-workload-definition.yaml │ │ └── kubernetes-cluster-workload-definition.yaml │ ├── network │ │ ├── network.yaml │ │ ├── globaladdress.yaml │ │ ├── connection.yaml │ │ └── subnetwork.yaml │ ├── classes │ │ ├── cloudsqlclass.yaml │ │ └── gkeclusterclass.yaml │ └── components │ │ ├── tracker-managed-db-component.yaml │ │ ├── tracker-flights-component.yaml │ │ ├── tracker-weather-component.yaml │ │ ├── tracker-quakes-component.yaml │ │ ├── tracker-ui-component.yaml │ │ ├── tracker-db-component.yaml │ │ └── tracker-data-component.yaml │ └── service-tracker │ └── appconfig.yaml ├── OWNERS.md └── README.md /aws/environments/full/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - ../dev 3 | - ../staging 4 | - ../prod -------------------------------------------------------------------------------- /azure/environments/full/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - ../dev 3 | - ../staging 4 | - ../prod -------------------------------------------------------------------------------- /gcp/environments/full/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - ../dev 3 | - ../staging 4 | - ../prod -------------------------------------------------------------------------------- /apps/wordpress/kustomization.yaml: -------------------------------------------------------------------------------- 1 | resources: 2 | - mysql.yaml 3 | - app.yaml 4 | - cluster.yaml -------------------------------------------------------------------------------- /kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - aws/environments/full 3 | - azure/environments/full 4 | - gcp/environments/full -------------------------------------------------------------------------------- /aws/services/network/vpc/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /aws/services/storage/bucket/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - class.yaml 5 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/app/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - ../../../../apps/wordpress 3 | patches: 4 | - patch.yaml -------------------------------------------------------------------------------- /gcp/services/storage/bucket/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: gcp 3 | resources: 4 | - class.yaml 5 | -------------------------------------------------------------------------------- /aws/services/cache/rediscluster/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - class.yaml 5 | -------------------------------------------------------------------------------- /aws/services/identity/iamrole/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /aws/services/network/routetable/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /aws/services/network/subnet/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/app-aws/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - ../../../../apps/wordpress 3 | patches: 4 | - patch.yaml -------------------------------------------------------------------------------- /gcp/services/cache/rediscluster/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: gcp 3 | resources: 4 | - class.yaml 5 | -------------------------------------------------------------------------------- /gcp/services/compute/network/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: gcp 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /gcp/services/compute/subnetwork/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: gcp 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /aws/services/compute/kubernetescluster/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - class.yaml 5 | -------------------------------------------------------------------------------- /aws/services/database/dbsubnetgroup/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /aws/services/network/internetgateway/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /aws/services/network/securitygroup/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /azure/services/cache/rediscluster/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: azure 3 | resources: 4 | - class.yaml 5 | -------------------------------------------------------------------------------- /gcp/services/compute/globaladdress/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: gcp 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /gcp/services/compute/kubernetescluster/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: gcp 3 | resources: 4 | - class.yaml 5 | -------------------------------------------------------------------------------- /azure/services/compute/kubernetescluster/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: azure 3 | resources: 4 | - class.yaml 5 | -------------------------------------------------------------------------------- /gcp/services/servicenetworking/connection/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: gcp 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /aws/services/identity/iamrolepolicyattachment/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | resources: 4 | - resource.yaml 5 | -------------------------------------------------------------------------------- /guides/aws-argo/README.md: -------------------------------------------------------------------------------- 1 | # Trying out Argo and Crossplane: deploy and manage an app in two environments 2 | 3 | Full guide coming soon. -------------------------------------------------------------------------------- /aws/environments/staging/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: staging-aws- 2 | commonLabels: 3 | env: staging 4 | bases: 5 | - ../../services 6 | -------------------------------------------------------------------------------- /gcp/environments/staging/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: staging-gcp- 2 | commonLabels: 3 | env: staging 4 | bases: 5 | - ../../services 6 | -------------------------------------------------------------------------------- /aws/services/database/mysqlinstance/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | engine: mysql 4 | resources: 5 | - class.yaml 6 | -------------------------------------------------------------------------------- /azure/environments/staging/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: staging-azure- 2 | commonLabels: 3 | env: staging 4 | bases: 5 | - ../../services 6 | -------------------------------------------------------------------------------- /azure/services/database/mysqlinstance/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: azure 3 | engine: mysql 4 | resources: 5 | - class.yaml 6 | -------------------------------------------------------------------------------- /gcp/services/database/mysqlinstance/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: gcp 3 | engine: mysql 4 | resources: 5 | - class.yaml 6 | -------------------------------------------------------------------------------- /aws/environments/dev-default/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonAnnotations: 2 | resourceclass.crossplane.io/is-default-class: "true" 3 | bases: 4 | - ../dev 5 | -------------------------------------------------------------------------------- /gcp/environments/dev-default/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonAnnotations: 2 | resourceclass.crossplane.io/is-default-class: "true" 3 | bases: 4 | - ../dev 5 | -------------------------------------------------------------------------------- /aws/environments/prod-default/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonAnnotations: 2 | resourceclass.crossplane.io/is-default-class: "true" 3 | bases: 4 | - ../prod 5 | -------------------------------------------------------------------------------- /aws/services/database/postgresqlinstance/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: aws 3 | engine: postgresql 4 | resources: 5 | - class.yaml 6 | -------------------------------------------------------------------------------- /azure/environments/dev-default/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonAnnotations: 2 | resourceclass.crossplane.io/is-default-class: "true" 3 | bases: 4 | - ../dev 5 | -------------------------------------------------------------------------------- /azure/environments/prod-default/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonAnnotations: 2 | resourceclass.crossplane.io/is-default-class: "true" 3 | bases: 4 | - ../prod 5 | -------------------------------------------------------------------------------- /azure/services/database/postgresqlinstance/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: azure 3 | engine: postgresql 4 | resources: 5 | - class.yaml 6 | -------------------------------------------------------------------------------- /azure/services/storage/bucket/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: azure 3 | resources: 4 | - account-class.yaml 5 | - container-class.yaml 6 | -------------------------------------------------------------------------------- /gcp/environments/prod-default/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonAnnotations: 2 | resourceclass.crossplane.io/is-default-class: "true" 3 | bases: 4 | - ../prod 5 | -------------------------------------------------------------------------------- /gcp/services/database/postgresqlinstance/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | provider: gcp 3 | engine: postgresql 4 | resources: 5 | - class.yaml 6 | -------------------------------------------------------------------------------- /aws/environments/staging-default/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonAnnotations: 2 | resourceclass.crossplane.io/is-default-class: "true" 3 | bases: 4 | - ../staging 5 | -------------------------------------------------------------------------------- /azure/environments/staging-default/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonAnnotations: 2 | resourceclass.crossplane.io/is-default-class: "true" 3 | bases: 4 | - ../staging 5 | -------------------------------------------------------------------------------- /gcp/environments/staging-default/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonAnnotations: 2 | resourceclass.crossplane.io/is-default-class: "true" 3 | bases: 4 | - ../staging 5 | -------------------------------------------------------------------------------- /classpacks/quickstart/dev/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - ../../../aws/environments/dev-default 3 | - ../../../azure/environments/dev 4 | - ../../../gcp/environments/dev 5 | -------------------------------------------------------------------------------- /classpacks/quickstart/prod/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - ../../../aws/environments/prod-default 3 | - ../../../azure/environments/prod 4 | - ../../../gcp/environments/prod -------------------------------------------------------------------------------- /aws/services/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - cache/rediscluster 3 | - compute/kubernetescluster 4 | - database/mysqlinstance 5 | - database/postgresqlinstance 6 | - storage/bucket -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/subnet-1/kustomization.yaml: -------------------------------------------------------------------------------- 1 | nameSuffix: "1" 2 | bases: 3 | - ../../../../../../aws/services/network/subnet 4 | patches: 5 | - patch.yaml 6 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/subnet-2/kustomization.yaml: -------------------------------------------------------------------------------- 1 | nameSuffix: "2" 2 | bases: 3 | - ../../../../../../aws/services/network/subnet 4 | patches: 5 | - patch.yaml 6 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/subnet-3/kustomization.yaml: -------------------------------------------------------------------------------- 1 | nameSuffix: "3" 2 | bases: 3 | - ../../../../../../aws/services/network/subnet 4 | patches: 5 | - patch.yaml 6 | -------------------------------------------------------------------------------- /gcp/services/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - cache/rediscluster 3 | - compute/kubernetescluster 4 | - database/mysqlinstance 5 | - database/postgresqlinstance 6 | - storage/bucket -------------------------------------------------------------------------------- /azure/services/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - cache/rediscluster 3 | - compute/kubernetescluster 4 | - database/mysqlinstance 5 | - database/postgresqlinstance 6 | - storage/bucket -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/securitygroup-eks/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: eks- 2 | bases: 3 | - ../../../../../../aws/services/network/securitygroup 4 | patches: 5 | - patch.yaml 6 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/securitygroup-rds/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: rds- 2 | bases: 3 | - ../../../../../../aws/services/network/securitygroup 4 | patches: 5 | - patch.yaml 6 | -------------------------------------------------------------------------------- /azure/environments/dev/rediscluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: cache.azure.crossplane.io/v1alpha3 2 | kind: RedisClass 3 | metadata: 4 | name: azure-redis 5 | specTemplate: 6 | sku: 7 | capacity: 1 8 | -------------------------------------------------------------------------------- /azure/environments/prod/rediscluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: cache.azure.crossplane.io/v1alpha3 2 | kind: RedisClass 3 | metadata: 4 | name: azure-redis 5 | specTemplate: 6 | sku: 7 | capacity: 5 8 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/iamrolepolicyattachment-cluster/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: cluster- 2 | bases: 3 | - ../../../../../../aws/services/identity/iamrolepolicyattachment 4 | patches: 5 | - patch.yaml -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/iamrolepolicyattachment-service/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: service- 2 | bases: 3 | - ../../../../../../aws/services/identity/iamrolepolicyattachment 4 | patches: 5 | - patch.yaml -------------------------------------------------------------------------------- /guides/argo-oam/infra/kubernetescluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.crossplane.io/v1alpha1 2 | kind: KubernetesCluster 3 | metadata: 4 | name: k8scluster 5 | spec: 6 | writeConnectionSecretToRef: 7 | name: k8scluster -------------------------------------------------------------------------------- /gcp/environments/dev/kubernetescluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.gcp.crossplane.io/v1alpha3 2 | kind: GKEClusterClass 3 | metadata: 4 | name: gkecluster 5 | specTemplate: 6 | machineType: n1-standard-1 7 | numNodes: 1 8 | -------------------------------------------------------------------------------- /gcp/environments/prod/kubernetescluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.gcp.crossplane.io/v1alpha3 2 | kind: GKEClusterClass 3 | metadata: 4 | name: gkecluster 5 | specTemplate: 6 | machineType: n1-standard-4 7 | numNodes: 5 8 | -------------------------------------------------------------------------------- /aws/environments/dev/kubernetescluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.aws.crossplane.io/v1alpha3 2 | kind: EKSClusterClass 3 | metadata: 4 | name: ekscluster 5 | specTemplate: 6 | workerNodes: 7 | nodeInstanceType: t2.small 8 | -------------------------------------------------------------------------------- /aws/environments/prod/kubernetescluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.aws.crossplane.io/v1alpha3 2 | kind: EKSClusterClass 3 | metadata: 4 | name: ekscluster 5 | specTemplate: 6 | workerNodes: 7 | nodeInstanceType: m5.large 8 | -------------------------------------------------------------------------------- /azure/environments/dev/kubernetescluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.azure.crossplane.io/v1alpha3 2 | kind: AKSClusterClass 3 | metadata: 4 | name: akscluster 5 | specTemplate: 6 | nodeCount: 1 7 | nodeVMSize: Standard_B2s 8 | -------------------------------------------------------------------------------- /azure/environments/prod/kubernetescluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.azure.crossplane.io/v1alpha3 2 | kind: AKSClusterClass 3 | metadata: 4 | name: akscluster 5 | specTemplate: 6 | nodeCount: 5 7 | nodeVMSize: Standard_B12ms 8 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/subnet-1/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: Subnet 3 | metadata: 4 | name: subnet 5 | spec: 6 | cidrBlock: 192.168.64.0/18 7 | availabilityZone: us-west-2a 8 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/subnet-3/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: Subnet 3 | metadata: 4 | name: subnet 5 | spec: 6 | cidrBlock: 192.168.192.0/18 7 | availabilityZone: us-west-2c -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/subnet-2/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: Subnet 3 | metadata: 4 | name: subnet 5 | spec: 6 | cidrBlock: 192.168.128.0/18 7 | availabilityZone: us-west-2b 8 | -------------------------------------------------------------------------------- /gcp/environments/dev/rediscluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: cache.gcp.crossplane.io/v1beta1 2 | kind: CloudMemorystoreInstanceClass 3 | metadata: 4 | name: cloudmemorystoreinstance 5 | specTemplate: 6 | forProvider: 7 | memorySizeGb: 1 8 | -------------------------------------------------------------------------------- /gcp/environments/prod/rediscluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: cache.gcp.crossplane.io/v1beta1 2 | kind: CloudMemorystoreInstanceClass 3 | metadata: 4 | name: cloudmemorystoreinstance 5 | specTemplate: 6 | forProvider: 7 | memorySizeGb: 1 8 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/definitions/bucket-workload-definition.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: WorkloadDefinition 3 | metadata: 4 | name: buckets.storage.crossplane.io 5 | spec: 6 | definitionRef: 7 | name: buckets.storage.crossplane.io -------------------------------------------------------------------------------- /aws/environments/dev/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: dev-aws- 2 | commonLabels: 3 | env: dev 4 | bases: 5 | - ../../services 6 | patches: 7 | - kubernetescluster.yaml 8 | - mysqlinstance.yaml 9 | - postgresqlinstance.yaml 10 | - rediscluster.yaml 11 | -------------------------------------------------------------------------------- /aws/environments/dev/mysqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.aws.crossplane.io/v1beta1 2 | kind: RDSInstanceClass 3 | metadata: 4 | name: rdsinstancemysql 5 | specTemplate: 6 | forProvider: 7 | dbInstanceClass: db.t2.micro 8 | allocatedStorage: 20 9 | -------------------------------------------------------------------------------- /aws/services/network/vpc/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: VPC 3 | metadata: 4 | name: vpc 5 | spec: 6 | cidrBlock: 192.168.0.0/16 7 | reclaimPolicy: Delete 8 | providerRef: 9 | name: aws-provider 10 | -------------------------------------------------------------------------------- /gcp/environments/dev/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: dev-gcp- 2 | commonLabels: 3 | env: dev 4 | bases: 5 | - ../../services 6 | patches: 7 | - kubernetescluster.yaml 8 | - mysqlinstance.yaml 9 | - postgresqlinstance.yaml 10 | - rediscluster.yaml 11 | -------------------------------------------------------------------------------- /aws/environments/prod/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: prod-aws- 2 | commonLabels: 3 | env: prod 4 | bases: 5 | - ../../services 6 | patches: 7 | - kubernetescluster.yaml 8 | - mysqlinstance.yaml 9 | - postgresqlinstance.yaml 10 | - rediscluster.yaml 11 | -------------------------------------------------------------------------------- /aws/environments/prod/mysqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.aws.crossplane.io/v1beta1 2 | kind: RDSInstanceClass 3 | metadata: 4 | name: rdsinstancemysql 5 | specTemplate: 6 | forProvider: 7 | dbInstanceClass: db.m5.large 8 | allocatedStorage: 100 9 | -------------------------------------------------------------------------------- /azure/environments/dev/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: dev-azure- 2 | commonLabels: 3 | env: dev 4 | bases: 5 | - ../../services 6 | patches: 7 | - kubernetescluster.yaml 8 | - mysqlinstance.yaml 9 | - postgresqlinstance.yaml 10 | - rediscluster.yaml 11 | -------------------------------------------------------------------------------- /azure/environments/prod/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: prod-azure- 2 | commonLabels: 3 | env: prod 4 | bases: 5 | - ../../services 6 | patches: 7 | - kubernetescluster.yaml 8 | - mysqlinstance.yaml 9 | - postgresqlinstance.yaml 10 | - rediscluster.yaml 11 | -------------------------------------------------------------------------------- /gcp/environments/prod/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: prod-gcp- 2 | commonLabels: 3 | env: prod 4 | bases: 5 | - ../../services 6 | patches: 7 | - kubernetescluster.yaml 8 | - mysqlinstance.yaml 9 | - postgresqlinstance.yaml 10 | - rediscluster.yaml 11 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/definitions/redis-workload-definition.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: WorkloadDefinition 3 | metadata: 4 | name: redisclusters.cache.crossplane.io 5 | spec: 6 | definitionRef: 7 | name: redisclusters.cache.crossplane.io -------------------------------------------------------------------------------- /apps/wordpress/cluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.crossplane.io/v1alpha1 2 | kind: KubernetesCluster 3 | metadata: 4 | name: wordpress-demo-cluster 5 | labels: 6 | app: wordpress-demo 7 | spec: 8 | writeConnectionSecretToRef: 9 | name: wordpress-demo-cluster -------------------------------------------------------------------------------- /aws/environments/dev/postgresqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.aws.crossplane.io/v1beta1 2 | kind: RDSInstanceClass 3 | metadata: 4 | name: rdsinstancepostgresql 5 | specTemplate: 6 | forProvider: 7 | dbInstanceClass: db.t2.micro 8 | allocatedStorage: 20 9 | -------------------------------------------------------------------------------- /azure/environments/dev/mysqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.azure.crossplane.io/v1alpha3 2 | kind: SQLServerClass 3 | metadata: 4 | name: sqlservermysql 5 | specTemplate: 6 | pricingTier: 7 | vcores: 1 8 | storageProfile: 9 | storageGB: 25 10 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/definitions/manual-scaler-trait-definition.yaml: -------------------------------------------------------------------------------- 1 | 2 | apiVersion: core.oam.dev/v1alpha2 3 | kind: TraitDefinition 4 | metadata: 5 | name: manualscalertraits.core.oam.dev 6 | spec: 7 | definitionRef: 8 | name: manualscalertraits.core.oam.dev -------------------------------------------------------------------------------- /guides/argo-oam/infra/definitions/mysql-workload-definition.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: WorkloadDefinition 3 | metadata: 4 | name: mysqlinstances.database.crossplane.io 5 | spec: 6 | definitionRef: 7 | name: mysqlinstances.database.crossplane.io -------------------------------------------------------------------------------- /guides/argo-oam/infra/definitions/nosql-workload-definition.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: WorkloadDefinition 3 | metadata: 4 | name: nosqlinstances.database.crossplane.io 5 | spec: 6 | definitionRef: 7 | name: nosqlinstances.database.crossplane.io -------------------------------------------------------------------------------- /aws/environments/prod/postgresqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.aws.crossplane.io/v1beta1 2 | kind: RDSInstanceClass 3 | metadata: 4 | name: rdsinstancepostgresql 5 | specTemplate: 6 | forProvider: 7 | dbInstanceClass: db.m5.large 8 | allocatedStorage: 100 9 | -------------------------------------------------------------------------------- /azure/environments/prod/mysqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.azure.crossplane.io/v1alpha3 2 | kind: SQLServerClass 3 | metadata: 4 | name: sqlservermysql 5 | specTemplate: 6 | pricingTier: 7 | vcores: 8 8 | storageProfile: 9 | storageGB: 100 10 | 11 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/securitygroup-eks/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: SecurityGroup 3 | metadata: 4 | name: securitygroup 5 | spec: 6 | groupName: argo-demo-eks-sg 7 | description: security group for wordpress eks 8 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/definitions/containerized-workload-definition.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: WorkloadDefinition 3 | metadata: 4 | name: containerizedworkloads.core.oam.dev 5 | spec: 6 | definitionRef: 7 | name: containerizedworkloads.core.oam.dev -------------------------------------------------------------------------------- /azure/environments/dev/postgresqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.azure.crossplane.io/v1alpha3 2 | kind: SQLServerClass 3 | metadata: 4 | name: sqlserverpostgresql 5 | specTemplate: 6 | pricingTier: 7 | vcores: 1 8 | storageProfile: 9 | storageGB: 25 10 | -------------------------------------------------------------------------------- /azure/environments/prod/postgresqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.azure.crossplane.io/v1alpha3 2 | kind: SQLServerClass 3 | metadata: 4 | name: sqlserverpostgresql 5 | specTemplate: 6 | pricingTier: 7 | vcores: 8 8 | storageProfile: 9 | storageGB: 100 10 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/iamrolepolicyattachment-cluster/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: identity.aws.crossplane.io/v1alpha3 2 | kind: IAMRolePolicyAttachment 3 | metadata: 4 | name: iamrolepolicyattachment 5 | spec: 6 | policyArn: arn:aws:iam::aws:policy/AmazonEKSClusterPolicy 7 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/iamrolepolicyattachment-service/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: identity.aws.crossplane.io/v1alpha3 2 | kind: IAMRolePolicyAttachment 3 | metadata: 4 | name: iamrolepolicyattachment 5 | spec: 6 | policyArn: arn:aws:iam::aws:policy/AmazonEKSServicePolicy 7 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/definitions/machine-instance-workload-definition.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: WorkloadDefinition 3 | metadata: 4 | name: machineinstances.compute.crossplane.io 5 | spec: 6 | definitionRef: 7 | name: machineinstances.compute.crossplane.io -------------------------------------------------------------------------------- /guides/argo-oam/infra/definitions/postgres-workload-definition.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: WorkloadDefinition 3 | metadata: 4 | name: postgresqlinstances.database.crossplane.io 5 | spec: 6 | definitionRef: 7 | name: postgresqlinstances.database.crossplane.io -------------------------------------------------------------------------------- /guides/argo-oam/infra/definitions/kubernetes-cluster-workload-definition.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: WorkloadDefinition 3 | metadata: 4 | name: kubernetesclusters.compute.crossplane.io 5 | spec: 6 | definitionRef: 7 | name: kubernetesclusters.compute.crossplane.io -------------------------------------------------------------------------------- /gcp/environments/dev/mysqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.gcp.crossplane.io/v1beta1 2 | kind: CloudSQLInstanceClass 3 | metadata: 4 | name: cloudsqlinstancemysql 5 | specTemplate: 6 | forProvider: 7 | settings: 8 | tier: db-n1-standard-1 9 | dataDiskSizeGb: 20 10 | -------------------------------------------------------------------------------- /gcp/environments/prod/mysqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.gcp.crossplane.io/v1beta1 2 | kind: CloudSQLInstanceClass 3 | metadata: 4 | name: cloudsqlinstancemysql 5 | specTemplate: 6 | forProvider: 7 | settings: 8 | tier: db-n1-standard-1 9 | dataDiskSizeGb: 20 10 | -------------------------------------------------------------------------------- /aws/environments/dev/rediscluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: cache.aws.crossplane.io/v1beta1 2 | kind: ReplicationGroupClass 3 | metadata: 4 | name: replicationgroup 5 | specTemplate: 6 | forProvider: 7 | cacheNodeType: cache.t2.micro 8 | numNodeGroups: 1 9 | replicasPerNodeGroup: 1 10 | -------------------------------------------------------------------------------- /aws/environments/prod/rediscluster.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: cache.aws.crossplane.io/v1beta1 2 | kind: ReplicationGroupClass 3 | metadata: 4 | name: replicationgroup 5 | specTemplate: 6 | forProvider: 7 | cacheNodeType: cache.m5.large 8 | numNodeGroups: 3 9 | replicasPerNodeGroup: 3 10 | -------------------------------------------------------------------------------- /gcp/environments/dev/postgresqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.gcp.crossplane.io/v1beta1 2 | kind: CloudSQLInstanceClass 3 | metadata: 4 | name: cloudsqlinstancepostgresql 5 | specTemplate: 6 | forProvider: 7 | settings: 8 | tier: db-n1-standard-1 9 | dataDiskSizeGb: 20 10 | -------------------------------------------------------------------------------- /gcp/environments/prod/postgresqlinstance.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.gcp.crossplane.io/v1beta1 2 | kind: CloudSQLInstanceClass 3 | metadata: 4 | name: cloudsqlinstancepostgresql 5 | specTemplate: 6 | forProvider: 7 | settings: 8 | tier: db-n1-standard-1 9 | dataDiskSizeGb: 20 10 | -------------------------------------------------------------------------------- /guides/aws-argo/app-1/mysqlinstanceclaim.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.crossplane.io/v1alpha1 2 | kind: MySQLInstance 3 | metadata: 4 | name: sql-west 5 | spec: 6 | classSelector: 7 | matchLabels: 8 | region: west 9 | engineVersion: "5.7" 10 | writeConnectionSecretToRef: 11 | name: sql-west 12 | -------------------------------------------------------------------------------- /guides/aws-argo/app-2/mysqlinstanceclaim.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.crossplane.io/v1alpha1 2 | kind: MySQLInstance 3 | metadata: 4 | name: sql-east 5 | spec: 6 | classSelector: 7 | matchLabels: 8 | region: east 9 | engineVersion: "5.7" 10 | writeConnectionSecretToRef: 11 | name: sql-east 12 | -------------------------------------------------------------------------------- /gcp/services/compute/network/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.gcp.crossplane.io/v1alpha3 2 | kind: Network 3 | metadata: 4 | name: network 5 | spec: 6 | name: my-cool-network 7 | autoCreateSubnetworks: false 8 | routingConfig: 9 | routingMode: REGIONAL 10 | reclaimPolicy: Delete 11 | providerRef: 12 | name: gcp-provider 13 | -------------------------------------------------------------------------------- /gcp/services/storage/bucket/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: storage.gcp.crossplane.io/v1alpha3 2 | kind: BucketClass 3 | metadata: 4 | name: bucket 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | location: US 8 | storageClass: MULTI_REGIONAL 9 | providerRef: 10 | name: gcp-provider 11 | reclaimPolicy: Delete 12 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/network/network.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.gcp.crossplane.io/v1beta1 2 | kind: Network 3 | metadata: 4 | name: argo-oam-network 5 | spec: 6 | forProvider: 7 | autoCreateSubnetworks: false 8 | routingConfig: 9 | routingMode: REGIONAL 10 | reclaimPolicy: Delete 11 | providerRef: 12 | name: gcp-provider 13 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-east-1/internetgateway.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: InternetGateway 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-east-internetgateway 7 | spec: 8 | providerRef: 9 | name: aws-provider-east 10 | reclaimPolicy: Delete 11 | vpcIdRef: 12 | name: argo-east-vpc 13 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-west-2/internetgateway.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: InternetGateway 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-west-internetgateway 7 | spec: 8 | providerRef: 9 | name: aws-provider-west 10 | reclaimPolicy: Delete 11 | vpcIdRef: 12 | name: argo-west-vpc 13 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-east-1/vpc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: VPC 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-east-vpc 7 | spec: 8 | cidrBlock: 192.168.0.0/16 9 | enableDnsHostNames: true 10 | enableDnsSupport: true 11 | providerRef: 12 | name: aws-provider-east 13 | reclaimPolicy: Delete 14 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-west-2/vpc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: VPC 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-west-vpc 7 | spec: 8 | cidrBlock: 192.168.0.0/16 9 | enableDnsHostNames: true 10 | enableDnsSupport: true 11 | providerRef: 12 | name: aws-provider-west 13 | reclaimPolicy: Delete 14 | -------------------------------------------------------------------------------- /aws/services/network/internetgateway/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: InternetGateway 3 | metadata: 4 | name: internetgateway 5 | spec: 6 | ## must provide one of vpcIdRef or vpcId 7 | # vpcIdRef: 8 | # name: sample-vpc 9 | # vpcId: my-vpc 10 | reclaimPolicy: Delete 11 | providerRef: 12 | name: aws-provider 13 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-east-1/kubernetesclusterclaim.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.crossplane.io/v1alpha1 2 | kind: KubernetesCluster 3 | metadata: 4 | name: wordpress-east-cluster 5 | labels: 6 | app: wordpress-east 7 | spec: 8 | classSelector: 9 | matchLabels: 10 | region: east 11 | writeConnectionSecretToRef: 12 | name: wordpress-east-cluster 13 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-west-2/kubernetesclusterclaim.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.crossplane.io/v1alpha1 2 | kind: KubernetesCluster 3 | metadata: 4 | name: wordpress-west-cluster 5 | labels: 6 | app: wordpress-west 7 | spec: 8 | classSelector: 9 | matchLabels: 10 | region: west 11 | writeConnectionSecretToRef: 12 | name: wordpress-west-cluster 13 | -------------------------------------------------------------------------------- /aws/services/network/subnet/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: Subnet 3 | metadata: 4 | name: subnet 5 | spec: 6 | cidrBlock: 192.168.64.0/18 7 | ## must provide one of either vpcIdRef or vpcId 8 | # vpcIdRef: 9 | # name: sample-vpc 10 | availabilityZone: us-west-2a 11 | reclaimPolicy: Delete 12 | providerRef: 13 | name: aws-provider 14 | -------------------------------------------------------------------------------- /gcp/services/compute/kubernetescluster/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.gcp.crossplane.io/v1alpha3 2 | kind: GKEClusterClass 3 | metadata: 4 | name: gkecluster 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | machineType: n1-standard-2 8 | numNodes: 3 9 | zone: us-central1-b 10 | providerRef: 11 | name: gcp-provider 12 | reclaimPolicy: Delete 13 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/network/globaladdress.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.gcp.crossplane.io/v1beta1 2 | kind: GlobalAddress 3 | metadata: 4 | name: argo-oam-ga 5 | spec: 6 | forProvider: 7 | purpose: VPC_PEERING 8 | addressType: INTERNAL 9 | prefixLength: 16 10 | networkRef: 11 | name: argo-oam-network 12 | reclaimPolicy: Delete 13 | providerRef: 14 | name: gcp-provider 15 | -------------------------------------------------------------------------------- /apps/wordpress/mysql.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.crossplane.io/v1alpha1 2 | kind: MySQLInstance 3 | metadata: 4 | name: sql 5 | spec: 6 | engineVersion: "5.7" 7 | # A secret is exported by providing the secret name 8 | # to export it under. This is the name of the secret 9 | # in the crossplane cluster, and it's scoped to this claim's namespace. 10 | writeConnectionSecretToRef: 11 | name: sql 12 | -------------------------------------------------------------------------------- /aws/services/storage/bucket/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: storage.aws.crossplane.io/v1alpha3 2 | kind: S3BucketClass 3 | metadata: 4 | name: s3bucket 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | versioning: false 8 | cannedACL: private 9 | region: us-east-1 10 | localPermission: ReadWrite 11 | providerRef: 12 | name: aws-provider 13 | reclaimPolicy: Delete 14 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/gcp/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: argo- 2 | bases: 3 | - ../../../../../gcp/environments/dev 4 | - ../../../../../gcp/environments/prod 5 | - ../../../../../gcp/services/compute/network 6 | - ../../../../../gcp/services/compute/subnetwork 7 | - ../../../../../gcp/services/compute/globaladdress 8 | - ../../../../../gcp/services/servicenetworking/connection 9 | patches: 10 | - patch.yaml -------------------------------------------------------------------------------- /gcp/services/cache/rediscluster/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: cache.gcp.crossplane.io/v1beta1 2 | kind: CloudMemorystoreInstanceClass 3 | metadata: 4 | name: cloudmemorystoreinstance 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | forProvider: 8 | tier: STANDARD_HA 9 | region: us-west2 10 | memorySizeGb: 3 11 | providerRef: 12 | name: gcp-provider 13 | reclaimPolicy: Delete 14 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/network/connection.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: servicenetworking.gcp.crossplane.io/v1beta1 2 | kind: Connection 3 | metadata: 4 | name: argo-oam-conn 5 | spec: 6 | forProvider: 7 | parent: services/servicenetworking.googleapis.com 8 | networkRef: 9 | name: argo-oam-network 10 | reservedPeeringRangeRefs: 11 | - name: argo-oam-ga 12 | reclaimPolicy: Delete 13 | providerRef: 14 | name: gcp-provider 15 | -------------------------------------------------------------------------------- /aws/services/network/securitygroup/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: SecurityGroup 3 | metadata: 4 | name: securitygroup 5 | spec: 6 | groupName: my-cool-securitygroup 7 | description: some cool description 8 | ## must provide one of vpcIdRef or vpcId 9 | # vpcIdRef: 10 | # name: sample-vpc 11 | # vpcId: name-of-my-vpc 12 | reclaimPolicy: Delete 13 | providerRef: 14 | name: aws-provider 15 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/securitygroup-rds/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: SecurityGroup 3 | metadata: 4 | name: securitygroup 5 | spec: 6 | groupName: argo-demo-rds-sg 7 | description: security group for wordpress rds 8 | ingress: 9 | - fromPort: 3306 10 | toPort: 3306 11 | protocol: tcp 12 | cidrBlocks: 13 | - cidrIp: 0.0.0.0/0 14 | description: all ips 15 | -------------------------------------------------------------------------------- /azure/services/cache/rediscluster/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: cache.azure.crossplane.io/v1alpha3 2 | kind: RedisClass 3 | metadata: 4 | name: redis 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | resourceGroupName: group-westus-1 8 | location: West US 9 | sku: 10 | name: Basic 11 | family: C 12 | capacity: 2 13 | enableNonSslPort: true 14 | providerRef: 15 | name: azure-provider 16 | reclaimPolicy: Delete 17 | -------------------------------------------------------------------------------- /aws/services/database/mysqlinstance/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.aws.crossplane.io/v1beta1 2 | kind: RDSInstanceClass 3 | metadata: 4 | name: rdsinstancemysql 5 | specTemplate: 6 | forProvider: 7 | dbInstanceClass: db.t2.medium 8 | masterUsername: masteruser 9 | allocatedStorage: 50 10 | engine: mysql 11 | skipFinalSnapshotBeforeDeletion: true 12 | writeConnectionSecretsToNamespace: crossplane-system 13 | providerRef: 14 | name: aws-provider 15 | reclaimPolicy: Delete 16 | -------------------------------------------------------------------------------- /aws/services/identity/iamrolepolicyattachment/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: identity.aws.crossplane.io/v1alpha3 2 | kind: IAMRolePolicyAttachment 3 | metadata: 4 | name: iamrolepolicyattachment 5 | spec: 6 | ## must provide one of roleNameRef or roleName 7 | # roleNameRef: 8 | # name: sample-eks-cluster-role 9 | # roleName: my-role 10 | ## wellknown policy arn 11 | policyArn: arn:aws:iam::aws:policy/AmazonEKSServicePolicy 12 | reclaimPolicy: Delete 13 | providerRef: 14 | name: aws-provider 15 | -------------------------------------------------------------------------------- /aws/services/database/postgresqlinstance/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.aws.crossplane.io/v1beta1 2 | kind: RDSInstanceClass 3 | metadata: 4 | name: rdsinstancepostgresql 5 | specTemplate: 6 | forProvider: 7 | dbInstanceClass: db.t2.medium 8 | masterUsername: masteruser 9 | allocatedStorage: 50 10 | engine: postgresql 11 | skipFinalSnapshotBeforeDeletion: true 12 | writeConnectionSecretsToNamespace: crossplane-system 13 | providerRef: 14 | name: aws-provider 15 | reclaimPolicy: Delete 16 | -------------------------------------------------------------------------------- /azure/services/storage/bucket/container-class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: storage.azure.crossplane.io/v1alpha3 2 | kind: ContainerClass 3 | metadata: 4 | name: container 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | # Azure containers read their credentials from an account. We reuse the 8 | # providerRef class field to specify which account to read. 9 | accountReference: 10 | name: account 11 | providerRef: 12 | name: account 13 | reclaimPolicy: Delete 14 | nameFormat: example-%s 15 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/app-aws/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.crossplane.io/v1alpha1 2 | kind: KubernetesCluster 3 | metadata: 4 | name: wordpress-demo-cluster 5 | spec: 6 | classSelector: 7 | matchLabels: 8 | env: dev # change this to prod to use prod infra 9 | provider: aws 10 | --- 11 | apiVersion: database.crossplane.io/v1alpha1 12 | kind: MySQLInstance 13 | metadata: 14 | name: sql 15 | spec: 16 | classSelector: 17 | matchLabels: 18 | env: dev # change this to prod to use prod infra 19 | provider: aws -------------------------------------------------------------------------------- /gcp/services/compute/globaladdress/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.gcp.crossplane.io/v1alpha3 2 | kind: GlobalAddress 3 | metadata: 4 | name: globaladdress 5 | spec: 6 | name: my-cool-globaladdress 7 | purpose: VPC_PEERING 8 | addressType: INTERNAL 9 | prefixLength: 16 10 | # must provide one of either networkRef or network 11 | # networkRef: 12 | # name: sample-network 13 | # network: projects/crossplane-playground/global/networks/sample-network 14 | reclaimPolicy: Delete 15 | providerRef: 16 | name: gcp-provider 17 | -------------------------------------------------------------------------------- /OWNERS.md: -------------------------------------------------------------------------------- 1 | # OWNERS 2 | 3 | This page lists all maintainers for **this** repository. Each repository in the [Crossplane 4 | organization](https://github.com/crossplane/) will list their repository maintainers in their own 5 | `OWNERS.md` file. 6 | 7 | Please see the Crossplane 8 | [GOVERNANCE.md](https://github.com/crossplane/crossplane/blob/master/GOVERNANCE.md) for governance 9 | guidelines and responsibilities for the steering committee and maintainers. 10 | 11 | ## Maintainers 12 | 13 | * Daniel Mangum ([hasheddan](https://github.com/hasheddan)) 14 | -------------------------------------------------------------------------------- /gcp/services/database/mysqlinstance/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.gcp.crossplane.io/v1beta1 2 | kind: CloudSQLInstanceClass 3 | metadata: 4 | name: cloudsqlinstancemysql 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | forProvider: 8 | databaseVersion: MYSQL_5_6 9 | region: us-west2 10 | settings: 11 | tier: db-n1-standard-4 12 | dataDiskType: PD_SSD 13 | dataDiskSizeGb: 50 14 | ipConfiguration: 15 | ipv4Enabled: true 16 | providerRef: 17 | name: gcp-provider 18 | reclaimPolicy: Delete 19 | -------------------------------------------------------------------------------- /aws/services/database/dbsubnetgroup/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.aws.crossplane.io/v1alpha3 2 | kind: DBSubnetGroup 3 | metadata: 4 | name: dbsubnetgroup 5 | spec: 6 | groupName: my-cool-dbsubnetgroup 7 | description: EKS vpc to rds 8 | ## must provide one of subnetIdRefs or subnetIds 9 | # subnetIdRefs: 10 | # - name: sample-subnet1 11 | # - name: sample-subnet2 12 | # - name: sample-subnet3 13 | # subnetIds: 14 | # - my-subnet1 15 | # - my-subnet2 16 | # - my-subnet3 17 | reclaimPolicy: Delete 18 | providerRef: 19 | name: aws-provider 20 | -------------------------------------------------------------------------------- /azure/services/storage/bucket/account-class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: storage.azure.crossplane.io/v1alpha3 2 | kind: AccountClass 3 | metadata: 4 | name: account 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | storageAccountName: example-storage 8 | resourceGroupName: group-westus-1 9 | storageAccountSpec: 10 | kind: Storage 11 | location: West US 12 | sku: 13 | name: Standard_LRS 14 | tier: Standard 15 | tags: 16 | application: crossplane 17 | providerRef: 18 | name: azure-provider 19 | reclaimPolicy: Delete 20 | -------------------------------------------------------------------------------- /gcp/services/database/postgresqlinstance/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.gcp.crossplane.io/v1beta1 2 | kind: CloudSQLInstanceClass 3 | metadata: 4 | name: cloudsqlinstancepostgresql 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | forProvider: 8 | databaseVersion: POSTGRES_9_6 9 | region: us-west2 10 | settings: 11 | tier: db-n1-standard-4 12 | dataDiskType: PD_SSD 13 | dataDiskSizeGb: 50 14 | ipConfiguration: 15 | ipv4Enabled: true 16 | providerRef: 17 | name: gcp-provider 18 | reclaimPolicy: Delete 19 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/network/subnetwork.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.gcp.crossplane.io/v1beta1 2 | kind: Subnetwork 3 | metadata: 4 | name: argo-oam-subnetwork 5 | spec: 6 | forProvider: 7 | region: us-central1 8 | ipCidrRange: "192.168.0.0/24" 9 | privateIpGoogleAccess: true 10 | secondaryIpRanges: 11 | - rangeName: pods 12 | ipCidrRange: 10.128.0.0/20 13 | - rangeName: services 14 | ipCidrRange: 172.16.0.0/16 15 | networkRef: 16 | name: argo-oam-network 17 | reclaimPolicy: Delete 18 | providerRef: 19 | name: gcp-provider 20 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/kustomization.yaml: -------------------------------------------------------------------------------- 1 | namePrefix: argo- 2 | bases: 3 | - ./iamrolepolicyattachment-cluster 4 | - ./iamrolepolicyattachment-service 5 | - ./securitygroup-eks 6 | - ./securitygroup-rds 7 | - ./subnet-1 8 | - ./subnet-2 9 | - ./subnet-3 10 | - ../../../../../aws/services/identity/iamrole 11 | - ../../../../../aws/services/database/dbsubnetgroup 12 | - ../../../../../aws/services/network/internetgateway 13 | - ../../../../../aws/services/network/routetable 14 | - ../../../../../aws/services/network/vpc 15 | - ../../../../../aws/environments/dev 16 | patches: 17 | - patch.yaml -------------------------------------------------------------------------------- /aws/services/identity/iamrole/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: identity.aws.crossplane.io/v1alpha3 2 | kind: IAMRole 3 | metadata: 4 | name: iamrole 5 | spec: 6 | roleName: my-cool-iamrole 7 | description: a role that gives a cool power 8 | assumeRolePolicyDocument: | 9 | { 10 | "Version": "2012-10-17", 11 | "Statement": [ 12 | { 13 | "Effect": "Allow", 14 | "Principal": { 15 | "Service": "eks.amazonaws.com" 16 | }, 17 | "Action": "sts:AssumeRole" 18 | } 19 | ] 20 | } 21 | reclaimPolicy: Delete 22 | providerRef: 23 | name: aws-provider 24 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/app/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.crossplane.io/v1alpha1 2 | kind: KubernetesCluster 3 | metadata: 4 | name: wordpress-demo-cluster 5 | spec: 6 | classSelector: 7 | matchLabels: 8 | env: dev # change this to prod to use prod infra 9 | provider: gcp # change this to aws to use aws infra 10 | --- 11 | apiVersion: database.crossplane.io/v1alpha1 12 | kind: MySQLInstance 13 | metadata: 14 | name: sql 15 | spec: 16 | classSelector: 17 | matchLabels: 18 | env: dev # change this to prod to use prod infra 19 | provider: gcp # change this to aws to use aws infra 20 | engine: mysql -------------------------------------------------------------------------------- /guides/argo-oam/infra/classes/cloudsqlclass.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.gcp.crossplane.io/v1beta1 2 | kind: CloudSQLInstanceClass 3 | metadata: 4 | name: argo-oam-cloudsql 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | providerRef: 8 | name: gcp-provider 9 | reclaimPolicy: Delete 10 | forProvider: 11 | databaseVersion: POSTGRES_9_6 12 | region: us-central1 13 | settings: 14 | tier: db-custom-1-3840 15 | dataDiskType: PD_SSD 16 | dataDiskSizeGb: 10 17 | ipConfiguration: 18 | ipv4Enabled: false 19 | privateNetworkRef: 20 | name: argo-oam-network -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-east-1/routetable.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: RouteTable 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-east-routetable 7 | spec: 8 | associations: 9 | - subnetIdRef: 10 | name: argo-east-subnet1 11 | - subnetIdRef: 12 | name: argo-east-subnet2 13 | - subnetIdRef: 14 | name: argo-east-subnet3 15 | providerRef: 16 | name: aws-provider-east 17 | reclaimPolicy: Delete 18 | routes: 19 | - destinationCidrBlock: 0.0.0.0/0 20 | gatewayIdRef: 21 | name: argo-east-internetgateway 22 | vpcIdRef: 23 | name: argo-east-vpc 24 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-west-2/routetable.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: RouteTable 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-west-routetable 7 | spec: 8 | associations: 9 | - subnetIdRef: 10 | name: argo-west-subnet1 11 | - subnetIdRef: 12 | name: argo-west-subnet2 13 | - subnetIdRef: 14 | name: argo-west-subnet3 15 | providerRef: 16 | name: aws-provider-west 17 | reclaimPolicy: Delete 18 | routes: 19 | - destinationCidrBlock: 0.0.0.0/0 20 | gatewayIdRef: 21 | name: argo-west-internetgateway 22 | vpcIdRef: 23 | name: argo-west-vpc 24 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/components/tracker-managed-db-component.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: Component 3 | metadata: 4 | name: tracker-managed-postgres-db 5 | spec: 6 | workload: 7 | apiVersion: database.crossplane.io/v1alpha1 8 | kind: PostgreSQLInstance 9 | metadata: 10 | name: app-postgresql 11 | spec: 12 | classSelector: 13 | matchLabels: {} 14 | writeConnectionSecretToRef: 15 | name: postgresqlconn 16 | engineVersion: "9.6" 17 | parameters: 18 | - name: dbconn 19 | required: true 20 | fieldPaths: 21 | - spec.writeConnectionSecretToRef.name 22 | 23 | -------------------------------------------------------------------------------- /aws/services/cache/rediscluster/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: cache.aws.crossplane.io/v1beta1 2 | kind: ReplicationGroupClass 3 | metadata: 4 | name: replicationgroup 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | providerRef: 8 | name: aws-provider 9 | reclaimPolicy: Delete 10 | forProvider: 11 | replicationGroupDescription: "A standard replication group" 12 | applyModificationsImmediately: true 13 | engine: "redis" 14 | engineVersion: "3.2.4" 15 | cacheParameterGroupName: default.redis3.2.cluster.on 16 | cacheNodeType: cache.t2.medium 17 | automaticFailoverEnabled: true 18 | numNodeGroups: 2 19 | replicasPerNodeGroup: 2 20 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/classes/gkeclusterclass.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: compute.gcp.crossplane.io/v1alpha3 3 | kind: GKEClusterClass 4 | metadata: 5 | name: argo-oam-gke 6 | annotations: 7 | resourceclass.crossplane.io/is-default-class: "true" 8 | specTemplate: 9 | writeConnectionSecretsToNamespace: crossplane-system 10 | machineType: n1-standard-1 11 | numNodes: 5 12 | zone: us-central1-b 13 | networkRef: 14 | name: argo-oam-network 15 | subnetworkRef: 16 | name: argo-oam-subnetwork 17 | enableIPAlias: true 18 | clusterSecondaryRangeName: pods 19 | servicesSecondaryRangeName: services 20 | reclaimPolicy: Delete 21 | providerRef: 22 | name: gcp-provider 23 | -------------------------------------------------------------------------------- /gcp/services/compute/subnetwork/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.gcp.crossplane.io/v1alpha3 2 | kind: Subnetwork 3 | metadata: 4 | name: subnetwork 5 | spec: 6 | name: my-cool-subnetwork 7 | region: us-central1 8 | ipCidrRange: "192.168.0.0/24" 9 | privateIpGoogleAccess: true 10 | secondaryIpRanges: 11 | - rangeName: pods 12 | ipCidrRange: 10.128.0.0/20 13 | - rangeName: services 14 | ipCidrRange: 172.16.0.0/16 15 | ## must provide one of networkRef or network 16 | # networkRef: 17 | # name: sample-network 18 | # network: projects/crossplane-playground/global/networks/sample-network 19 | reclaimPolicy: Delete 20 | providerRef: 21 | name: gcp-provider 22 | -------------------------------------------------------------------------------- /gcp/services/servicenetworking/connection/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: servicenetworking.gcp.crossplane.io/v1alpha3 2 | kind: Connection 3 | metadata: 4 | name: connection 5 | spec: 6 | parent: services/servicenetworking.googleapis.com 7 | ## must provide one of networkRef or network 8 | # networkRef: 9 | # name: sample-network 10 | # network: projects/crossplane-playground/global/networks/sample-network 11 | ## must provide one of reservedPeeringRangeRefs or reservedPeeringRanges 12 | # reservedPeeringRangeRefs: 13 | # - name: sample-globaladdress 14 | # reservedPeeringRanges: 15 | # - sample-globaladdress 16 | reclaimPolicy: Delete 17 | providerRef: 18 | name: gcp-provider 19 | -------------------------------------------------------------------------------- /aws/services/network/routetable/resource.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: RouteTable 3 | metadata: 4 | name: routetable 5 | spec: 6 | ## must provide one of vpcIdRef and vpcId 7 | # vpcIdRef: 8 | # name: sample-vpc 9 | # vpcId: my-vpc 10 | ## routes and associations can either be assigned using names or references 11 | # routes: 12 | # - destinationCidrBlock: 0.0.0.0/0 13 | # gatewayIdRef: 14 | # name: sample-internetgateway 15 | # associations: 16 | # - subnetIdRef: 17 | # name: sample-subnet1 18 | # - subnetIdRef: 19 | # name: sample-subnet2 20 | # - subnetIdRef: 21 | # name: sample-subnet3 22 | reclaimPolicy: Delete 23 | providerRef: 24 | name: aws-provider 25 | -------------------------------------------------------------------------------- /azure/services/database/mysqlinstance/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.azure.crossplane.io/v1alpha3 2 | kind: SQLServerClass 3 | metadata: 4 | name: sqlservermysql 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | adminLoginName: myadmin 8 | ## must provide one of resourceGroupName or resourceGroupNameRef 9 | # resourceGroupName: group-westus-1 10 | # resourceGroupNameRef: 11 | # name: sample-rg 12 | location: West US 13 | sslEnforced: false 14 | version: "5.6" 15 | pricingTier: 16 | tier: Basic 17 | vcores: 4 18 | family: Gen5 19 | storageProfile: 20 | storageGB: 50 21 | backupRetentionDays: 7 22 | geoRedundantBackup: false 23 | providerRef: 24 | name: azure-provider 25 | reclaimPolicy: Delete 26 | -------------------------------------------------------------------------------- /azure/services/database/postgresqlinstance/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.azure.crossplane.io/v1alpha3 2 | kind: SQLServerClass 3 | metadata: 4 | name: sqlserverpostgresql 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | adminLoginName: myadmin 8 | ## must provide one of resourceGroupName or resourceGroupNameRef 9 | # resourceGroupName: group-westus-1 10 | # resourceGroupNameRef: 11 | # name: sample-rg 12 | location: West US 13 | sslEnforced: false 14 | version: "9.6" 15 | pricingTier: 16 | tier: Basic 17 | vcores: 1 18 | family: Gen5 19 | storageProfile: 20 | storageGB: 25 21 | backupRetentionDays: 7 22 | geoRedundantBackup: false 23 | providerRef: 24 | name: azure-provider 25 | reclaimPolicy: Delete 26 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/components/tracker-flights-component.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: Component 3 | metadata: 4 | name: flights-api 5 | spec: 6 | workload: 7 | apiVersion: core.oam.dev/v1alpha2 8 | kind: ContainerizedWorkload 9 | metadata: 10 | name: flights-api 11 | spec: 12 | osType: linux 13 | arch: amd64 14 | containers: 15 | - name: flights-api 16 | image: sonofjorel/rudr-flights-api:0.49 17 | env: 18 | - name: DATA_SERVICE_URI 19 | value: "foo" 20 | ports: 21 | - name: http 22 | containerPort: 3003 23 | protocol: TCP 24 | parameters: 25 | - name: dataUri 26 | description: uri for data-api pod 27 | required: true 28 | fieldPaths: 29 | - spec.containers[0].env[0].value -------------------------------------------------------------------------------- /guides/argo-oam/infra/components/tracker-weather-component.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: Component 3 | metadata: 4 | name: weather-api 5 | spec: 6 | workload: 7 | apiVersion: core.oam.dev/v1alpha2 8 | kind: ContainerizedWorkload 9 | metadata: 10 | name: weather-api 11 | spec: 12 | osType: linux 13 | arch: amd64 14 | containers: 15 | - name: weather-api 16 | image: sonofjorel/rudr-weather-api:0.49 17 | env: 18 | - name: DATA_SERVICE_URI 19 | value: "foo" 20 | ports: 21 | - name: http 22 | containerPort: 3015 23 | protocol: TCP 24 | parameters: 25 | - name: dataUri 26 | description: uri for data-api pod 27 | required: true 28 | fieldPaths: 29 | - spec.containers[0].env[0].value -------------------------------------------------------------------------------- /guides/argo-oam/infra/components/tracker-quakes-component.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: Component 3 | metadata: 4 | name: quakes-api 5 | spec: 6 | workload: 7 | apiVersion: core.oam.dev/v1alpha2 8 | kind: ContainerizedWorkload 9 | metadata: 10 | name: quakes-api 11 | spec: 12 | osType: linux 13 | arch: amd64 14 | containers: 15 | - name: quakes-api 16 | image: sonofjorel/rudr-quakes-api:0.49 17 | env: 18 | - name: DATA_SERVICE_URI 19 | value: "foo" 20 | ports: 21 | - name: http 22 | containerPort: 3012 23 | protocol: TCP 24 | parameters: 25 | - name: dataUri 26 | description: uri for data-api pod 27 | required: true 28 | fieldPaths: 29 | - spec.containers[0].env[0].value 30 | 31 | -------------------------------------------------------------------------------- /azure/services/compute/kubernetescluster/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.azure.crossplane.io/v1alpha3 2 | kind: AKSClusterClass 3 | metadata: 4 | name: akscluster 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | ## must provide one of resourceGroupName or resourceGroupNameRef 8 | # resourceGroupName: group-westus-1 9 | # resourceGroupNameRef: 10 | # name: sample-rg 11 | location: West US 2 12 | version: "1.12.8" 13 | nodeCount: 3 14 | nodeVMSize: Standard_B2ms 15 | dnsNamePrefix: crossplane-aks 16 | disableRBAC: false 17 | # It is a bug that this field is required by Azure cluster classes; it is not 18 | # used. Service principal secrets for dynamically provisioned claims are 19 | # written to writeConnectionSecretsToNamespace. 20 | writeServicePrincipalTo: 21 | name: unused 22 | namespace: unused 23 | providerRef: 24 | name: example 25 | reclaimPolicy: Delete 26 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-east-1/eksclusterclass.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.aws.crossplane.io/v1alpha3 2 | kind: EKSClusterClass 3 | metadata: 4 | labels: 5 | provider: aws 6 | region: east 7 | name: argo-east-eks 8 | specTemplate: 9 | providerRef: 10 | name: aws-provider-east 11 | reclaimPolicy: Delete 12 | region: us-east-1 13 | roleARNRef: 14 | name: argo-east-iamrole 15 | securityGroupIdRefs: 16 | - name: argo-east-eks-securitygroup 17 | subnetIdRefs: 18 | - name: argo-east-subnet1 19 | - name: argo-east-subnet2 20 | - name: argo-east-subnet3 21 | vpcIdRef: 22 | name: argo-east-vpc 23 | workerNodes: 24 | clusterControlPlaneSecurityGroupRef: 25 | name: argo-east-eks-securitygroup 26 | nodeAutoScalingGroupMaxSize: 1 27 | nodeAutoScalingGroupMinSize: 1 28 | nodeGroupName: argo-east-nodes 29 | nodeInstanceType: m3.medium 30 | writeConnectionSecretsToNamespace: crossplane-system 31 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-west-2/eksclusterclass.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.aws.crossplane.io/v1alpha3 2 | kind: EKSClusterClass 3 | metadata: 4 | labels: 5 | provider: aws 6 | region: west 7 | name: argo-west-eks 8 | specTemplate: 9 | providerRef: 10 | name: aws-provider-west 11 | reclaimPolicy: Delete 12 | region: us-west-2 13 | roleARNRef: 14 | name: argo-west-iamrole 15 | securityGroupIdRefs: 16 | - name: argo-west-eks-securitygroup 17 | subnetIdRefs: 18 | - name: argo-west-subnet1 19 | - name: argo-west-subnet2 20 | - name: argo-west-subnet3 21 | vpcIdRef: 22 | name: argo-west-vpc 23 | workerNodes: 24 | clusterControlPlaneSecurityGroupRef: 25 | name: argo-west-eks-securitygroup 26 | nodeAutoScalingGroupMaxSize: 1 27 | nodeAutoScalingGroupMinSize: 1 28 | nodeGroupName: argo-west-nodes 29 | nodeInstanceType: m3.medium 30 | writeConnectionSecretsToNamespace: crossplane-system 31 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-east-1/securitygroup.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: SecurityGroup 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-east-eks-securitygroup 7 | spec: 8 | description: security group for wordpress eks 9 | groupName: argo-east-eks-sg 10 | providerRef: 11 | name: aws-provider-east 12 | reclaimPolicy: Delete 13 | vpcIdRef: 14 | name: argo-east-vpc 15 | --- 16 | apiVersion: network.aws.crossplane.io/v1alpha3 17 | kind: SecurityGroup 18 | metadata: 19 | labels: 20 | provider: aws 21 | name: argo-east-rds-securitygroup 22 | spec: 23 | description: security group for wordpress rds 24 | groupName: argo-east-rds-sg 25 | ingress: 26 | - cidrBlocks: 27 | - cidrIp: 0.0.0.0/0 28 | description: all ips 29 | fromPort: 3306 30 | protocol: tcp 31 | toPort: 3306 32 | providerRef: 33 | name: aws-provider-east 34 | reclaimPolicy: Delete 35 | vpcIdRef: 36 | name: argo-east-vpc 37 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-west-2/securitygroup.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: SecurityGroup 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-west-eks-securitygroup 7 | spec: 8 | description: security group for wordpress eks 9 | groupName: argo-west-eks-sg 10 | providerRef: 11 | name: aws-provider-west 12 | reclaimPolicy: Delete 13 | vpcIdRef: 14 | name: argo-west-vpc 15 | --- 16 | apiVersion: network.aws.crossplane.io/v1alpha3 17 | kind: SecurityGroup 18 | metadata: 19 | labels: 20 | provider: aws 21 | name: argo-west-rds-securitygroup 22 | spec: 23 | description: security group for wordpress rds 24 | groupName: argo-west-rds-sg 25 | ingress: 26 | - cidrBlocks: 27 | - cidrIp: 0.0.0.0/0 28 | description: all ips 29 | fromPort: 3306 30 | protocol: tcp 31 | toPort: 3306 32 | providerRef: 33 | name: aws-provider-west 34 | reclaimPolicy: Delete 35 | vpcIdRef: 36 | name: argo-west-vpc 37 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-east-1/subnet.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: Subnet 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-east-subnet1 7 | spec: 8 | availabilityZone: us-east-1a 9 | cidrBlock: 192.168.64.0/18 10 | providerRef: 11 | name: aws-provider-east 12 | reclaimPolicy: Delete 13 | vpcIdRef: 14 | name: argo-east-vpc 15 | --- 16 | apiVersion: network.aws.crossplane.io/v1alpha3 17 | kind: Subnet 18 | metadata: 19 | labels: 20 | provider: aws 21 | name: argo-east-subnet2 22 | spec: 23 | availabilityZone: us-east-1b 24 | cidrBlock: 192.168.128.0/18 25 | providerRef: 26 | name: aws-provider-east 27 | reclaimPolicy: Delete 28 | vpcIdRef: 29 | name: argo-east-vpc 30 | --- 31 | apiVersion: network.aws.crossplane.io/v1alpha3 32 | kind: Subnet 33 | metadata: 34 | labels: 35 | provider: aws 36 | name: argo-east-subnet3 37 | spec: 38 | availabilityZone: us-east-1c 39 | cidrBlock: 192.168.192.0/18 40 | providerRef: 41 | name: aws-provider-east 42 | reclaimPolicy: Delete 43 | vpcIdRef: 44 | name: argo-east-vpc 45 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-west-2/subnet.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: network.aws.crossplane.io/v1alpha3 2 | kind: Subnet 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-west-subnet1 7 | spec: 8 | availabilityZone: us-west-2a 9 | cidrBlock: 192.168.64.0/18 10 | providerRef: 11 | name: aws-provider-west 12 | reclaimPolicy: Delete 13 | vpcIdRef: 14 | name: argo-west-vpc 15 | --- 16 | apiVersion: network.aws.crossplane.io/v1alpha3 17 | kind: Subnet 18 | metadata: 19 | labels: 20 | provider: aws 21 | name: argo-west-subnet2 22 | spec: 23 | availabilityZone: us-west-2b 24 | cidrBlock: 192.168.128.0/18 25 | providerRef: 26 | name: aws-provider-west 27 | reclaimPolicy: Delete 28 | vpcIdRef: 29 | name: argo-west-vpc 30 | --- 31 | apiVersion: network.aws.crossplane.io/v1alpha3 32 | kind: Subnet 33 | metadata: 34 | labels: 35 | provider: aws 36 | name: argo-west-subnet3 37 | spec: 38 | availabilityZone: us-west-2c 39 | cidrBlock: 192.168.192.0/18 40 | providerRef: 41 | name: aws-provider-west 42 | reclaimPolicy: Delete 43 | vpcIdRef: 44 | name: argo-west-vpc 45 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-east-1/rdsinstanceclass.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.aws.crossplane.io/v1beta1 2 | kind: RDSInstanceClass 3 | metadata: 4 | labels: 5 | engine: mysql 6 | region: east 7 | name: argo-east-rds 8 | specTemplate: 9 | forProvider: 10 | allocatedStorage: 20 11 | dbInstanceClass: db.t2.small 12 | dbSubnetGroupNameRef: 13 | name: argo-east-dbsubnetgroup 14 | engine: mysql 15 | masterUsername: masteruser 16 | skipFinalSnapshotBeforeDeletion: true 17 | vpcSecurityGroupIDRefs: 18 | - name: argo-east-rds-securitygroup 19 | providerRef: 20 | name: aws-provider-east 21 | reclaimPolicy: Delete 22 | writeConnectionSecretsToNamespace: crossplane-system 23 | --- 24 | apiVersion: database.aws.crossplane.io/v1alpha3 25 | kind: DBSubnetGroup 26 | metadata: 27 | name: argo-east-dbsubnetgroup 28 | spec: 29 | groupName: argo-east-dbsubnetgroup 30 | description: EKS vpc to rds 31 | subnetIdRefs: 32 | - name: argo-east-subnet1 33 | - name: argo-east-subnet2 34 | - name: argo-east-subnet3 35 | tags: 36 | - key: name 37 | value: argo-east-dbsubnetgroup 38 | reclaimPolicy: Delete 39 | providerRef: 40 | name: aws-provider-east 41 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-west-2/rdsinstanceclass.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: database.aws.crossplane.io/v1beta1 2 | kind: RDSInstanceClass 3 | metadata: 4 | labels: 5 | engine: mysql 6 | region: west 7 | name: argo-west-rds 8 | specTemplate: 9 | forProvider: 10 | allocatedStorage: 20 11 | dbInstanceClass: db.t2.small 12 | dbSubnetGroupNameRef: 13 | name: argo-west-dbsubnetgroup 14 | engine: mysql 15 | masterUsername: masteruser 16 | skipFinalSnapshotBeforeDeletion: true 17 | vpcSecurityGroupIDRefs: 18 | - name: argo-west-rds-securitygroup 19 | providerRef: 20 | name: aws-provider-west 21 | reclaimPolicy: Delete 22 | writeConnectionSecretsToNamespace: crossplane-system 23 | --- 24 | apiVersion: database.aws.crossplane.io/v1alpha3 25 | kind: DBSubnetGroup 26 | metadata: 27 | name: argo-west-dbsubnetgroup 28 | spec: 29 | groupName: argo-west-dbsubnetgroup 30 | description: EKS vpc to rds 31 | subnetIdRefs: 32 | - name: argo-west-subnet1 33 | - name: argo-west-subnet2 34 | - name: argo-west-subnet3 35 | tags: 36 | - key: name 37 | value: argo-west-dbsubnetgroup 38 | reclaimPolicy: Delete 39 | providerRef: 40 | name: aws-provider-west 41 | -------------------------------------------------------------------------------- /aws/services/compute/kubernetescluster/class.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.aws.crossplane.io/v1alpha3 2 | kind: EKSClusterClass 3 | metadata: 4 | name: ekscluster 5 | specTemplate: 6 | writeConnectionSecretsToNamespace: crossplane-system 7 | region: us-east-1 8 | ## must provide one of roleARN or roleARNRef 9 | # roleARN: arn:aws:iam:::role/ 10 | # roleARNRef: 11 | # name: sample-eks-cluster-role 12 | ## must provide one of vpcId or vpcIdRef 13 | # vpcId: vpc-01 14 | # vpcIdRef: 15 | # name: sample-vpc 16 | ## must provide one of subnetIds or subnetIdRefs 17 | # subnetIds: 18 | # - subnet-01 19 | # - subnet-02 20 | # - subnet-03 21 | # subnetIdRefs: 22 | # - name: sample-subnet1 23 | # - name: sample-subnet2 24 | # - name: sample-subnet3 25 | ## must provide one of securityGroupIds or securityGroupIdRefs 26 | # securityGroupIds: 27 | # - sg-01 28 | # securityGroupIdRefs: 29 | # - name: sample-cluster-sg 30 | workerNodes: 31 | nodeInstanceType: m3.medium 32 | nodeGroupName: demo-nodes 33 | ## must provide one of either clusterControlPlaneSecurityGroup or clusterControlPlaneSecurityGroupRef 34 | # clusterControlPlaneSecurityGroup: sg-01 35 | # clusterControlPlaneSecurityGroupRef: 36 | # name: sample-cluster-sg 37 | providerRef: 38 | name: aws-provider 39 | reclaimPolicy: Delete 40 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/components/tracker-ui-component.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: Component 3 | metadata: 4 | name: service-tracker-ui 5 | spec: 6 | workload: 7 | apiVersion: core.oam.dev/v1alpha2 8 | kind: ContainerizedWorkload 9 | metadata: 10 | name: web-ui 11 | spec: 12 | osType: linux 13 | arch: amd64 14 | containers: 15 | - name: service-tracker-ui 16 | image: sonofjorel/rudr-web-ui:0.49 17 | env: 18 | - name: FLIGHT_API_ROOT 19 | value: "foo" 20 | - name: WEATHER_API_ROOT 21 | value: "foo" 22 | - name: QUAKES_API_ROOT 23 | value: "foo" 24 | ports: 25 | - name: http 26 | containerPort: 8080 27 | protocol: TCP 28 | parameters: 29 | - name: flightsUri 30 | description: uri for flights-api pod 31 | required: true 32 | fieldPaths: 33 | - spec.containers[0].env[0].value 34 | - name: weatherUri 35 | description: uri for weather-api pod 36 | required: true 37 | fieldPaths: 38 | - spec.containers[0].env[1].value 39 | - name: quakesUri 40 | description: uri for quakes-api pod 41 | required: true 42 | fieldPaths: 43 | - spec.containers[0].env[2].value 44 | 45 | -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-east-1/iam.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: identity.aws.crossplane.io/v1alpha3 2 | kind: IAMRole 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-east-iamrole 7 | spec: 8 | assumeRolePolicyDocument: | 9 | { 10 | "Version": "2012-10-17", 11 | "Statement": [ 12 | { 13 | "Effect": "Allow", 14 | "Principal": { 15 | "Service": "eks.amazonaws.com" 16 | }, 17 | "Action": "sts:AssumeRole" 18 | } 19 | ] 20 | } 21 | description: iam role for wordpress eks 22 | providerRef: 23 | name: aws-provider-east 24 | reclaimPolicy: Delete 25 | roleName: argo-east-iamrole 26 | --- 27 | apiVersion: identity.aws.crossplane.io/v1alpha3 28 | kind: IAMRolePolicyAttachment 29 | metadata: 30 | labels: 31 | provider: aws 32 | name: argo-east-cluster-iamrolepolicyattachment 33 | spec: 34 | policyArn: arn:aws:iam::aws:policy/AmazonEKSClusterPolicy 35 | providerRef: 36 | name: aws-provider-east 37 | reclaimPolicy: Delete 38 | roleNameRef: 39 | name: argo-east-iamrole 40 | --- 41 | apiVersion: identity.aws.crossplane.io/v1alpha3 42 | kind: IAMRolePolicyAttachment 43 | metadata: 44 | labels: 45 | provider: aws 46 | name: argo-east-service-iamrolepolicyattachment 47 | spec: 48 | policyArn: arn:aws:iam::aws:policy/AmazonEKSServicePolicy 49 | providerRef: 50 | name: aws-provider-east 51 | reclaimPolicy: Delete 52 | roleNameRef: 53 | name: argo-east-iamrole -------------------------------------------------------------------------------- /guides/aws-argo/infra/us-west-2/iam.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: identity.aws.crossplane.io/v1alpha3 2 | kind: IAMRole 3 | metadata: 4 | labels: 5 | provider: aws 6 | name: argo-west-iamrole 7 | spec: 8 | assumeRolePolicyDocument: | 9 | { 10 | "Version": "2012-10-17", 11 | "Statement": [ 12 | { 13 | "Effect": "Allow", 14 | "Principal": { 15 | "Service": "eks.amazonaws.com" 16 | }, 17 | "Action": "sts:AssumeRole" 18 | } 19 | ] 20 | } 21 | description: iam role for wordpress eks 22 | providerRef: 23 | name: aws-provider-west 24 | reclaimPolicy: Delete 25 | roleName: argo-west-iamrole 26 | --- 27 | apiVersion: identity.aws.crossplane.io/v1alpha3 28 | kind: IAMRolePolicyAttachment 29 | metadata: 30 | labels: 31 | provider: aws 32 | name: argo-west-cluster-iamrolepolicyattachment 33 | spec: 34 | policyArn: arn:aws:iam::aws:policy/AmazonEKSClusterPolicy 35 | providerRef: 36 | name: aws-provider-west 37 | reclaimPolicy: Delete 38 | roleNameRef: 39 | name: argo-west-iamrole 40 | --- 41 | apiVersion: identity.aws.crossplane.io/v1alpha3 42 | kind: IAMRolePolicyAttachment 43 | metadata: 44 | labels: 45 | provider: aws 46 | name: argo-west-service-iamrolepolicyattachment 47 | spec: 48 | policyArn: arn:aws:iam::aws:policy/AmazonEKSServicePolicy 49 | providerRef: 50 | name: aws-provider-west 51 | reclaimPolicy: Delete 52 | roleNameRef: 53 | name: argo-west-iamrole -------------------------------------------------------------------------------- /guides/argo-oam/infra/components/tracker-db-component.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: Component 3 | metadata: 4 | name: tracker-postgres-db 5 | spec: 6 | workload: 7 | apiVersion: core.oam.dev/v1alpha2 8 | kind: ContainerizedWorkload 9 | metadata: 10 | name: db-workload 11 | spec: 12 | osType: linux 13 | arch: amd64 14 | containers: 15 | - name: postgres 16 | image: docker.io/postgres:9.6.17-alpine 17 | env: 18 | - name: POSTGRES_USER 19 | value: "postgres" 20 | - name: POSTGRES_PASSWORD 21 | value: "dbpassword" 22 | - name: POSTGRES_DB 23 | value: "hackfest" 24 | ports: 25 | - name: postgres 26 | containerPort: 5432 27 | protocol: TCP 28 | readinessProbe: 29 | exec: 30 | command: 31 | - echo 32 | failureThreshold: 6 33 | initialDelaySeconds: 5 34 | periodSeconds: 10 35 | successThreshold: 1 36 | timeoutSeconds: 5 37 | livenessProbe: 38 | exec: 39 | command: 40 | - echo 41 | failureThreshold: 6 42 | initialDelaySeconds: 30 43 | periodSeconds: 10 44 | successThreshold: 1 45 | timeoutSeconds: 5 46 | parameters: 47 | - name: dbuser 48 | description: database username 49 | required: false 50 | fieldPaths: 51 | - spec.containers[0].env[0].value 52 | - name: dbpassword 53 | description: database password 54 | required: false 55 | fieldPaths: 56 | - spec.containers[0].env[1].value 57 | - name: database 58 | description: new database 59 | required: false 60 | fieldPaths: 61 | - spec.containers[0].env[2].value -------------------------------------------------------------------------------- /guides/argo-oam/service-tracker/appconfig.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: ApplicationConfiguration 3 | metadata: 4 | name: service-tracker-managed 5 | spec: 6 | components: 7 | - componentName: tracker-managed-postgres-db 8 | parameterValues: 9 | - name: dbconn 10 | value: trackerdbconn 11 | - componentName: data-api 12 | parameterValues: 13 | - name: dbsecret 14 | value: trackerdbconn 15 | - name: dbname 16 | value: postgres 17 | - name: dbport 18 | value: "5432" 19 | - name: dbdriver 20 | value: "postgres" 21 | - name: dboptions 22 | value: "" 23 | - componentName: flights-api 24 | parameterValues: 25 | - name: dataUri 26 | value: "http://data-api.default.svc.cluster.local:3009/" 27 | traits: 28 | - trait: 29 | apiVersion: core.oam.dev/v1alpha2 30 | kind: ManualScalerTrait 31 | metadata: 32 | name: flights-api 33 | spec: 34 | replicaCount: 2 35 | - componentName: quakes-api 36 | parameterValues: 37 | - name: dataUri 38 | value: "http://data-api.default.svc.cluster.local:3009/" 39 | traits: 40 | - trait: 41 | apiVersion: core.oam.dev/v1alpha2 42 | kind: ManualScalerTrait 43 | metadata: 44 | name: quakes-api 45 | spec: 46 | replicaCount: 2 47 | - componentName: weather-api 48 | parameterValues: 49 | - name: dataUri 50 | value: "http://data-api.default.svc.cluster.local:3009/" 51 | traits: 52 | - trait: 53 | apiVersion: core.oam.dev/v1alpha2 54 | kind: ManualScalerTrait 55 | metadata: 56 | name: weather-api 57 | spec: 58 | replicaCount: 2 59 | - componentName: service-tracker-ui 60 | parameterValues: 61 | - name: flightsUri 62 | value: "http://flights-api.default.svc.cluster.local:3003/" 63 | - name: weatherUri 64 | value: "http://weather-api.default.svc.cluster.local:3015/" 65 | - name: quakesUri 66 | value: "http://quakes-api.default.svc.cluster.local:3012/" -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/gcp/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: compute.gcp.crossplane.io/v1alpha3 2 | kind: Network 3 | metadata: 4 | name: network 5 | spec: 6 | name: argo-demo-network 7 | --- 8 | apiVersion: compute.gcp.crossplane.io/v1alpha3 9 | kind: Subnetwork 10 | metadata: 11 | name: subnetwork 12 | spec: 13 | name: argo-demo-subnetwork 14 | ipCidrRange: "192.168.0.0/24" 15 | privateIpGoogleAccess: true 16 | secondaryIpRanges: 17 | - rangeName: pods 18 | ipCidrRange: 10.128.0.0/20 19 | - rangeName: services 20 | ipCidrRange: 172.16.0.0/16 21 | networkRef: 22 | name: argo-network 23 | --- 24 | apiVersion: compute.gcp.crossplane.io/v1alpha3 25 | kind: GlobalAddress 26 | metadata: 27 | name: globaladdress 28 | spec: 29 | name: argo-demo-globaladdress 30 | networkRef: 31 | name: argo-network 32 | --- 33 | apiVersion: servicenetworking.gcp.crossplane.io/v1alpha3 34 | kind: Connection 35 | metadata: 36 | name: connection 37 | spec: 38 | parent: services/servicenetworking.googleapis.com 39 | networkRef: 40 | name: argo-network 41 | reservedPeeringRangeRefs: 42 | - name: argo-globaladdress 43 | --- 44 | apiVersion: database.gcp.crossplane.io/v1beta1 45 | kind: CloudSQLInstanceClass 46 | metadata: 47 | name: dev-gcp-cloudsqlinstancemysql 48 | specTemplate: 49 | forProvider: 50 | region: us-central1 51 | settings: 52 | ipConfiguration: 53 | privateNetworkRef: 54 | name: argo-network 55 | --- 56 | apiVersion: compute.gcp.crossplane.io/v1alpha3 57 | kind: GKEClusterClass 58 | metadata: 59 | name: dev-gcp-gkecluster 60 | specTemplate: 61 | networkRef: 62 | name: argo-network 63 | subnetworkRef: 64 | name: argo-subnetwork 65 | enableIPAlias: true 66 | clusterSecondaryRangeName: pods 67 | servicesSecondaryRangeName: services 68 | --- 69 | apiVersion: database.gcp.crossplane.io/v1beta1 70 | kind: CloudSQLInstanceClass 71 | metadata: 72 | name: prod-gcp-cloudsqlinstancemysql 73 | specTemplate: 74 | forProvider: 75 | region: us-central1 76 | settings: 77 | ipConfiguration: 78 | privateNetworkRef: 79 | name: argo-network 80 | --- 81 | apiVersion: compute.gcp.crossplane.io/v1alpha3 82 | kind: GKEClusterClass 83 | metadata: 84 | name: prod-gcp-gkecluster 85 | specTemplate: 86 | networkRef: 87 | name: argo-network 88 | subnetworkRef: 89 | name: argo-subnetwork 90 | enableIPAlias: true 91 | clusterSecondaryRangeName: pods 92 | servicesSecondaryRangeName: services 93 | -------------------------------------------------------------------------------- /guides/aws-argo/app-1/kubernetesapplication.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: workload.crossplane.io/v1alpha1 2 | kind: KubernetesApplication 3 | metadata: 4 | name: wordpress-west 5 | labels: 6 | app: wordpress-west 7 | spec: 8 | resourceSelector: 9 | matchLabels: 10 | app: wordpress-west 11 | targetSelector: 12 | matchLabels: 13 | app: wordpress-west 14 | resourceTemplates: 15 | - metadata: 16 | name: wordpress-west-namespace 17 | labels: 18 | app: wordpress-west 19 | spec: 20 | template: 21 | apiVersion: v1 22 | kind: Namespace 23 | metadata: 24 | name: wordpress 25 | labels: 26 | app: wordpress 27 | - metadata: 28 | name: wordpress-west-deployment 29 | labels: 30 | app: wordpress-west 31 | spec: 32 | secrets: 33 | - name: sql-west 34 | template: 35 | apiVersion: apps/v1 36 | kind: Deployment 37 | metadata: 38 | namespace: wordpress 39 | name: wordpress 40 | labels: 41 | app: wordpress 42 | spec: 43 | selector: 44 | matchLabels: 45 | app: wordpress 46 | template: 47 | metadata: 48 | labels: 49 | app: wordpress 50 | spec: 51 | containers: 52 | - name: wordpress 53 | image: wordpress:4.6.1-apache 54 | env: 55 | - name: WORDPRESS_DB_HOST 56 | valueFrom: 57 | secretKeyRef: 58 | name: wordpress-west-deployment-sql-west 59 | key: endpoint 60 | - name: WORDPRESS_DB_USER 61 | valueFrom: 62 | secretKeyRef: 63 | name: wordpress-west-deployment-sql-west 64 | key: username 65 | - name: WORDPRESS_DB_PASSWORD 66 | valueFrom: 67 | secretKeyRef: 68 | name: wordpress-west-deployment-sql-west 69 | key: password 70 | ports: 71 | - containerPort: 80 72 | name: wordpress 73 | - metadata: 74 | name: wordpress-west-service 75 | labels: 76 | app: wordpress-west 77 | spec: 78 | template: 79 | apiVersion: v1 80 | kind: Service 81 | metadata: 82 | namespace: wordpress 83 | name: wordpress 84 | labels: 85 | app: wordpress 86 | spec: 87 | ports: 88 | - port: 80 89 | selector: 90 | app: wordpress 91 | type: LoadBalancer 92 | -------------------------------------------------------------------------------- /guides/aws-argo/app-2/kubernetesapplication.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: workload.crossplane.io/v1alpha1 2 | kind: KubernetesApplication 3 | metadata: 4 | name: wordpress-east 5 | labels: 6 | app: wordpress-east 7 | spec: 8 | resourceSelector: 9 | matchLabels: 10 | app: wordpress-east 11 | targetSelector: 12 | matchLabels: 13 | app: wordpress-east 14 | resourceTemplates: 15 | - metadata: 16 | name: wordpress-east-namespace 17 | labels: 18 | app: wordpress-east 19 | spec: 20 | template: 21 | apiVersion: v1 22 | kind: Namespace 23 | metadata: 24 | name: wordpress 25 | labels: 26 | app: wordpress 27 | - metadata: 28 | name: wordpress-east-deployment 29 | labels: 30 | app: wordpress-east 31 | spec: 32 | secrets: 33 | - name: sql-east 34 | template: 35 | apiVersion: apps/v1 36 | kind: Deployment 37 | metadata: 38 | namespace: wordpress 39 | name: wordpress 40 | labels: 41 | app: wordpress 42 | spec: 43 | selector: 44 | matchLabels: 45 | app: wordpress 46 | template: 47 | metadata: 48 | labels: 49 | app: wordpress 50 | spec: 51 | containers: 52 | - name: wordpress 53 | image: wordpress:4.6.1-apache 54 | env: 55 | - name: WORDPRESS_DB_HOST 56 | valueFrom: 57 | secretKeyRef: 58 | name: wordpress-east-deployment-sql-east 59 | key: endpoint 60 | - name: WORDPRESS_DB_USER 61 | valueFrom: 62 | secretKeyRef: 63 | name: wordpress-east-deployment-sql-east 64 | key: username 65 | - name: WORDPRESS_DB_PASSWORD 66 | valueFrom: 67 | secretKeyRef: 68 | name: wordpress-east-deployment-sql-east 69 | key: password 70 | ports: 71 | - containerPort: 80 72 | name: wordpress 73 | - metadata: 74 | name: wordpress-east-service 75 | labels: 76 | app: wordpress-east 77 | spec: 78 | template: 79 | apiVersion: v1 80 | kind: Service 81 | metadata: 82 | namespace: wordpress 83 | name: wordpress 84 | labels: 85 | app: wordpress 86 | spec: 87 | ports: 88 | - port: 80 89 | selector: 90 | app: wordpress 91 | type: LoadBalancer 92 | -------------------------------------------------------------------------------- /guides/argo-oam/infra/components/tracker-data-component.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: core.oam.dev/v1alpha2 2 | kind: Component 3 | metadata: 4 | name: data-api 5 | spec: 6 | workload: 7 | apiVersion: core.oam.dev/v1alpha2 8 | kind: ContainerizedWorkload 9 | metadata: 10 | name: data-api 11 | spec: 12 | osType: linux 13 | arch: amd64 14 | containers: 15 | - name: data-api 16 | image: artursouza/rudr-data-api:0.50 17 | env: 18 | - name: DATABASE_USER 19 | fromSecret: 20 | name: postgresqlconn 21 | key: username 22 | - name: DATABASE_PASSWORD 23 | fromSecret: 24 | name: postgresqlconn 25 | key: password 26 | - name: DATABASE_HOSTNAME 27 | fromSecret: 28 | name: postgresqlconn 29 | key: endpoint 30 | - name: DATABASE_NAME 31 | value: postgres 32 | - name: DATABASE_PORT 33 | value: 5432 34 | - name: DATABASE_DRIVER 35 | value: postgres 36 | - name: DATABASE_OPTIONS 37 | value: "" 38 | ports: 39 | - name: http 40 | containerPort: 3009 41 | protocol: TCP 42 | readinessProbe: 43 | exec: 44 | command: 45 | - wget 46 | - -q 47 | - 'http://127.0.0.1:3009/status' 48 | - -O 49 | - /dev/null 50 | - -S 51 | failureThreshold: 6 52 | initialDelaySeconds: 5 53 | periodSeconds: 10 54 | successThreshold: 1 55 | timeoutSeconds: 5 56 | livenessProbe: 57 | exec: 58 | command: 59 | - wget 60 | - -q 61 | - 'http://127.0.0.1:3009/status' 62 | - -O 63 | - /dev/null 64 | - -S 65 | failureThreshold: 6 66 | initialDelaySeconds: 30 67 | periodSeconds: 10 68 | successThreshold: 1 69 | timeoutSeconds: 5 70 | parameters: 71 | - name: dbsecret 72 | description: secret with database connection information 73 | required: false 74 | fieldPaths: 75 | - spec.containers[0].env[0].fromSecret.name 76 | - spec.containers[0].env[1].fromSecret.name 77 | - spec.containers[0].env[2].fromSecret.name 78 | - name: dbname 79 | description: database name 80 | required: false 81 | fieldPaths: 82 | - spec.containers[0].env[3].value 83 | - name: dbport 84 | description: database port number 85 | required: false 86 | fieldPaths: 87 | - spec.containers[0].env[4].value 88 | - name: dbdriver 89 | description: database driver - one of 'mysql' | 'mariadb' | 'postgres' | 'mssql' 90 | required: false 91 | fieldPaths: 92 | - spec.containers[0].env[5].value 93 | - name: dboptions 94 | description: config as JSON 95 | required: false 96 | fieldPaths: 97 | - spec.containers[0].env[6].value 98 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CrossCD 2 | 3 | CrossCD is an infrastructure configuration library that allows you to bootstrap 4 | entire environments for provisioning resources across clouds from a Kubernetes 5 | cluster. 6 | 7 | ## Quick Start 8 | 9 | If you do not want full environment configuration and are just looking to try 10 | out Crossplane, you can install a multi-cloud `dev` environment with the 11 | following command: 12 | 13 | ```bash 14 | kubectl apply -k ./classpacks/quickstart 15 | ``` 16 | 17 | This will create a `dev` environment, populated with a class for each provider 18 | for all resource types that support dynamic provisioning. It will also make 19 | `AWS` resources the `default` option when you create unopinionated claims. Note 20 | that this does not statically provision any managed resources, so types like the 21 | GCP `Network` are not included because they are not currently supported by 22 | dynamic provisioning. 23 | 24 | ## Further Customization 25 | 26 | Every bottom-level directory in each `{provider-name}/services` provides its own 27 | `kustomization.yaml file` that specifies the resources present and also labels 28 | them with the provider name. In [kustomize] language this is referred to as a 29 | [base]. All other `kustomization.yaml` files are [overlays]. Overlays reference 30 | bases and apply additional configuration or [patches], which allow you to 31 | replace parts of the base-level resources. In this repository, each base 32 | provides all *required* fields for validation, but may not include every field 33 | required for successful provisioning. For example, fields that require one of 34 | two fields have both omitted in the base, such that overlays do not have to 35 | delete fields. This means that some bases will *require* an overlay in order to 36 | be successfully utilized for dynamic provisioning. 37 | 38 | Customizing can take the form of either modifying bases or creating and 39 | combining new overlays. For instance, when you run `kubectl apply -k .` in the 40 | top-level directory of this repository, the `kustomization.yaml` is an overlay 41 | for each of the provider's 42 | `{provider-name}/environments/full/kustomization.yaml`, which is an overlay for 43 | each of the `kustomization.yaml` files in the `dev`, `stage`, and `prod` 44 | directories, which in turn are overlays for the 45 | `{provider-name}/services/kustomization.yaml`, which is itself an overlay for 46 | each type's `kustomization.yaml` (which are the base files we mentioned 47 | earlier). This can be somewhat confusing, but it is always safe to start out 48 | with the base files and then build up one layer at a time. 49 | 50 | ## Naming 51 | 52 | When looking at bases in this repository, files with managed resources are named 53 | `resource.yaml`. If you apply a base of this type in your Crossplane cluster, it 54 | will lead to the attempted provisioning of an external resource. Files named 55 | `class.yaml` denote resource classes, which provide configuration for 56 | provisioning external resources, but will not lead to actual provisioning until 57 | a compatible claim is created. 58 | 59 | 60 | [kustomize]: https://github.com/kubernetes-sigs/kustomize 61 | [base]: https://github.com/kubernetes-sigs/kustomize/blob/master/docs/glossary.md#base 62 | [overlays]: https://github.com/kubernetes-sigs/kustomize/blob/master/docs/glossary.md#overlay 63 | [patches]: https://github.com/kubernetes-sigs/kustomize/blob/master/docs/glossary.md#patch -------------------------------------------------------------------------------- /apps/wordpress/app.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: workload.crossplane.io/v1alpha1 2 | kind: KubernetesApplication 3 | metadata: 4 | name: wordpress-demo 5 | labels: 6 | app: wordpress-demo 7 | spec: 8 | resourceSelector: 9 | matchLabels: 10 | app: wordpress-demo 11 | clusterSelector: 12 | matchLabels: 13 | app: wordpress-demo 14 | resourceTemplates: 15 | - metadata: 16 | name: wordpress-demo-namespace 17 | labels: 18 | app: wordpress-demo 19 | spec: 20 | template: 21 | apiVersion: v1 22 | kind: Namespace 23 | metadata: 24 | name: wordpress 25 | labels: 26 | app: wordpress 27 | - metadata: 28 | name: wordpress-demo-deployment 29 | labels: 30 | app: wordpress-demo 31 | spec: 32 | secrets: 33 | # This must match the writeConnectionSecretToRef field 34 | # on the database claim; it is the name of the secret to 35 | # pull from the crossplane cluster, from this Application's namespace. 36 | - name: sql 37 | template: 38 | apiVersion: apps/v1 39 | kind: Deployment 40 | metadata: 41 | namespace: wordpress 42 | name: wordpress 43 | labels: 44 | app: wordpress 45 | spec: 46 | selector: 47 | matchLabels: 48 | app: wordpress 49 | template: 50 | metadata: 51 | labels: 52 | app: wordpress 53 | spec: 54 | containers: 55 | - name: wordpress 56 | image: wordpress:4.6.1-apache 57 | env: 58 | - name: WORDPRESS_DB_HOST 59 | valueFrom: 60 | secretKeyRef: 61 | # This is the name of the secret to use to consume the secret 62 | # within the managed cluster. The reason it's different from the 63 | # name of the secret above is because within the managed cluster, 64 | # a crossplane-managed secret is written as '{metadata.name}-{secretname}'. 65 | # The metadata name is specified above for this resource, and so is 66 | # the secret name. 67 | name: wordpress-demo-deployment-sql 68 | key: endpoint 69 | - name: WORDPRESS_DB_USER 70 | valueFrom: 71 | secretKeyRef: 72 | name: wordpress-demo-deployment-sql 73 | key: username 74 | - name: WORDPRESS_DB_PASSWORD 75 | valueFrom: 76 | secretKeyRef: 77 | name: wordpress-demo-deployment-sql 78 | key: password 79 | ports: 80 | - containerPort: 80 81 | name: wordpress 82 | - metadata: 83 | name: wordpress-demo-service 84 | labels: 85 | app: wordpress-demo 86 | spec: 87 | template: 88 | apiVersion: v1 89 | kind: Service 90 | metadata: 91 | namespace: wordpress 92 | name: wordpress 93 | labels: 94 | app: wordpress 95 | spec: 96 | ports: 97 | - port: 80 98 | selector: 99 | app: wordpress 100 | type: LoadBalancer 101 | -------------------------------------------------------------------------------- /classpacks/workflow/argo/infra/aws/patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: identity.aws.crossplane.io/v1alpha3 2 | kind: IAMRolePolicyAttachment 3 | metadata: 4 | name: cluster-iamrolepolicyattachment 5 | spec: 6 | roleNameRef: 7 | name: argo-iamrole 8 | --- 9 | apiVersion: identity.aws.crossplane.io/v1alpha3 10 | kind: IAMRolePolicyAttachment 11 | metadata: 12 | name: service-iamrolepolicyattachment 13 | spec: 14 | roleNameRef: 15 | name: argo-iamrole 16 | --- 17 | apiVersion: database.aws.crossplane.io/v1alpha3 18 | kind: DBSubnetGroup 19 | metadata: 20 | name: dbsubnetgroup 21 | spec: 22 | groupName: argo-demo-dbsubnetgroup 23 | subnetIdRefs: 24 | - name: argo-subnet1 25 | - name: argo-subnet2 26 | - name: argo-subnet3 27 | tags: 28 | - key: name 29 | value: argo-demo-dbsubnetgroup 30 | --- 31 | apiVersion: network.aws.crossplane.io/v1alpha3 32 | kind: SecurityGroup 33 | metadata: 34 | name: eks-securitygroup 35 | spec: 36 | vpcIdRef: 37 | name: argo-vpc 38 | --- 39 | apiVersion: network.aws.crossplane.io/v1alpha3 40 | kind: SecurityGroup 41 | metadata: 42 | name: rds-securitygroup 43 | spec: 44 | vpcIdRef: 45 | name: argo-vpc 46 | --- 47 | apiVersion: identity.aws.crossplane.io/v1alpha3 48 | kind: IAMRole 49 | metadata: 50 | name: iamrole 51 | spec: 52 | roleName: argo-demo-iamrole 53 | description: iam role for wordpress eks 54 | --- 55 | apiVersion: network.aws.crossplane.io/v1alpha3 56 | kind: InternetGateway 57 | metadata: 58 | name: internetgateway 59 | spec: 60 | vpcIdRef: 61 | name: argo-vpc 62 | --- 63 | apiVersion: network.aws.crossplane.io/v1alpha3 64 | kind: RouteTable 65 | metadata: 66 | name: routetable 67 | spec: 68 | vpcIdRef: 69 | name: argo-vpc 70 | routes: 71 | - destinationCidrBlock: 0.0.0.0/0 72 | gatewayIdRef: 73 | name: argo-internetgateway 74 | associations: 75 | - subnetIdRef: 76 | name: argo-subnet1 77 | - subnetIdRef: 78 | name: argo-subnet2 79 | - subnetIdRef: 80 | name: argo-subnet3 81 | --- 82 | apiVersion: network.aws.crossplane.io/v1alpha3 83 | kind: Subnet 84 | metadata: 85 | name: subnet1 86 | spec: 87 | vpcIdRef: 88 | name: argo-vpc 89 | --- 90 | apiVersion: network.aws.crossplane.io/v1alpha3 91 | kind: Subnet 92 | metadata: 93 | name: subnet2 94 | spec: 95 | vpcIdRef: 96 | name: argo-vpc 97 | --- 98 | apiVersion: network.aws.crossplane.io/v1alpha3 99 | kind: Subnet 100 | metadata: 101 | name: subnet3 102 | spec: 103 | vpcIdRef: 104 | name: argo-vpc 105 | --- 106 | apiVersion: network.aws.crossplane.io/v1alpha3 107 | kind: VPC 108 | metadata: 109 | name: vpc 110 | spec: 111 | cidrBlock: 192.168.0.0/16 112 | enableDnsSupport: true 113 | enableDnsHostNames: true 114 | --- 115 | apiVersion: compute.aws.crossplane.io/v1alpha3 116 | kind: EKSClusterClass 117 | metadata: 118 | name: dev-aws-ekscluster 119 | specTemplate: 120 | region: us-west-2 121 | roleARNRef: 122 | name: argo-iamrole 123 | vpcIdRef: 124 | name: argo-vpc 125 | subnetIdRefs: 126 | - name: argo-subnet1 127 | - name: argo-subnet2 128 | - name: argo-subnet3 129 | securityGroupIdRefs: 130 | - name: argo-eks-securitygroup 131 | workerNodes: 132 | nodeInstanceType: m3.medium 133 | nodeGroupName: argo-demo-nodes 134 | nodeAutoScalingGroupMinSize: 1 135 | nodeAutoScalingGroupMaxSize: 1 136 | clusterControlPlaneSecurityGroupRef: 137 | name: argo-eks-securitygroup 138 | --- 139 | apiVersion: database.aws.crossplane.io/v1beta1 140 | kind: RDSInstanceClass 141 | metadata: 142 | name: dev-aws-rdsinstancemysql 143 | specTemplate: 144 | forProvider: 145 | dbInstanceClass: db.t2.small 146 | masterUsername: masteruser 147 | allocatedStorage: 20 148 | vpcSecurityGroupIDRefs: 149 | - name: argo-rds-securitygroup 150 | dbSubnetGroupNameRef: 151 | name: argo-dbsubnetgroup 152 | --------------------------------------------------------------------------------