Skip to content

Commit

Permalink
Merge pull request #39 from ytsarev/database
Browse files Browse the repository at this point in the history
Add Database abstraction and README update
  • Loading branch information
ytsarev authored Oct 31, 2022
2 parents 8873571 + 69bb0f7 commit bba9e81
Show file tree
Hide file tree
Showing 19 changed files with 417 additions and 186 deletions.
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ PLATFORMS ?= linux_amd64

UP_VERSION = v0.14.0
UP_CHANNEL = stable
UPTEST_VERSION = v0.1.1
UPTEST_VERSION = v0.2.0

-include build/makelib/k8s_tools.mk
# ====================================================================================
Expand Down Expand Up @@ -56,7 +56,7 @@ build.init: $(UP)
# End to End Testing
uptest: build $(UPTEST) $(KUBECTL) $(KUTTL) local.xpkg.deploy.configuration.$(PROJECT_NAME)
@$(INFO) running automated tests
@KUBECTL=$(KUBECTL) KUTTL=$(KUTTL) $(UPTEST) e2e examples/cluster-claim.yaml --setup-script=test/setup.sh --default-timeout=2400 || $(FAIL)
@KUBECTL=$(KUBECTL) KUTTL=$(KUTTL) $(UPTEST) e2e examples/cluster-claim.yaml,examples/postgres-claim.yaml --setup-script=test/setup.sh --default-timeout=3600 || $(FAIL)
@$(OK) running automated tests

e2e: controlplane.up uptest
e2e: controlplane.up uptest
350 changes: 202 additions & 148 deletions README.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion examples/cluster-claim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ metadata:
name: platform-ref-gcp-cluster
namespace: default
annotations:
uptest.upbound.io/post-assert-hook: testhooks/delete-release.sh
uptest.upbound.io/pre-delete-hook: testhooks/delete-release.sh
spec:
compositionSelector:
matchLabels:
Expand Down
2 changes: 1 addition & 1 deletion examples/configuration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ kind: Configuration
metadata:
name: upbound-platform-ref-gcp
spec:
package: xpkg.upbound.io/upbound/platform-ref-gcp:v0.2.1
package: xpkg.upbound.io/upbound/platform-ref-gcp:v0.3.0
packagePullSecrets:
- name: package-pull-secret
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ metadata:
spec:
credentials:
secretRef:
key: key
key: credentials
name: gcp-creds
namespace: upbound-system
source: Secret
Expand Down
2 changes: 1 addition & 1 deletion examples/network-xr.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
apiVersion: gcp.platformref.upbound.io/v1alpha1
kind: CompositeNetwork
kind: XNetwork
metadata:
name: platform-ref-gcp-cluster
spec:
Expand Down
27 changes: 27 additions & 0 deletions examples/postgres-claim.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
apiVersion: gcp.platformref.upbound.io/v1alpha1
kind: PostgreSQLInstance
metadata:
name: platform-ref-gcp-db
namespace: default
annotations:
uptest.upbound.io/pre-delete-hook: testhooks/delete-sql-user.sh
spec:
parameters:
storageGB: 10
passwordSecretRef:
namespace: default
name: psqlsecret
key: password
clusterRef:
id: platform-ref-gcp-cluster
writeConnectionSecretToRef:
name: platform-ref-gcp-db-conn
---
apiVersion: v1
data:
password: dXBiMHVuZHIwY2s1ITMxMzM3
kind: Secret
metadata:
name: psqlsecret
namespace: default
type: Opaque
3 changes: 2 additions & 1 deletion examples/testhooks/delete-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@
set -aeuo pipefail

# Delete the release before deleting the cluster not to orphan the release object
# Use explicit ordering of the sql resources to avoid database stuck
# Note(turkenh): This is a workaround for the infamous dependency problem during deletion.
${KUBECTL} delete release --all
${KUBECTL} delete release.helm.crossplane.io --all
7 changes: 7 additions & 0 deletions examples/testhooks/delete-sql-user.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
set -aeuo pipefail

# Delete the sql user before deleting the database not to orphan the user object
# Use explicit ordering of the sql resources to avoid database stuck
# Note(turkenh): This is a workaround for the infamous dependency problem during deletion.
${KUBECTL} delete user.sql.gcp.upbound.io --all
12 changes: 6 additions & 6 deletions package/cluster/composition.yaml
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: gke.compositeclusters.gcp.platformref.upbound.io
name: xclusters.gcp.platformref.upbound.io
labels:
provider: GCP
spec:
writeConnectionSecretsToNamespace: upbound-system
compositeTypeRef:
apiVersion: gcp.platformref.upbound.io/v1alpha1
kind: CompositeCluster
kind: XCluster
resources:
- base:
apiVersion: gcp.platformref.upbound.io/v1alpha1
kind: CompositeNetwork
kind: XNetwork
patches:
- fromFieldPath: spec.id
toFieldPath: spec.id
- base:
apiVersion: gcp.platformref.upbound.io/v1alpha1
kind: GKE
kind: XGKE
connectionDetails:
- fromConnectionSecretKey: kubeconfig
patches:
Expand All @@ -37,10 +37,10 @@ spec:
- fromFieldPath: spec.parameters.nodes.size
toFieldPath: spec.parameters.nodes.size
- fromFieldPath: spec.id
toFieldPath: spec.parameters.compositeNetworkSelector.matchLabels[networks.gcp.platformref.upbound.io/network-id]
toFieldPath: spec.parameters.XNetworkSelector.matchLabels[networks.gcp.platformref.upbound.io/network-id]
- base:
apiVersion: gcp.platformref.upbound.io/v1alpha1
kind: Services
kind: XServices
patches:
- fromFieldPath: spec.id
toFieldPath: spec.providerConfigRef.name
Expand Down
6 changes: 3 additions & 3 deletions package/cluster/definition.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
name: compositeclusters.gcp.platformref.upbound.io
name: xclusters.gcp.platformref.upbound.io
spec:
claimNames:
kind: Cluster
Expand All @@ -10,8 +10,8 @@ spec:
- kubeconfig
group: gcp.platformref.upbound.io
names:
kind: CompositeCluster
plural: compositeclusters
kind: XCluster
plural: xclusters
versions:
- name: v1alpha1
served: true
Expand Down
12 changes: 6 additions & 6 deletions package/cluster/gke/composition.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: gke.gcp.platformref.upbound.io
name: xgke.gcp.platformref.upbound.io
labels:
provider: GCP
spec:
writeConnectionSecretsToNamespace: upbound-system
compositeTypeRef:
apiVersion: gcp.platformref.upbound.io/v1alpha1
kind: GKE
kind: XGKE
resources:
- name: service-account
base:
Expand Down Expand Up @@ -99,9 +99,9 @@ spec:
- fromFieldPath: spec.writeConnectionSecretToRef.namespace
toFieldPath: spec.writeConnectionSecretToRef.namespace
# Create this cluster in the Network and Subnetwork referenced by network ID
- fromFieldPath: spec.parameters.compositeNetworkSelector.matchLabels
- fromFieldPath: spec.parameters.XNetworkSelector.matchLabels
toFieldPath: spec.forProvider.networkSelector.matchLabels
- fromFieldPath: spec.parameters.compositeNetworkSelector.matchLabels
- fromFieldPath: spec.parameters.XNetworkSelector.matchLabels
toFieldPath: spec.forProvider.subnetworkSelector.matchLabels
- fromFieldPath: status.gke.serviceAccount
toFieldPath: spec.forProvider.nodeConfig[0].serviceAccount
Expand All @@ -128,9 +128,9 @@ spec:
- minNodeCount: 1
maxNodeCount: 3
nodeConfig:
- diskType: pd-standard
diskSizeGb: 100
- diskSizeGb: 10
imageType: COS_CONTAINERD
machineType: e2-medium
preemptible: true
shieldedInstanceConfig:
- enableIntegrityMonitoring: true
Expand Down
10 changes: 5 additions & 5 deletions package/cluster/gke/definition.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
name: gke.gcp.platformref.upbound.io
name: xgke.gcp.platformref.upbound.io
spec:
connectionSecretKeys:
- kubeconfig
group: gcp.platformref.upbound.io
names:
kind: GKE
plural: gke
kind: XGKE
plural: xgke
versions:
- name: v1alpha1
served: true
Expand Down Expand Up @@ -48,13 +48,13 @@ spec:
required:
- count
- size
compositeNetworkSelector:
XNetworkSelector:
type: object
properties:
matchLabels:
additionalProperties:
type: string
description: MatchLabels ensures a CompositeNetwork with matching labels
description: MatchLabels ensures a XNetwork with matching labels
is selected.
type: object
required:
Expand Down
6 changes: 4 additions & 2 deletions package/cluster/network/composition.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: gcp.compositenetworks.gcp.platformref.upbound.io
name: xnetworks.gcp.platformref.upbound.io
labels:
provider: GCP
spec:
writeConnectionSecretsToNamespace: upbound-system
compositeTypeRef:
apiVersion: gcp.platformref.upbound.io/v1alpha1
kind: CompositeNetwork
kind: XNetwork
resources:
- base:
apiVersion: compute.gcp.upbound.io/v1beta1
Expand All @@ -18,6 +18,8 @@ spec:
autoCreateSubnetworks: false
routingMode: REGIONAL
patches:
- fromFieldPath: spec.id
toFieldPath: metadata.name
- fromFieldPath: spec.id
toFieldPath: metadata.labels[networks.gcp.platformref.upbound.io/network-id]
- base:
Expand Down
6 changes: 3 additions & 3 deletions package/cluster/network/definition.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
name: compositenetworks.gcp.platformref.upbound.io
name: xnetworks.gcp.platformref.upbound.io
spec:
group: gcp.platformref.upbound.io
names:
kind: CompositeNetwork
plural: compositenetworks
kind: XNetwork
plural: xnetworks
versions:
- name: v1alpha1
served: true
Expand Down
4 changes: 2 additions & 2 deletions package/cluster/services/composition.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: services.gcp.platformref.upbound.io
name: xservices.gcp.platformref.upbound.io
labels:
provider: helm
spec:
writeConnectionSecretsToNamespace: upbound-system
compositeTypeRef:
apiVersion: gcp.platformref.upbound.io/v1alpha1
kind: Services
kind: XServices
resources:
- base:
apiVersion: helm.crossplane.io/v1beta1
Expand Down
6 changes: 3 additions & 3 deletions package/cluster/services/definition.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
name: services.gcp.platformref.upbound.io
name: xservices.gcp.platformref.upbound.io
spec:
group: gcp.platformref.upbound.io
names:
kind: Services
plural: services
kind: XServices
plural: xservices
versions:
- name: v1alpha1
served: true
Expand Down
79 changes: 79 additions & 0 deletions package/database/postgres/composition.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: xpostgresqlinstances.gcp.platformref.upbound.io
labels:
provider: gcp
spec:
writeConnectionSecretsToNamespace: upbound-system
compositeTypeRef:
apiVersion: gcp.platformref.upbound.io/v1alpha1
kind: XPostgreSQLInstance
resources:
- name: PrivateIPAddress
base:
apiVersion: compute.gcp.upbound.io/v1beta1
kind: GlobalAddress
spec:
forProvider:
addressType: INTERNAL
prefixLength: 16
purpose: VPC_PEERING
patches:
- fromFieldPath: spec.parameters.clusterRef.id
toFieldPath: spec.forProvider.networkSelector.matchLabels[networks.gcp.platformref.upbound.io/network-id]
- name: PrivateConnection
base:
apiVersion: servicenetworking.gcp.upbound.io/v1beta1
kind: Connection
spec:
forProvider:
reservedPeeringRangesSelector:
matchControllerRef: true
service: servicenetworking.googleapis.com
patches:
- fromFieldPath: spec.parameters.clusterRef.id
toFieldPath: spec.forProvider.networkSelector.matchLabels[networks.gcp.platformref.upbound.io/network-id]
- name: DatabaseUser
base:
apiVersion: sql.gcp.upbound.io/v1beta1
kind: User
spec:
forProvider:
instanceSelector:
matchControllerRef: true
patches:
- fromFieldPath: spec.parameters.passwordSecretRef.namespace
toFieldPath: spec.forProvider.passwordSecretRef.namespace
- fromFieldPath: spec.parameters.passwordSecretRef.name
toFieldPath: spec.forProvider.passwordSecretRef.name
- fromFieldPath: spec.parameters.passwordSecretRef.key
toFieldPath: spec.forProvider.passwordSecretRef.key
- name: DBInstance
base:
apiVersion: sql.gcp.upbound.io/v1beta1
kind: DatabaseInstance
spec:
forProvider:
databaseVersion: POSTGRES_13
deletionProtection: false
region: us-west2
settings:
- diskSize: 20
tier: db-f1-micro
patches:
- fromFieldPath: metadata.uid
toFieldPath: spec.writeConnectionSecretToRef.name
transforms:
- type: string
string:
fmt: "%s-gcp-postgresql"
- fromFieldPath: spec.writeConnectionSecretToRef.namespace
toFieldPath: spec.writeConnectionSecretToRef.namespace
- fromFieldPath: spec.parameters.storageGB
toFieldPath: spec.forProvider.settings[0].diskSize
- fromFieldPath: spec.parameters.clusterRef.id
toFieldPath: spec.forProvider.settings[0].ipConfiguration[0].privateNetworkRef.name
connectionDetails:
- fromConnectionSecretKey: privateIP
- fromConnectionSecretKey: serverCACertificateCert
Loading

0 comments on commit bba9e81

Please sign in to comment.