Skip to content

Commit 902302a

Browse files
authored
fix: wait for VPC resource controller before deploying workloads (#914)
1 parent 0fe3791 commit 902302a

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

terraform/eks/default/data.tf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,13 @@ data "aws_eks_cluster_auth" "this" {
88

99
data "aws_eks_cluster_auth" "cluster" {
1010
name = module.retail_app_eks.eks_cluster_id
11+
}
12+
13+
data "kubernetes_service" "ui_service" {
14+
depends_on = [helm_release.ui]
15+
16+
metadata {
17+
name = "ui"
18+
namespace = "ui"
19+
}
1120
}

terraform/eks/default/kubernetes.tf

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,20 @@ resource "time_sleep" "workloads" {
5757
]
5858
}
5959

60+
# Wait for VPC Resource Controller to attach trunk ENIs to nodes
61+
data "kubernetes_nodes" "vpc_ready_nodes" {
62+
depends_on = [time_sleep.workloads]
63+
64+
metadata {
65+
labels = {
66+
"vpc.amazonaws.com/has-trunk-attached" = "true"
67+
}
68+
}
69+
}
70+
6071
resource "kubernetes_namespace_v1" "catalog" {
6172
depends_on = [
62-
time_sleep.workloads
73+
data.kubernetes_nodes.vpc_ready_nodes
6374
]
6475

6576
metadata {
@@ -91,7 +102,7 @@ resource "helm_release" "catalog" {
91102

92103
resource "kubernetes_namespace_v1" "carts" {
93104
depends_on = [
94-
time_sleep.workloads
105+
data.kubernetes_nodes.vpc_ready_nodes
95106
]
96107

97108
metadata {
@@ -121,7 +132,7 @@ resource "helm_release" "carts" {
121132

122133
resource "kubernetes_namespace_v1" "checkout" {
123134
depends_on = [
124-
time_sleep.workloads
135+
data.kubernetes_nodes.vpc_ready_nodes
125136
]
126137

127138
metadata {
@@ -152,7 +163,7 @@ resource "helm_release" "checkout" {
152163

153164
resource "kubernetes_namespace_v1" "orders" {
154165
depends_on = [
155-
time_sleep.workloads
166+
data.kubernetes_nodes.vpc_ready_nodes
156167
]
157168

158169
metadata {
@@ -189,7 +200,7 @@ resource "helm_release" "orders" {
189200

190201
resource "kubernetes_namespace_v1" "ui" {
191202
depends_on = [
192-
time_sleep.workloads
203+
data.kubernetes_nodes.vpc_ready_nodes
193204
]
194205

195206
metadata {
@@ -249,7 +260,7 @@ resource "null_resource" "restart_pods" {
249260
}
250261

251262
command = <<-EOT
252-
kubectl delete pod -A -l app.kuberneres.io/owner=retail-store-sample --kubeconfig <(echo $KUBECONFIG | base64 -d)
263+
kubectl delete pod -A -l app.kubernetes.io/owner=retail-store-sample --kubeconfig <(echo $KUBECONFIG | base64 -d)
253264
EOT
254265
}
255266
}

terraform/eks/default/output.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,11 @@ output "configure_kubectl" {
22
description = "Command to update kubeconfig for this cluster"
33
value = module.retail_app_eks.configure_kubectl
44
}
5+
6+
output "retail_app_url" {
7+
description = "URL to access the retail store application"
8+
value = try(
9+
"http://${data.kubernetes_service.ui_service.status[0].load_balancer[0].ingress[0].hostname}",
10+
"LoadBalancer provisioning - run: kubectl get svc -n ui ui"
11+
)
12+
}

0 commit comments

Comments
 (0)