Kubernetes - Использование определенной версии ConfigMap - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть пара вопросов относительно управления версиями configMap.

  1. Можно ли использовать конкретную версию configMap в файле развертывания?

  2. Я не вижу никаких API для получения списка версий. Как получить список версий?

  3. Можно ли сравнить версии configMap с ч / б?
  4. Как контролировать количество версий?

Спасибо

1 Ответ

0 голосов
/ 26 апреля 2018

Можно ли использовать конкретную версию configMap в файле развертывания?

Не совсем.
Наиболее близким понятием «версия» является resourceVersion, но он не предназначен для прямого действия пользователя.

См. Соглашения API: контроль и согласованность параллелизма :

Kubernetes использует концепцию версий ресурсов для достижения оптимистичного параллелизма. Все ресурсы Kubernetes имеют поле "resourceVersion" как часть своих метаданных. Эта resourceVersion является строкой, которая идентифицирует внутреннюю версию объекта, которая может использоваться клиентами для определения, когда объекты изменились.
Когда запись будет обновлена, ее версия проверяется по предварительно сохраненному значению, и если она не совпадает, обновление завершается с ошибкой StatusConflict (код состояния HTTP 409).

Сервер resourceVersion изменяется каждый раз, когда изменяется объект. Если resourceVersion включено в операцию PUT, система проверит, что во время цикла чтения / изменения / записи не было других успешных мутаций ресурса, проверив, что текущее значение resourceVersion соответствует указанному значению. .

resourceVersion в настоящее время поддерживается etcd modifiedIndex.
Однако важно отметить, что приложение не должно полагаться на детали реализации системы управления версиями, поддерживаемой Kubernetes. Мы можем изменить реализацию resourceVersion в будущем, например, изменить ее на метку времени или счетчик для каждого объекта.

Единственный способ узнать ожидаемое значение resourceVersion для клиента - это получить его от сервера в ответ на предыдущую операцию, обычно GET. Это значение ДОЛЖНО рассматриваться клиентами как непрозрачные и передаваться неизмененным обратно на сервер.
Клиенты не должны предполагать, что версия ресурса имеет значение для пространств имен, разных видов ресурсов или разных серверов.
В настоящее время значение resourceVersion установлено в соответствии с секвенсором etcd. Вы можете думать об этом как о логических часах, которые сервер API может использовать для заказа запросов. Тем не менее, мы ожидаем, что реализация resourceVersion изменится в будущем, например, в случае, если мы осколку состояния по виду и / или пространству имен или портируем на другую систему хранения.

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

Client #1                                  Client #2
GET Foo                                    GET Foo
Set Foo.Bar = "one"                        Set Foo.Baz = "two"
PUT Foo                                    PUT Foo

Когда эти последовательности происходят параллельно, может быть потеряно либо изменение на Foo.Bar, либо изменение на Foo.Baz.

С другой стороны, при указании resourceVersion один из PUT s завершится ошибкой, поскольку в зависимости от того, какая запись завершится успешно, resourceVersion изменится на Foo.

resourceVersion может использоваться в качестве предварительного условия для других операций (например, GET, DELETE) в будущем, например, для согласованности чтения после записи при наличии кэширования.

Операции «Наблюдение» указывают resourceVersion с использованием параметра запроса. Он используется для указания точки, с которой начинается просмотр указанных ресурсов.
Это может быть использовано для того, чтобы не пропустить никаких мутаций между GET ресурса (или списка ресурсов) и последующим наблюдением, даже если текущая версия ресурса более поздняя.
В настоящее время это основная причина того, что операции со списками (GET в коллекции) возвращают resourceVersion.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...