feat: organize all services into separate stacks by dependency
This commit is contained in:
@@ -1,14 +1,9 @@
|
||||
import { HelmProvider } from "@cdktf/provider-helm/lib/provider";
|
||||
import { Release } from "@cdktf/provider-helm/lib/release";
|
||||
import { Manifest } from "@cdktf/provider-kubernetes/lib/manifest";
|
||||
import { KubernetesProvider } from "@cdktf/provider-kubernetes/lib/provider";
|
||||
import { Construct } from "constructs";
|
||||
|
||||
type PostgresClusterOptions = {
|
||||
providers: {
|
||||
kubernetes: KubernetesProvider;
|
||||
helm: HelmProvider;
|
||||
};
|
||||
provider: KubernetesProvider;
|
||||
name: string;
|
||||
namespace: string;
|
||||
users: string[];
|
||||
@@ -22,16 +17,7 @@ export class PostgresCluster extends Construct {
|
||||
constructor(scope: Construct, id: string, options: PostgresClusterOptions) {
|
||||
super(scope, id);
|
||||
|
||||
const { kubernetes, helm } = options.providers;
|
||||
|
||||
new Release(this, "cnpg-operator", {
|
||||
provider: helm,
|
||||
repository: "https://cloudnative-pg.github.io/charts",
|
||||
chart: "cloudnative-pg",
|
||||
name: "postgres-system",
|
||||
namespace: "cnpg-system",
|
||||
createNamespace: true,
|
||||
});
|
||||
const { provider } = options;
|
||||
|
||||
const destinationPath = "s3://postgres-backups/";
|
||||
const endpointURL = options.backupR2EndpointURL;
|
||||
@@ -64,7 +50,7 @@ export class PostgresCluster extends Construct {
|
||||
};
|
||||
|
||||
new Manifest(this, "r2-backup-store", {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: "barmancloud.cnpg.io/v1",
|
||||
kind: "ObjectStore",
|
||||
@@ -95,7 +81,7 @@ export class PostgresCluster extends Construct {
|
||||
|
||||
// Self-signed issuer for creating CA certificates
|
||||
new Manifest(this, "selfsigned-issuer", {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: certManagerApiVersion,
|
||||
kind: "Issuer",
|
||||
@@ -111,7 +97,7 @@ export class PostgresCluster extends Construct {
|
||||
|
||||
// Server CA certificate
|
||||
new Manifest(this, "server-ca-cert", {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: certManagerApiVersion,
|
||||
kind: "Certificate",
|
||||
@@ -140,7 +126,7 @@ export class PostgresCluster extends Construct {
|
||||
|
||||
// Issuer using the server CA
|
||||
new Manifest(this, "server-ca-issuer", {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: certManagerApiVersion,
|
||||
kind: "Issuer",
|
||||
@@ -158,7 +144,7 @@ export class PostgresCluster extends Construct {
|
||||
|
||||
// Server certificate
|
||||
new Manifest(this, "server-cert", {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: certManagerApiVersion,
|
||||
kind: "Certificate",
|
||||
@@ -187,7 +173,7 @@ export class PostgresCluster extends Construct {
|
||||
|
||||
// Client CA certificate
|
||||
new Manifest(this, "client-ca", {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: certManagerApiVersion,
|
||||
kind: "Certificate",
|
||||
@@ -216,7 +202,7 @@ export class PostgresCluster extends Construct {
|
||||
|
||||
// Issuer using the client CA
|
||||
new Manifest(this, "client-ca-issuer", {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: certManagerApiVersion,
|
||||
kind: "Issuer",
|
||||
@@ -234,7 +220,7 @@ export class PostgresCluster extends Construct {
|
||||
|
||||
// Secret for client certificate
|
||||
new Manifest(this, `${certNames.client}-secret`, {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: "v1",
|
||||
kind: "Secret",
|
||||
@@ -250,7 +236,7 @@ export class PostgresCluster extends Construct {
|
||||
|
||||
// Client certificate for streaming replica
|
||||
new Manifest(this, "streaming-replica-cert", {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: certManagerApiVersion,
|
||||
kind: "Certificate",
|
||||
@@ -277,7 +263,7 @@ export class PostgresCluster extends Construct {
|
||||
options.users.forEach(
|
||||
(user) =>
|
||||
new Manifest(this, `${user}-client-cert`, {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: certManagerApiVersion,
|
||||
kind: "Certificate",
|
||||
@@ -302,7 +288,7 @@ export class PostgresCluster extends Construct {
|
||||
);
|
||||
|
||||
new Manifest(this, "postgres-cluster", {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
fieldManager: { forceConflicts: true },
|
||||
manifest: {
|
||||
apiVersion: "postgresql.cnpg.io/v1",
|
||||
@@ -435,7 +421,7 @@ export class PostgresCluster extends Construct {
|
||||
});
|
||||
|
||||
new Manifest(this, "postgres-backup-job", {
|
||||
provider: kubernetes,
|
||||
provider,
|
||||
manifest: {
|
||||
apiVersion: "postgresql.cnpg.io/v1",
|
||||
kind: "ScheduledBackup",
|
||||
|
||||
Reference in New Issue
Block a user