Как получить Kubernetes Secret из параметра, хранящегося в системном менеджере AWS - PullRequest
1 голос
/ 11 июля 2020

Я бы предпочел не хранить секрет в Git и сохранить его в AWS SSM.

Есть ли способ получить значение из AWS System Manager и использовать для создания Kubernetes Secret?

Ответы [ 3 ]

1 голос
/ 11 июля 2020

Конечно, для 12factors требуется внешняя конфигурация вне кодовой базы.

На ваш вопрос, есть попытка интегрировать AWS SSM (AWS Secret Manager) для использования в качестве единственного источника истины для секретов.

Вам просто нужно развернуть контроллер:

helm repo add secret-inject https://aws-samples.github.io/aws-secret-sidecar-injector/
helm repo update
helm install secret-inject secret-inject/secret-inject

Затем аннотируйте свой шаблон развертывания двумя аннотациями:

  template:
    metadata:
      annotations:
        secrets.k8s.aws/sidecarInjectorWebhook: enabled
        secrets.k8s.aws/secret-arn: arn:aws:secretsmanager:us-east-1:123456789012:secret:database-password-hlRvvF

Объясняются другие шаги здесь .

Но я думаю, что выделил наиболее важные шаги, которые проясняют подход.

0 голосов
/ 15 июля 2020

Мне удалось создать секрет, получив значение из AWS хранилища параметров с помощью следующего скрипта.

    cat <<EOF | ./kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: kiali
      namespace: istio-system
    type: Opaque
    data:
      passphrase: $(echo -n "`aws ssm get-parameter --name /dev/${env_name}/kubernetes/kiali_password --with-decrypt --region=eu-west-2 --output text --query Parameter.Value`" | base64 -w0)
      username: $(echo -n "admin" | base64 -w0)
    EOF
0 голосов
/ 13 июля 2020

Вы можете использовать [GoDaddy external secrets][1]. При его установке создается контроллер, и контроллер синхронизирует c секреты AWS с заданными c интервалами. После создания секретов в AWS SSM и установки внешних секретов GoDaddy вам необходимо создать тип ExternalSecret следующим образом:

apiVersion: 'kubernetes-client.io/v1'
kind: ExtrenalSecret
metadata:
  name: cats-and-dogs
secretDescriptor:
  backendType: secretsManager
  data:
    - key: cats-and-dogs/mysql-password
      name: password`

Это создаст для вас секреты Kubernetes. Этот секрет может быть предоставлен вашему сервису как переменная среды или через монтирование тома.

...