Оригинал: CNPG Recipe 14 — Useful Command-Line Tools — 11 октября 2024.
Три утилиты командной строки, без которых работа с CloudNativePG превращается в бесконечную цепочку kubectl get ... | base64 -d | openssl .... Они ощутимо ускоряют инспекцию secret’ов, проверку сертификатов и просмотр логов с нескольких подов одновременно.
view-secret — расшифровка secret’ов
Плагин view-secret
для kubectl берёт на себя расшифровку base64-значений из Secret-ресурсов. Вместо длинной комбинации kubectl get secret ... -o jsonpath=... | base64 -d достаточно:
kubectl view-secret cluster-example-app pgpassКоманда сразу выведет расшифрованный pgpass-файл пользователя app.
Полезные флаги:
- без указания ключа — спросит интерактивно, какое поле показать;
-a(--all) — выводит все поля Secret сразу.
view-cert — инспекция TLS-сертификатов
Аналогичный плагин view-cert
умеет показывать TLS-сертификаты, лежащие в Kubernetes Secret’ах. Заменяет цепочки с openssl x509 -text -noout:
kubectl view-cert cluster-example-ca ca.crtНа выходе — JSON с метаданными сертификата: validity, issuer, subject, SAN. Удобно дебажить mTLS и ротации сертификатов в CloudNativePG (особенно в связке с Рецептом 2, где разбираются дефолтные TLS-секреты кластера).
stern — логи с нескольких подов
stern
умеет тейлить логи сразу с нескольких подов, фильтруя их по label-селектору. Для CloudNativePG, где у каждого инстанса свой под (primary + N standby), это как минимум удобнее, чем kubectl logs -f по одному:
stern -l cnpg.io/cluster=cluster-example -o ppextjsonЭта команда тейлит все поды кластера cluster-example сразу. Из приятного:
- цветовая дифференциация подов;
- кастомные шаблоны вывода (флаг
-o/--template); - фильтрация по namespace, контейнеру, регулярке.
Вывод
Эти три утилиты не делают ничего, что нельзя сделать стандартным kubectl. Но они сильно сокращают boilerplate при ежедневной работе с PostgreSQL в Kubernetes — особенно при дебаге проблем с подключениями, сертификатами и репликацией.