Прикрепление секрета к бегущей капсуле

Да, да. Это называется оценкой короткого замыкания. См. Комментарии на странице документации ...

. Что касается заказа, он выполняет проверки на основе Приоритета оператора , а затем слева направо. Итак:

A || B || C

Сначала проверит A, а затем B, только если A является ложным, а C только если оба A и B являются ложными ...

Но

A AND B || C

Всегда будет оценивать B || C, так как || имеет более высокий приоритет, чем AND (не верно для &&).

0
задан prashant 18 January 2019 в 10:55
поделиться

2 ответа

Секрет - это объем. Таким образом, вы не можете подключить том к работающему модулю. Вы можете запустить pod в привилегированном режиме и смонтировать все, что вы хотите, с помощью команды mount внутри контейнера. Хотя это безумие ...

0
ответ дан Konstantin Vustin 18 January 2019 в 10:55
поделиться

В соответствии с документацией :

Секреты могут быть смонтированы в виде томов данных или представлены в качестве переменных среды для использования контейнером в модуле.

Это пример модуля, который монтирует секрет в томе:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret

Установленные секреты обновляются автоматически

[1115 ] Когда секрет, уже использованный в томе, обновляется, спроецированные ключи в конечном итоге также обновляются. Kubelet проверяет, является ли установленный секрет свежим при каждой периодической синхронизации. Тем не менее, он использует свой локальный кеш для получения текущего значения секрета. Тип кэша настраивается с помощью поля (ConfigMapAndSecretChangeDetectionStrategy в структуре KubeletConfiguration). Его можно распространять с помощью watch (по умолчанию), на основе ttl или просто перенаправляя все запросы непосредственно на kube-apiserver. В результате общая задержка с момента обновления Секрета до момента, когда новые ключи проецируются на Pod, может составлять период синхронизации kubelet + задержка распространения кэша, где задержка распространения кэша зависит от выбранного типа кэша ( это равняется просмотру задержки распространения, ttl кеша или нулевого ядра соответственно.

Примечание. Контейнер, использующий Secret в качестве монтирования тома subPath, не будет получать обновления Secret.

Это пример модуля, который использует секреты от переменных среды:

apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password
  restartPolicy: Never

В обоих случаях вам необходимо изменить спецификацию модуля. Вы можете сделать это, отредактировав Pod или Deployment с помощью kubectl edit:

$ kubectl edit pod <pod_name> -n <namespace_name>
$ kubectl edit deployment <deployment_name> -n <namespace_name>

В качестве альтернативы вы можете внести изменения в файл YAML и применить его:

$ vi MyPod.yaml
$ kubectl apply -f MyPod.yaml

Самое важное, что вам нужно знаете, если вы измените спецификацию модуля, ваш модуль будет перезапущен для применения изменений. В случае развертывания будет происходить непрерывное обновление. В большинстве случаев это нормально. Если вам нужно сохранить состояние вашего приложения, лучший способ - хранить ценную информацию с помощью томов.

Если вы все еще хотите добавить секреты без перезапусков Pod, вы можете использовать общее хранилище, например NFS. Когда вы изменяете содержимое тома NFS, который уже смонтирован в модуле, изменения сразу же будут видны внутри модуля. В некоторых случаях вы можете выполнить оболочку внутри модуля и смонтировать том NFS вручную.

В качестве альтернативы, вы можете экспортировать содержимое секрета в файл, используя программу ksd
(или base64 -d) для декодирования закодированных в base64 значений в Secret:

kubectl get secret mysecret -o yaml | ksd > filename.yaml

и копируют его в модуль, используя следующую команду:

kubectl cp filename.yaml <some-namespace>/<some-pod>:/tmp/secret.yaml
0
ответ дан VAS 18 January 2019 в 10:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: