fix: use direct in-cluster kubernetes auth instead of kubeconfig file
- providers.tf: use host + token + ca_crt from mounted service account secrets - workflow: remove kubeconfig generation step (no longer needed) - variables.tf: remove unused kubeconfig_path variable This is the standard pattern for running terraform inside k8s pods.
This commit is contained in:
@@ -40,30 +40,6 @@ jobs:
|
||||
run: terraform fmt -check -recursive terraform/
|
||||
continue-on-error: true
|
||||
|
||||
- name: Generate In-Cluster Kubeconfig
|
||||
run: |
|
||||
mkdir -p /tmp
|
||||
cat > /tmp/kubeconfig << 'EOF'
|
||||
apiVersion: v1
|
||||
kind: Config
|
||||
clusters:
|
||||
- cluster:
|
||||
certificate-authority: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
||||
server: https://kubernetes.default:443
|
||||
name: in-cluster
|
||||
contexts:
|
||||
- context:
|
||||
cluster: in-cluster
|
||||
user: terraform
|
||||
name: in-cluster
|
||||
current-context: in-cluster
|
||||
users:
|
||||
- name: terraform
|
||||
user:
|
||||
tokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
|
||||
EOF
|
||||
chmod 600 /tmp/kubeconfig
|
||||
|
||||
- name: Configure AWS Credentials
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
@@ -82,7 +58,6 @@ jobs:
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
TF_VAR_kubeconfig_path: /tmp/kubeconfig
|
||||
TF_SKIP_CREDENTIALS_VALIDATION: "true"
|
||||
TF_SKIP_REGION_VALIDATION: "true"
|
||||
TF_SKIP_REQUESTING_ACCOUNT_ID: "true"
|
||||
@@ -120,7 +95,6 @@ jobs:
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
TF_VAR_kubeconfig_path: /tmp/kubeconfig
|
||||
TF_SKIP_CREDENTIALS_VALIDATION: "true"
|
||||
run: |
|
||||
terraform plan -out=tfplan
|
||||
@@ -130,7 +104,6 @@ jobs:
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
TF_VAR_kubeconfig_path: /tmp/kubeconfig
|
||||
TF_SKIP_CREDENTIALS_VALIDATION: "true"
|
||||
run: |
|
||||
terraform apply -auto-approve tfplan
|
||||
|
||||
@@ -29,12 +29,18 @@ terraform {
|
||||
}
|
||||
|
||||
provider "kubernetes" {
|
||||
config_path = var.kubeconfig_path
|
||||
host = "https://kubernetes.default"
|
||||
token = file("/var/run/secrets/kubernetes.io/serviceaccount/token")
|
||||
cluster_ca_certificate = file("/var/run/secrets/kubernetes.io/serviceaccount/ca.crt")
|
||||
insecure = false
|
||||
}
|
||||
|
||||
provider "helm" {
|
||||
kubernetes {
|
||||
config_path = var.kubeconfig_path
|
||||
host = "https://kubernetes.default"
|
||||
token = file("/var/run/secrets/kubernetes.io/serviceaccount/token")
|
||||
cluster_ca_certificate = file("/var/run/secrets/kubernetes.io/serviceaccount/ca.crt")
|
||||
insecure = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
variable "kubeconfig_path" {
|
||||
description = "Path to kubeconfig file"
|
||||
type = string
|
||||
default = "/tmp/kubeconfig"
|
||||
}
|
||||
|
||||
variable "cluster_domain" {
|
||||
description = "Cluster domain (e.g., riotpiao.homelab.com)"
|
||||
type = string
|
||||
|
||||
Reference in New Issue
Block a user