Создать патч для добавления аннотации kubernetes - PullRequest
0 голосов
/ 08 апреля 2019

Я хотел бы написать мутирующий webhook , чтобы добавить входной класс по умолчанию ко всем входящим объектам, которые явно не предоставляют его.

Согласно примерам я обнаружил, что мне нужно предоставить правильный json-патч для возврата webhook.

Я впервые попробовал свои патчи, используя kubectl:

$ kubectl patch ingress mying --type='json' -p='[{"op": "add", "path": "/metadata/annotations/key", "value":"value"}]'
The  "" is invalid

Похоже, что это не работает, когда еще нет элемента аннотации.

$ kubectl patch ingress mying --type='json' -p='[{"op": "add", "path": "/metadata/annotations", "value":{"key":"value"}}]'
ingress.extensions/kafka-monitoring-topics-ui patched

Создание полного элемента аннотаций работает нормально, однако в моем случае мне нужен ключ kubernetes.io/ingress.class, который содержит косую черту.

kubectl patch ingress mying --type='json' -p='[{"op": "add", "path": "/metadata/annotations", "value":{"kubernetes.io/ingress.class":"value"}}]'
ingress.extensions/kafka-monitoring-topics-ui patched

Это прекрасно работает при создании объекта аннотации. Однако, если уже есть какая-то аннотация, и я просто хочу добавить один, кажется, добавить его невозможно.

Простое использование [{"op": "add", "path": "/metadata/annotations", "value":{"kubernetes.io/ingress.class":"value"}}] удаляет все существующие аннотации, а что-то вроде '[{"op": "add", "path": "/metadata/annotations/kubernetes.io/ingress.class", "value": "value"}] не работает из-за косой черты.

Короче говоря: как правильно добавить класс входа, используя подходящий патч?

PS: Да, я знаю о kubectl annotate, но, к сожалению, это не помогает с моим webhook.

1 Ответ

4 голосов
/ 08 апреля 2019

Заменить косую черту (/) в kubernetes.io/ingress.class на ~1.

Ваша команда должна выглядеть следующим образом:

$ kubectl patch ingress mying --type='json' -p='[{"op": "add", "path": "/metadata/annotations/kubernetes.io~1ingress.class", "value":"nginx"}]'

Ссылка: RFC 6901 https://tools.ietf.org/html/rfc6901#section-3

...