Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GCP Datacenter #187

Merged
merged 19 commits into from
Nov 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
ff71d0c
kubernetes-based gcp datacenter and environments
ryan-cahill Nov 1, 2023
6af2ee9
adding/testing service and ingress for a single app
ryan-cahill Nov 2, 2023
1fdbaf4
Merge branch 'main' of github.com:architect-team/arcctl into gcp-kube…
ryan-cahill Nov 6, 2023
496a4bb
Merge branch 'main' of github.com:architect-team/arcctl into gcp-kube…
ryan-cahill Nov 8, 2023
0671ab1
Merge branch 'main' of github.com:architect-team/arcctl into gcp-kube…
ryan-cahill Nov 9, 2023
f158c31
Merge branch 'main' of github.com:architect-team/arcctl into gcp-kube…
ryan-cahill Nov 15, 2023
7780cad
Merge branch 'main' of github.com:architect-team/arcctl into gcp-kube…
ryan-cahill Nov 17, 2023
e8c2495
Merge branch 'main' of github.com:architect-team/arcctl into gcp-kube…
ryan-cahill Nov 17, 2023
8df08fb
gcp-k8s datacenter updates
ryan-cahill Nov 20, 2023
8f60583
Merge branch 'main' of https://github.com/architect-team/arcctl into …
TylerAldrich Nov 21, 2023
5aa3103
Use npm install instead of ci, node_modules may not exist. Fix servic…
TylerAldrich Nov 21, 2023
796d824
Add verbose logging for module builds
TylerAldrich Nov 27, 2023
054c1b7
Update gcp datacenter to get ingress controller / service/dep/ingress…
TylerAldrich Nov 28, 2023
b0c43d0
Add compile command with linux x86_64 target for use in GH actions
TylerAldrich Nov 28, 2023
e8591ba
Add private IP to databaseCluster creation, fix issue with ingress us…
TylerAldrich Nov 29, 2023
cc25b3f
Remove .pulumi/ folders and node_modules
TylerAldrich Nov 29, 2023
6e55017
Merge branch 'main' of https://github.com/architect-team/arcctl into …
TylerAldrich Nov 29, 2023
3b464d6
More removal of unused things
TylerAldrich Nov 29, 2023
7ca92fd
Fix formatting
TylerAldrich Nov 29, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@
"prettier.enable": false,
"deno.documentPreloadLimit": 0,
"editor.defaultFormatter": null,
"deno.disablePaths": [
"./examples"
]
}
1 change: 1 addition & 0 deletions deno.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
},
"tasks": {
"compile": "DENO_V8_FLAGS=--max-heap-size=8192 deno compile --output bin/arcctl -A main.ts",
"compile:linux": "DENO_V8_FLAGS=--max-heap-size=8192 deno compile --target x86_64-unknown-linux-gnu --output bin/arcctl -A main.ts",
"generate:npm": "DENO_V8_FLAGS=--max-heap-size=8192 deno run -A ./bin/npm-package.ts",
"generate:component-schema": "deno run -A ./bin/component-generator.ts",
"generate:datacenter-schema": "deno run -A ./bin/datacenter-generator.ts",
Expand Down
3 changes: 2 additions & 1 deletion examples/datacenters/gcp/database/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
/target/
/bin/
/node_modules/
4 changes: 3 additions & 1 deletion examples/datacenters/gcp/database/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
FROM pulumi/pulumi-java
FROM pulumi/pulumi-nodejs

COPY . .

RUN npm install
8 changes: 1 addition & 7 deletions examples/datacenters/gcp/database/Pulumi.dev.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1 @@
encryptionsalt: v1:kUWZYQW9YO4=:v1:dfx/bDnmJZ0hAI6c:CAfW9KC8CJJ532B8XHlgMTfuPgWFQw==
config:
database:databaseCluster: postgres/kratos/tyleraldrich--kratos/34.138.160.18/5432
database:name: ryan-test
gcp:credentials: /home/ryan/Downloads/permanent-environment-testing-6f237ea8779d.json
gcp:project: permanent-environment-testing
gcp:region: us-central1
encryptionsalt: v1:hvLIPxLHXqA=:v1:6b5P9UxI/iCvsam/:jLYh+q4CU4e8RffvKsKUF50qMd0ndg==
4 changes: 2 additions & 2 deletions examples/datacenters/gcp/database/Pulumi.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
name: database
runtime: java
description: A minimal Java Pulumi program with Maven builds
runtime: nodejs
description: A minimal Google Cloud TypeScript Pulumi program
12 changes: 12 additions & 0 deletions examples/datacenters/gcp/database/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import * as gcp from "@pulumi/gcp";
import * as pulumi from "@pulumi/pulumi";

const config = new pulumi.Config('database');
const gcpConfig = new pulumi.Config('gcp');

const database = new gcp.sql.Database(config.name, {
name: `db-${config.require('name')}`.replace(/\//g, '-'),
instance: config.require('cluster_id')
});

export const name = database.name;
11 changes: 11 additions & 0 deletions examples/datacenters/gcp/database/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "database",
"main": "index.ts",
"devDependencies": {
"@types/node": "^16"
},
"dependencies": {
"@pulumi/pulumi": "^3.0.0",
"@pulumi/gcp": "^6.0.0"
}
}
101 changes: 0 additions & 101 deletions examples/datacenters/gcp/database/pom.xml

This file was deleted.

48 changes: 0 additions & 48 deletions examples/datacenters/gcp/database/src/main/java/myproject/App.java

This file was deleted.

18 changes: 18 additions & 0 deletions examples/datacenters/gcp/database/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"compilerOptions": {
"strict": true,
"outDir": "bin",
"target": "es2016",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"experimentalDecorators": true,
"pretty": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.ts"
]
}
2 changes: 2 additions & 0 deletions examples/datacenters/gcp/databaseCluster/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/bin/
/node_modules/
3 changes: 2 additions & 1 deletion examples/datacenters/gcp/databaseCluster/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
FROM pulumi/pulumi
FROM pulumi/pulumi-nodejs

COPY . .
RUN npm install
17 changes: 4 additions & 13 deletions examples/datacenters/gcp/databaseCluster/Pulumi.dev.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
encryptionsalt: v1:HQmcozuuwZU=:v1:M3zb8n2VDHwVxdR7:5zUL8ivYB/xbW8SsKEQ85ITkW7EKXQ==
encryptionsalt: v1:teM0vbIqgL8=:v1:uAooJhuRaPD66HRJ:CoNodVtqdppXrAEz0hQG73djaWc/CA==
config:
database:databaseSize: db-f1-micro
database:databaseType: postgres
database:databaseVersion: POSTGRES_15
database:description: gcp-test
database:name: gcp-test
database:password: architect
database:region: us-central1
database:vpc: default
gcp:credentials: |-
/home/ryan/Downloads/permanent-environment-testing-6f237ea8779d.json
gcp:project: permanent-environment-testing
gcp:region: us-central1
databaseCluster:databaseVersion: "14"
databaseCluster:name: ryan-test
databaseCluster:region: us-central1
41 changes: 2 additions & 39 deletions examples/datacenters/gcp/databaseCluster/Pulumi.yaml
Original file line number Diff line number Diff line change
@@ -1,40 +1,3 @@
name: databaseCluster
runtime: yaml

resources:
project:
type: gcp:projects:Service
properties:
disableOnDestroy: false
service: compute.googleapis.com
instance:
type: gcp:sql:DatabaseInstance
properties:
name: ${databaseCluster:name}
region: ${gcp:region}
databaseVersion: ${databaseCluster:databaseVersion}
settings:
tier: ${databaseCluster:databaseSize}
deletionProtectionEnabled: false
# requires private connections to services - will error if not previously enabled for the vpc
# https://cloud.google.com/sql/docs/mysql/private-ip#network_requirements
# https://cloud.google.com/sql/docs/mysql/configure-private-services-access
ipConfiguration:
privateNetwork: projects/${gcp:project}/global/networks/${databaseCluster:vpc}
enablePrivatePathForGoogleCloudServices: true
deletionProtection: false
user:
type: gcp:sql:User
properties:
instance: ${instance}
name: admin
password: ${databaseCluster:password}

outputs:
id: ${databaseCluster:databaseType}/${databaseCluster:name}/${instance.privateIpAddress}/5432
protocol: ${databaseCluster:databaseType}
host: ${instance.privateIpAddress}
port: 5432
username: ${user.name}
password: ${user.password}
certificate: ${instance.serverCaCerts[0].cert}
runtime: nodejs
description: A minimal Google Cloud TypeScript Pulumi program
29 changes: 29 additions & 0 deletions examples/datacenters/gcp/databaseCluster/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import * as gcp from "@pulumi/gcp";
import * as pulumi from "@pulumi/pulumi";
import { randomUUID } from 'crypto';

const config = new pulumi.Config('databaseCluster');
const gcpConfig = new pulumi.Config('gcp');
const _port = config.require('databasePort');

const databaseInstance = new gcp.sql.DatabaseInstance(config.require('name'), {
region: gcpConfig.require('region'),
name: config.require('name'),
databaseVersion: config.require('databaseVersion'),
rootPassword: randomUUID(),
settings: {
tier: config.get('databaseSize') || 'db-f1-micro',
ipConfiguration: {
privateNetwork: config.require('vpcId'),
enablePrivatePathForGoogleCloudServices: true,
},
},
deletionProtection: false
});

export const id = databaseInstance.id;
export const private_host = databaseInstance.privateIpAddress;
export const host = databaseInstance.ipAddresses[0];
export const port = _port;
export const username = databaseInstance.serviceAccountEmailAddress;
export const password = databaseInstance.rootPassword;
11 changes: 11 additions & 0 deletions examples/datacenters/gcp/databaseCluster/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "databaseCluster",
"main": "index.ts",
"devDependencies": {
"@types/node": "^16"
},
"dependencies": {
"@pulumi/pulumi": "^3.0.0",
"@pulumi/gcp": "^6.0.0"
}
}
18 changes: 18 additions & 0 deletions examples/datacenters/gcp/databaseCluster/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"compilerOptions": {
"strict": true,
"outDir": "bin",
"target": "es2016",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"experimentalDecorators": true,
"pretty": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.ts"
]
}
13 changes: 3 additions & 10 deletions examples/datacenters/gcp/databaseUser/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,16 @@
disable_on_destroy=False,
service="sqladmin.googleapis.com")

database = config.require('database')
[protocol, instance_name, database_name, host, port] = database.split("/")

password = uuid.uuid4()

sql_user = gcp.sql.User("user",
name=config.require("username"),
name=config.require("name"),
instance=config.require('cluster_id'),
password=password.hex,
instance=instance_name,
# instance=instance_name,
deletion_policy="ABANDON",
opts=pulumi.ResourceOptions(depends_on=[project_service]))

pulumi.export("id", sql_user.name)
pulumi.export("username", sql_user.name)
pulumi.export("password", sql_user.password)
pulumi.export("host", host)
pulumi.export("port", port)
pulumi.export("protocol", protocol)
pulumi.export("url", pulumi.Output.format("{}://{}:{}@{}:{}/{}", protocol, sql_user.name, sql_user.password, host, port, database_name))
pulumi.export("database", database_name)
Loading