Skip to content

Commit cc61e54

Browse files
vulkoingimroboquat
authored andcommitted
[preview] configure cert-issuer
1 parent aad0d10 commit cc61e54

File tree

5 files changed

+44
-15
lines changed

5 files changed

+44
-15
lines changed

.werft/jobs/build/job-config.ts

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { exec } from "../../util/shell";
2-
import { Werft } from "../../util/werft";
3-
import { previewNameFromBranchName } from "../../util/preview";
1+
import {exec} from "../../util/shell";
2+
import {Werft} from "../../util/werft";
3+
import {previewNameFromBranchName} from "../../util/preview";
44

55
type WithIntegrationTests = "skip" | "all" | "workspace" | "ide" | "webapp";
66

@@ -36,6 +36,9 @@ export interface JobConfig {
3636
replicatedVersion: string;
3737
observability: Observability;
3838
withLargeVM: boolean;
39+
certIssuer: string;
40+
recreatePreview: boolean;
41+
recreateVm: boolean;
3942
}
4043

4144
export interface PreviewEnvironmentConfig {
@@ -74,7 +77,7 @@ export function jobConfig(werft: Werft, context: any): JobConfig {
7477
return raw.split(",").map((e) => e.trim());
7578
})();
7679

77-
const coverageOutput = exec("mktemp -d", { silent: true }).stdout.trim();
80+
const coverageOutput = exec("mktemp -d", {silent: true}).stdout.trim();
7881

7982
// Main build should only contain the annotations below:
8083
// ['with-contrib', 'publish-to-npm', 'publish-to-jb-marketplace', 'with-clean-slate-deployment']
@@ -97,10 +100,22 @@ export function jobConfig(werft: Werft, context: any): JobConfig {
97100
const withObservability = "with-observability" in buildConfig && !mainBuild;
98101
const withLargeVM = "with-large-vm" in buildConfig && !mainBuild;
99102
const withLocalPreview = "with-local-preview" in buildConfig || mainBuild
103+
const recreatePreview = "recreate-preview" in buildConfig
104+
const recreateVm = mainBuild || "recreate-vm" in buildConfig;
100105

101106
const withIntegrationTests = parseWithIntegrationTests(werft, sliceId, buildConfig["with-integration-tests"]);
102107
const withPreview = decideWithPreview({werft, sliceID: sliceId, buildConfig, mainBuild, withIntegrationTests})
103108

109+
switch (buildConfig["cert-issuer"]) {
110+
case "letsencrypt":
111+
buildConfig["cert-issuer"] = "letsencrypt-issuer-gitpod-core-dev"
112+
break
113+
case "zerossl":
114+
default:
115+
buildConfig["cert-issuer"] = "zerossl-issuer-gitpod-core-dev"
116+
}
117+
const certIssuer = buildConfig["cert-issuer"];
118+
104119
const repository: Repository = {
105120
owner: context.Repository.owner,
106121
repo: context.Repository.repo,
@@ -155,6 +170,9 @@ export function jobConfig(werft: Werft, context: any): JobConfig {
155170
withLocalPreview,
156171
workspaceFeatureFlags,
157172
withLargeVM,
173+
certIssuer,
174+
recreatePreview,
175+
recreateVm,
158176
};
159177

160178
werft.logOutput(sliceId, JSON.stringify(jobConfig, null, 2));
@@ -186,8 +204,8 @@ function parseVersion(context: any) {
186204
return version;
187205
}
188206

189-
function decideWithPreview(options: {werft: Werft, sliceID: string, buildConfig: any, mainBuild: boolean, withIntegrationTests: WithIntegrationTests}) {
190-
const {werft, sliceID, buildConfig, mainBuild, withIntegrationTests } = options
207+
function decideWithPreview(options: { werft: Werft, sliceID: string, buildConfig: any, mainBuild: boolean, withIntegrationTests: WithIntegrationTests }) {
208+
const {werft, sliceID, buildConfig, mainBuild, withIntegrationTests} = options
191209
if (mainBuild) {
192210
werft.log(sliceID, "with-preview is disabled for main builds")
193211
return false

.werft/jobs/build/prepare.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ function configureStaticClustersAccess() {
8989

9090
async function decideHarvesterVMCreation(werft: Werft, config: JobConfig) {
9191
// always try to create - usually it will be no-op, but if tf changed for any reason we would reconcile
92-
if (config.withPreview && (!vmExists({ name: config.previewEnvironment.destname }) || config.cleanSlateDeployment)) {
92+
if (config.withPreview && (!vmExists({ name: config.previewEnvironment.destname }) || config.cleanSlateDeployment || config.recreatePreview || config.recreateVm)) {
9393
await createVM(werft, config);
9494
}
9595
werft.done(prepareSlices.BOOT_VM);
@@ -101,19 +101,16 @@ async function createVM(werft: Werft, config: JobConfig) {
101101
const cpu = config.withLargeVM ? 12 : 6;
102102
const memory = config.withLargeVM ? 24 : 12;
103103

104-
// -replace=... forces recreation of the resource
105-
const planArgs = config.cleanSlateDeployment ? "-replace=harvester_virtualmachine.harvester" : ""
106-
107104
const environment = {
108105
// We pass the GCP credentials explicitly, otherwise for some reason TF doesn't pick them up
109106
"GOOGLE_BACKEND_CREDENTIALS": GCLOUD_SERVICE_ACCOUNT_PATH,
110107
"GOOGLE_APPLICATION_CREDENTIALS": GCLOUD_SERVICE_ACCOUNT_PATH,
108+
"TF_VAR_cert_issuer": config.certIssuer,
111109
"TF_VAR_kubeconfig_path": GLOBAL_KUBECONFIG_PATH,
112110
"TF_VAR_preview_name": config.previewEnvironment.destname,
113111
"TF_VAR_vm_cpu": `${cpu}`,
114112
"TF_VAR_vm_memory": `${memory}Gi`,
115-
"TF_VAR_vm_storage_class": "longhorn-gitpod-k3s-202209251218-onereplica",
116-
"TF_CLI_ARGS_plan": planArgs
113+
"TF_VAR_vm_storage_class": "longhorn-gitpod-k3s-202209251218-onereplica"
117114
}
118115

119116
const variables = Object
@@ -122,9 +119,16 @@ async function createVM(werft: Werft, config: JobConfig) {
122119
.map(([key, value]) => `${key}="${value}"`)
123120
.join(" ")
124121

125-
if (config.cleanSlateDeployment) {
122+
if (config.recreatePreview){
123+
werft.log(prepareSlices.BOOT_VM, "Recreating environment");
124+
await execStream(`${variables} \
125+
leeway run dev/preview:delete-preview`, {slice: prepareSlices.BOOT_VM});
126+
}else if (config.cleanSlateDeployment || config.recreateVm) {
126127
werft.log(prepareSlices.BOOT_VM, "Cleaning previously created VM");
127-
await execStream(`${variables} leeway run dev/preview:create-preview`, {slice: prepareSlices.BOOT_VM});
128+
// -replace=... forces recreation of the resource
129+
await execStream(`${variables} \
130+
TF_CLI_ARGS_plan=-replace=harvester_virtualmachine.harvester \
131+
leeway run dev/preview:create-preview`, {slice: prepareSlices.BOOT_VM});
128132
}
129133

130134
werft.log(prepareSlices.BOOT_VM, "Creating VM");

dev/preview/BUILD.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ scripts:
1111
- name: create-preview
1212
description: Provisions a new preview environment
1313
script: |
14+
export TF_VAR_cert_issuer="${TF_VAR_cert_issuer:-zerossl-issuer-gitpod-core-dev}"
1415
export TF_VAR_dev_kube_path="${TF_VAR_dev_kube_path:-/home/gitpod/.kube/config}"
1516
export TF_VAR_dev_kube_context="${TF_VAR_dev_kube_context:-dev}"
1617
export TF_VAR_harvester_kube_path="${TF_VAR_harvester_kube_path:-/home/gitpod/.kube/config}"

dev/preview/infrastructure/harvester/cert.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ resource "kubernetes_manifest" "cert" {
2121
]
2222
issuerRef = {
2323
kind = "ClusterIssuer"
24-
name = "zerossl-issuer-gitpod-core-dev"
24+
name = var.cert_issuer
2525
}
2626
renewBefore = "24h0m0s"
2727
secretName = "harvester-${var.preview_name}"

dev/preview/infrastructure/harvester/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,9 @@ variable "harvester_ingress_ip" {
4444
default = "159.69.172.117"
4545
description = "Ingress IP in Harvester cluster"
4646
}
47+
48+
variable "cert_issuer" {
49+
type = string
50+
default = "zerossl-issuer-gitpod-core-dev"
51+
description = "Certificate issuer"
52+
}

0 commit comments

Comments
 (0)