Skip to content

Commit 0f2d065

Browse files
committed
Add tests for external dependencies in AKS
1 parent d74879b commit 0f2d065

File tree

11 files changed

+104
-22
lines changed

11 files changed

+104
-22
lines changed

.werft/build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ async function run(context: any) {
6363
if (!config.withPreview || config.publishRelease) {
6464
werft.phase("deploy", "not deploying");
6565
console.log("running without preview environment or publish-release is set");
66-
return
66+
return;
6767
}
6868

6969
try {

install/infra/terraform/aks/kubernetes.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ resource "azurerm_kubernetes_cluster" "k8s" {
4040
zones = []
4141

4242
enable_auto_scaling = true
43-
min_count = 2
43+
min_count = 1
4444
max_count = 10
4545
orchestrator_version = data.azurerm_kubernetes_service_versions.k8s.latest_version
4646
node_labels = local.nodes.0.labels
@@ -72,7 +72,7 @@ resource "azurerm_kubernetes_cluster_node_pool" "pools" {
7272
vm_size = local.machine
7373

7474
enable_auto_scaling = true
75-
min_count = 2
75+
min_count = 1
7676
max_count = 10
7777
orchestrator_version = data.azurerm_kubernetes_service_versions.k8s.latest_version
7878
node_labels = local.nodes[count.index + 1].labels

install/infra/terraform/aks/local.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ locals {
88
})
99
dns_enabled = var.domain_name != null
1010
name_format = join("-", [
11-
"gitpod",
11+
"gitpod-test",
1212
"%s", # region
1313
"%s", # name
1414
local.workspace_name
1515
])
1616
name_format_global = join("-", [
17-
"gitpod",
17+
"gitpod-test",
1818
"%s", # name
1919
local.workspace_name
2020
])

install/infra/terraform/tools/azure-external-dns/main.tf

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
variable settings {}
22
variable domain_name { default = "test"}
33
variable kubeconfig { default = "conf"}
4+
variable txt_owner_id { default = "nightly-test"}
45

56
provider "helm" {
67
kubernetes {
@@ -50,12 +51,8 @@ resource "helm_release" "external_dns" {
5051
value = var.settings["azure.resourceGroup"]
5152
}
5253

53-
# TODO Add tags using dynamic block
54-
# https://github.com/hashicorp/terraform/issues/22340
55-
# dynamic "set" {
56-
# for_each = var.tags
57-
# iterator = "tag"
58-
# name = "podLabels[${index(var.tags, tag.key)}]"
59-
# value = tag.value
60-
# }
54+
set {
55+
name = "txt-owner-id"
56+
value = var.txt_owner_id
57+
}
6158
}

install/infra/terraform/tools/issuer/azure/main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ resource "kubernetes_manifest" "clusterissuer_gitpod" {
1515
"name" = "issuer-account-key"
1616
}
1717
"server" = "https://acme-v02.api.letsencrypt.org/directory"
18+
# "server" = "https://acme-staging-v02.api.letsencrypt.org/directory"
1819
"solvers" = [
1920
{
2021
"dns01" = {

install/tests/Makefile

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,11 @@ gke-standard-cluster:
3333
aks-standard-cluster:
3434
terraform init --upgrade && \
3535
terraform workspace new $(TF_VAR_TEST_ID) || terraform workspace select $(TF_VAR_TEST_ID) && \
36-
terraform apply -target=module.aks -var kubeconfig=${KUBECONFIG} --auto-approve
36+
terraform apply -target=module.aks -var k8s_flavor="aks" -var kubeconfig=${KUBECONFIG} --auto-approve
3737

3838
.PHONY:
3939
## azure-external-dns: Sets up external-dns with azure provider
40+
azure-external-dns:
4041
azure-external-dns:
4142
terraform init --upgrade && \
4243
terraform workspace new $(TF_VAR_TEST_ID) || terraform workspace select $(TF_VAR_TEST_ID) && \
@@ -111,10 +112,24 @@ get-config-gcp-db:
111112
yq m -i tmp_config.yml tmp_5_config.yml
112113

113114
get-config-azure-storage:
115+
export PASSWORD=$$(terraform output -json storage | yq r - 'password') && \
116+
export USERNAME=$$(terraform output -json storage | yq r - 'username') && \
117+
envsubst < ./manifests/kots-config-azure-storage.yaml > tmp_2_config.yml
118+
yq m -i tmp_config.yml tmp_2_config.yml
114119

115120
get-config-azure-db:
121+
export DBHOST=$$(terraform output -json database | yq r - 'host') && \
122+
export DBPASS=$$(terraform output -json database | yq r - 'password') && \
123+
export DBUSER=$$(terraform output -json database | yq r - 'username') && \
124+
envsubst < ./manifests/kots-config-azure-db.yaml > tmp_2_config.yml
125+
yq m -i tmp_config.yml tmp_2_config.yml
116126

117127
get-config-azure-registry:
128+
export SERVER=$$(terraform output -json registry | yq r - 'server') && \
129+
export PASSWORD=$$(terraform output -json registry | yq r - 'password') && \
130+
export USERNAME=$$(terraform output -json registry | yq r - 'username') && \
131+
envsubst < ./manifests/kots-config-azure-registry.yaml > tmp_2_config.yml
132+
yq m -i tmp_config.yml tmp_2_config.yml
118133

119134
storage ?= incluster
120135
registry ?= incluster
@@ -158,7 +173,7 @@ check-gitpod-installation: delete-cm-setup check-kots-app check-env-sub-domain
158173
run-tests:
159174
./tests.sh ${KUBECONFIG}
160175

161-
kots-upgrade:
176+
kots-uprgade:
162177
@echo "Upgrade gitpod KOTS app to latest"
163178
kubectl kots upstream upgrade --kubeconfig=${KUBECONFIG} gitpod -n gitpod --deploy
164179

@@ -174,13 +189,13 @@ destroy-certmanager: select-workspace
174189
ls ${KUBECONFIG} && terraform destroy -target=module.certmanager -var kubeconfig=${KUBECONFIG} --auto-approve || echo "No kubeconfig file"
175190

176191
destroy-gcpns: select-workspace
177-
ls ${KUBECONFIG} && terraform destroy -target=module.add_gcp_nameservers -var kubeconfig=${KUBECONFIG} --auto-approve || echo "No kubeconfig file"
192+
terraform destroy -target=module.add_gcp_nameservers -var kubeconfig=${KUBECONFIG} --auto-approve
178193

179194
destroy-aks-edns: select-workspace
180-
ls ${KUBECONFIG} && terraform destroy -target=module.azure-externaldns -var kubeconfig=${KUBECONFIG} --auto-approve
195+
ls ${KUBECONFIG} && terraform destroy -target=module.azure-externaldns -var kubeconfig=${KUBECONFIG} --auto-approve || echo "No kubeconfig file"
181196

182197
destroy-aks-issuer: select-workspace
183-
ls ${KUBECONFIG} && terraform destroy -target=module.azure-issuer -var kubeconfig=${KUBECONFIG} --auto-approve
198+
ls ${KUBECONFIG} && terraform destroy -target=module.azure-issuer -var kubeconfig=${KUBECONFIG} --auto-approve || echo "No kubeconfig file"
184199

185200
destroy-gke: select-workspace
186201
terraform destroy -target=module.gke -var kubeconfig=${KUBECONFIG} --auto-approve
@@ -193,7 +208,7 @@ destroy-aks: select-workspace
193208

194209
get-results:
195210
@echo "If you have gotten this far, it means your setup succeeded"
196-
@echo "The IP address of you setup is "https://$(TF_VAR_TEST_ID).gitpod-self-hosted.com""
211+
@echo "The IP address of you setup is "$(TF_VAR_TEST_ID).gitpod-self-hosted.com""
197212
@echo "Following is the KUBECONFIG you can use to connect to the cluster:"
198213
@cat ${KUBECONFIG}
199214

install/tests/main.tf

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
variable "kubeconfig" { }
22
variable "TEST_ID" { default = "nightly" }
33

4+
variable "k8s_flavor" { default = "gke" }
5+
46
# We store the state always in a GCS bucket
57
terraform {
68
backend "gcs" {
@@ -45,9 +47,9 @@ module "aks" {
4547

4648
domain_name = "${var.TEST_ID}.gitpod-self-hosted.com"
4749
enable_airgapped = false
48-
enable_external_database = false
49-
enable_external_registry = false
50-
enable_external_storage = false
50+
enable_external_database = true
51+
enable_external_registry = true
52+
enable_external_storage = true
5153
dns_enabled = true
5254
workspace_name = var.TEST_ID
5355
}
@@ -73,6 +75,7 @@ module "azure-externaldns" {
7375
kubeconfig = var.kubeconfig
7476
settings = module.aks.external_dns_settings
7577
domain_name = "${var.TEST_ID}.gitpod-self-hosted.com"
78+
txt_owner_id = var.TEST_ID
7679
}
7780

7881
module "azure-issuer" {
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: kots.io/v1beta1
2+
kind: ConfigValues
3+
spec:
4+
values:
5+
db_incluster:
6+
value: "0"
7+
data: "db_incluster"
8+
db_host:
9+
value: ${DBHOST}
10+
data: "db_host"
11+
db_username:
12+
value: ${DBUSER}
13+
data: "db_username"
14+
db_password:
15+
value: ${DBPASS}
16+
data: "db_password"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: kots.io/v1beta1
2+
kind: ConfigValues
3+
spec:
4+
values:
5+
reg_incluster:
6+
value: "0"
7+
data: "reg_incluster"
8+
reg_url:
9+
value: ${SERVER}
10+
data: "reg_url"
11+
reg_username:
12+
value: ${USERNAME}
13+
data: "reg_username"
14+
reg_password:
15+
value: ${PASSWORD}
16+
data: "reg_password"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: kots.io/v1beta1
2+
kind: ConfigValues
3+
spec:
4+
values:
5+
store_provider:
6+
value: azure
7+
data: "store_provider"
8+
store_region:
9+
value: "northeurope"
10+
data: "store_region"
11+
store_azure_account_name:
12+
value: ${USERNAME}
13+
data: "store_azure_account_name"
14+
store_azure_access_key:
15+
value: ${PASSWORD}
16+
data: "store_azure_access_key"

install/tests/output.tf

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
locals {
2+
cloud = var.k8s_flavor == "aks" ? module.aks : null
3+
}
4+
5+
output "storage" {
6+
sensitive = true
7+
value = try(lookup(local.cloud, "storage"), {})
8+
}
9+
10+
output "registry" {
11+
sensitive = true
12+
value = try(lookup(local.cloud, "registry"), {})
13+
}
14+
15+
output "database" {
16+
sensitive = true
17+
value = try(lookup(local.cloud, "database"), {})
18+
}

0 commit comments

Comments
 (0)