Skip to content

Commit 5f80d92

Browse files
Use array when setting VK extra arguments for EKS
1 parent db0a79c commit 5f80d92

File tree

4 files changed

+172
-18
lines changed

4 files changed

+172
-18
lines changed

README.md

Lines changed: 139 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ This Terraform module enables CAST AI Omni functionality for a Kubernetes cluste
2525
- Terraform >= 1.10
2626
- CAST AI Terraform provider >= 8.4.0
2727
- Helm provider >= 3.1.1
28+
- Kubernetes provider >= 2.35.0
2829
- Null provider >= 3.2.4
2930
- External provider >= 2.3.5
3031
- Google provider >= 4.0 (for GKE clusters)
@@ -220,17 +221,11 @@ When `skip_helm = true`, the module creates a ConfigMap named `castai-omni-helm-
220221

221222
You can then reference this ConfigMap in your GitOps tools (ArgoCD, Flux, etc.) to install the Helm chart with the correct values.
222223

223-
### Required Providers
224+
### Provider Configuration
224225

225-
```hcl
226-
data "google_client_config" "default" {}
227-
228-
data "google_container_cluster" "gke" {
229-
project = var.gke_project_id
230-
location = var.gke_cluster_location
231-
name = var.gke_cluster_name
232-
}
226+
#### GKE Provider Configuration
233227

228+
```hcl
234229
terraform {
235230
required_version = ">= 1.10"
236231
@@ -245,15 +240,11 @@ terraform {
245240
}
246241
helm = {
247242
source = "hashicorp/helm"
248-
version = ">= 3.1.1"
249-
}
250-
null = {
251-
source = "hashicorp/null"
252-
version = ">= 3.2.4"
243+
version = ">= 2.0"
253244
}
254-
external = {
255-
source = "hashicorp/external"
256-
version = ">= 2.3.5"
245+
kubernetes = {
246+
source = "hashicorp/kubernetes"
247+
version = ">= 2.35.0"
257248
}
258249
}
259250
}
@@ -270,6 +261,137 @@ provider "helm" {
270261
}
271262
}
272263
264+
provider "kubernetes" {
265+
host = "https://${data.google_container_cluster.gke.endpoint}"
266+
token = data.google_client_config.default.access_token
267+
cluster_ca_certificate = base64decode(data.google_container_cluster.gke.master_auth.0.cluster_ca_certificate)
268+
}
269+
270+
provider "castai" {
271+
api_token = var.castai_api_token
272+
api_url = var.castai_api_url
273+
}
274+
```
275+
276+
#### EKS Provider Configuration
277+
278+
```hcl
279+
terraform {
280+
required_version = ">= 1.10"
281+
282+
required_providers {
283+
castai = {
284+
source = "castai/castai"
285+
version = ">= 8.4.0"
286+
}
287+
aws = {
288+
source = "hashicorp/aws"
289+
version = ">= 6.23.0"
290+
}
291+
helm = {
292+
source = "hashicorp/helm"
293+
version = ">= 3.1.1"
294+
}
295+
kubernetes = {
296+
source = "hashicorp/kubernetes"
297+
version = ">= 2.35.0"
298+
}
299+
}
300+
}
301+
302+
provider "aws" {
303+
region = var.eks_cluster_region
304+
}
305+
306+
provider "helm" {
307+
kubernetes = {
308+
host = data.aws_eks_cluster.eks.endpoint
309+
cluster_ca_certificate = base64decode(data.aws_eks_cluster.eks.certificate_authority[0].data)
310+
exec = {
311+
api_version = "client.authentication.k8s.io/v1beta1"
312+
command = "aws"
313+
args = [
314+
"eks",
315+
"get-token",
316+
"--cluster-name",
317+
data.aws_eks_cluster.eks.name,
318+
"--region",
319+
var.eks_cluster_region
320+
]
321+
}
322+
}
323+
}
324+
325+
provider "kubernetes" {
326+
host = data.aws_eks_cluster.eks.endpoint
327+
cluster_ca_certificate = base64decode(data.aws_eks_cluster.eks.certificate_authority[0].data)
328+
exec {
329+
api_version = "client.authentication.k8s.io/v1beta1"
330+
command = "aws"
331+
args = [
332+
"eks",
333+
"get-token",
334+
"--cluster-name",
335+
data.aws_eks_cluster.eks.name,
336+
"--region",
337+
var.eks_cluster_region
338+
]
339+
}
340+
}
341+
342+
provider "castai" {
343+
api_token = var.castai_api_token
344+
api_url = var.castai_api_url
345+
}
346+
```
347+
348+
#### AKS Provider Configuration
349+
350+
```hcl
351+
terraform {
352+
required_version = ">= 1.10"
353+
354+
required_providers {
355+
castai = {
356+
source = "castai/castai"
357+
version = ">= 8.4.0"
358+
}
359+
azurerm = {
360+
source = "hashicorp/azurerm"
361+
version = ">= 3.0"
362+
}
363+
helm = {
364+
source = "hashicorp/helm"
365+
version = ">= 2.0"
366+
}
367+
kubernetes = {
368+
source = "hashicorp/kubernetes"
369+
version = ">= 2.35.0"
370+
}
371+
}
372+
}
373+
374+
provider "azurerm" {
375+
subscription_id = var.azure_subscription_id
376+
features {}
377+
}
378+
379+
provider "helm" {
380+
kubernetes = {
381+
host = data.azurerm_kubernetes_cluster.aks.kube_config[0].host
382+
client_certificate = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].client_certificate)
383+
client_key = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].client_key)
384+
cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].cluster_ca_certificate)
385+
}
386+
}
387+
388+
provider "kubernetes" {
389+
host = data.azurerm_kubernetes_cluster.aks.kube_config[0].host
390+
client_certificate = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].client_certificate)
391+
client_key = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].client_key)
392+
cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].cluster_ca_certificate)
393+
}
394+
273395
provider "castai" {
274396
api_token = var.castai_api_token
275397
api_url = var.castai_api_url

examples/onboarding-with-existing-aks-cluster/providers.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ terraform {
1818
source = "hashicorp/helm"
1919
version = ">= 2.0"
2020
}
21+
kubernetes = {
22+
source = "hashicorp/kubernetes"
23+
version = ">= 2.35.0"
24+
}
2125
}
2226
}
2327

@@ -39,6 +43,13 @@ provider "helm" {
3943
}
4044
}
4145

46+
provider "kubernetes" {
47+
host = data.azurerm_kubernetes_cluster.aks.kube_config[0].host
48+
client_certificate = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].client_certificate)
49+
client_key = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].client_key)
50+
cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.aks.kube_config[0].cluster_ca_certificate)
51+
}
52+
4253
provider "castai" {
4354
api_token = var.castai_api_token
4455
api_url = var.castai_api_url

examples/onboarding-with-existing-eks-cluster/providers.tf

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ terraform {
1414
source = "hashicorp/helm"
1515
version = ">= 3.1.1"
1616
}
17+
kubernetes = {
18+
source = "hashicorp/kubernetes"
19+
version = ">= 2.35.0"
20+
}
1721
null = {
1822
source = "hashicorp/null"
1923
version = ">= 3.2.4"
@@ -53,6 +57,23 @@ provider "helm" {
5357
}
5458
}
5559

60+
provider "kubernetes" {
61+
host = data.aws_eks_cluster.eks.endpoint
62+
cluster_ca_certificate = base64decode(data.aws_eks_cluster.eks.certificate_authority[0].data)
63+
exec {
64+
api_version = "client.authentication.k8s.io/v1beta1"
65+
command = "aws"
66+
args = [
67+
"eks",
68+
"get-token",
69+
"--cluster-name",
70+
data.aws_eks_cluster.eks.name,
71+
"--region",
72+
var.eks_cluster_region
73+
]
74+
}
75+
}
76+
5677
provider "castai" {
5778
api_token = var.castai_api_token
5879
api_url = var.castai_api_url

modules/eks/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ locals {
2828
}
2929
virtualKubelet = {
3030
extra = {
31-
args = "--certificate-type=aws"
31+
args = ["--certificate-type=aws"]
3232
}
3333
}
3434
networking = {

0 commit comments

Comments
 (0)