| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- data "aws_eks_cluster_auth" "this" {
- name = module.eks.cluster_id
- }
- data "aws_caller_identity" "current" {}
- locals {
- kubeconfig = yamlencode({
- apiVersion = "v1"
- kind = "Config"
- current-context = "terraform"
- clusters = [{
- name = module.eks.cluster_id
- cluster = {
- certificate-authority-data = module.eks.cluster_certificate_authority_data
- server = module.eks.cluster_endpoint
- }
- }]
- contexts = [{
- name = "terraform"
- context = {
- cluster = module.eks.cluster_id
- user = "terraform"
- }
- }]
- users = [{
- name = "terraform"
- user = {
- token = data.aws_eks_cluster_auth.this.token
- }
- }]
- })
- # we have to allow the root account to access the api
- aws_auth_configmap_yaml = <<-EOT
- ${chomp(module.eks.aws_auth_configmap_yaml)}
- - rolearn: arn:aws:iam::${data.aws_caller_identity.current.account_id}:role/admin
- username: system:aws:root
- groups:
- - system:masters
- EOT
- }
- resource "null_resource" "patch_cm" {
- triggers = {
- kubeconfig = base64encode(local.kubeconfig)
- cmd_patch = <<-EOT
- kubectl patch configmap/aws-auth --patch "${local.aws_auth_configmap_yaml}" -n kube-system --kubeconfig <(echo $KUBECONFIG | base64 --decode)
- EOT
- }
- provisioner "local-exec" {
- interpreter = ["/bin/bash", "-c"]
- environment = {
- KUBECONFIG = self.triggers.kubeconfig
- }
- command = self.triggers.cmd_patch
- }
- }
|