terraform-kubernetes-провайдера, как создать секрет из файла? - PullRequest
0 голосов
/ 25 марта 2019

Я использую terraform kubernetes-provider , и я хотел бы перевести что-то вроде этой kubectl команды в TF:

kubectl create secret generic my-secret --from-file mysecret.json

Кажется, однако secret поле data ресурса ожидает только карту TF .

Я пробовал что-то вроде

data "template_file" "my-secret" {
  template = "${file("${path.module}/my-secret.json")}"
}

resource "kubernetes_secret" "sgw-config" {
   metadata {
     name = "my-secret"
   }
   type = "Opaque"
   data = "{data.template_file.my-secret.template}"
}

Но он жалуется, что это не карта.Итак, я могу сделать что-то вроде этого:

   data = {
      "my-secret.json" = "{data.template_file.my-secret.template}"
   }

Но это напишет секрет с полем верхнего уровня с именем my-secret.json, и когда я подключу его томом, он не будет работать с другими ресурсами.

В чем тут хитрость?

Ответы [ 2 ]

1 голос
/ 25 марта 2019

В основном вам нужно предоставить карту, подобную этой:

resource "kubernetes_secret" "sgw-config" {
   metadata {
     name = "my-secret"
   }
   type = "Opaque"
   data {
           "key1" = "value1"
           "key2" = "value2"
  }
}

вы можете ссылаться на свои внутренние переменные, используя

resource "kubernetes_secret" "sgw-config" {
       metadata {
         name = "my-secret"
       }
       type = "Opaque"
       data {
               "USERNAME" = "${var.some_variable}"
               "PASSWORD" = "${random_string.root_password.result}"
      }
    }
0 голосов
/ 25 марта 2019

Кажется, если вы запустите команду kubectl create secret generic my-secret --from-file mysecret.json

, а затем

$ kubectl get secrets my-secret -o yaml
apiVersion: v1
data:
  my-secret.json: ewogICA.....
kind: Secret
metadata:
  creationTimestamp: "2019-03-25T18:20:43Z"
  name: my-secret
  namespace: default
  resourceVersion: "67026"
  selfLink: /api/v1/namespaces/default/secrets/my-secret
  uid: b397a29c-4f2a-11e9-9806-000c290425d0
type: Opaque

хранит его аналогично с именем файла в качестве единственного ключа. Когда я монтирую это в volume / volumeMount, он работает как положено. Я боялся, что это не так, но когда я создаю секрет, используя аргумент --from-file, именно так он и хранится.

...