Применить аннотацию при создании объекта через `kubectl` - PullRequest
0 голосов
/ 17 мая 2019

Почти мой вопрос в названии.Я хотел бы знать, есть ли способ применить аннотацию при создании объекта в Kubernetes через kubectl.

Я расскажу вам больше в контексте.Я создаю внутренний балансировщик нагрузки на GKE.Чтобы сделать балансировщик нагрузки внутренним, в GKE вы бы добавили следующую аннотацию к сервису: cloud.google.com/load-balancer-type: "Internal".

Но при представлении развертывания я могу выбрать только тип LoadBalancer:

$ kubectl expose deploy nginx --port 80 --type LoadBalancer

Есть ли способ применить аннотацию также на лету при создании службы?

РЕДАКТИРОВАТЬ

Iпопробовал следующую команду, которая кажется аккуратной:

kubectl expose deploy nginx --port 80 --type LoadBalancer --overrides '{ "metadata": { "annotations": { "cloud.google.com/load-balancer-type": "Internal" } } }'

... но я получаю следующую ошибку, которую я не знаю, как интерпретировать:

error: unable to convert the internal object type *core.Service to Unstructured without providing a preferred version to convert to.

Вот откуда: источник

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Я не совсем уверен, если это то, что вы ищете, но это работает, и это однострочный

kubectl expose deploy nginx --port 80 --type LoadBalancer -oyaml --dry-run > file; sed -i 's/creationTimestamp: null/annotations:\n    cloud.google.comload-balancer-type: "Internal"/g' file

Я знаю, что это не самый хороший и чистый способ.

Редактировать:

Чтобы добавить немного подробностей в команду.

В ней раскрывается развертывание nginx с указанным портом и типом.-oyaml выводится в формате yaml, а --dry-run только печатает без выполнения.

Затем sed заменяет creationTimestamp: null на annotations и в новой строке добавляет cloud.google.com/load-balancer-type: "Internal".

0 голосов
/ 17 мая 2019

«Kubectl expose», как и другие подкоманды kubectl, не имеет необходимых параметров для включения аннотаций. Kubectl имеет универсальную подкоманду «аннотировать», но это не всегда применимо. Таким образом, в большинстве случаев манифесты YAML являются единственным жизнеспособным способом.

...