#kubernetes #rabbitmq #rabbitmqctl
Вопрос:
Я пытаюсь удалить очереди rabbitmq на определенном хосте с помощью команды kubectl. Если я дам команду ниже, я смогу удалить очередь.
kubectl.exe exec -n kayaks svc/rabbitmq-ha -- rabbitmqctl --vhost=AM-Dev delete_queue 'TestDeletion'
Но я хочу удалить набор очередей, которые все начинаются с какого-то определенного имени, например » woms -«. Как сделать то же самое. Я попытался ниже, но это приводит к синтаксической ошибке, и я не могу определить проблему.
kubectl exec -n kayaks svc/rabbitmq-ha -- rabbitmqctl --vhost=AM-Dev eval 'IfUnused = false, IfEmpty = true, MatchRegex = lt;lt;"^woms-"gt;gt;, [rabbit_amqqueue:delete(Q, IfUnused, IfEmpty) || Q lt;- rabbit_amqqueue:list(), re:run(element(4, element(2, Q)), MatchRegex) =/= nomatch ].'
****kubectl : Error (argument validation): "syntax error before: '^'" At line:1 char:1 kubectl exec -n kayaks svc/rabbitmq-ha -- rabbitmqctl --vhost=AM-Dev ...****
Может ли кто-нибудь подсказать мне, в чем заключается ошибка, которую я совершаю.
Комментарии:
1. Я выполняю команду kubectl на сервисе. Обратите внимание, что я могу успешно удалить одну очередь, указав имя очереди. Моя проблема в том, что мне нужно удалить набор очередей с определенным префиксом.
2. Как насчет открытия сеанса bash/sh в контейнер и выполнения вашей команды оттуда?
kubectl exec -it -n kayaks svc/rabbitmq-ha /bin/sh
3. Я думаю, вы не поняли моего вопроса. Моя проблема в том, что я не выполняю команду. Потому что это отлично работает для одной очереди. Проблема в том, что я хочу выполнить много очередей в одной команде.
4. Да, я говорю, что вы можете открыть сеанс оболочки в контейнере, а затем сделать:
rabbitmqctl --vhost=AM-Dev eval 'IfUnused = false, IfEmpty = true, MatchRegex = lt;lt;"^woms-"gt;gt;, [rabbit_amqqueue:delete(Q, IfUnused, IfEmpty) || Q lt;- rabbit_amqqueue:list(), re:run(element(4, element(2, Q)), MatchRegex) =/= nomatch ].'
5. Вы хотите сказать, что ошибка, с которой я сталкиваюсь, не из-за синтаксической ошибки, а из-за чего-то другого? Извините, но я не очень хорошо знаком с эрлангом.