<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cli on Lead DevOps</title><link>https://lead-devops.blackdevhub.online/tags/cli/</link><description>Recent content in Cli on Lead DevOps</description><generator>Hugo</generator><language>ru-RU</language><lastBuildDate>Thu, 24 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://lead-devops.blackdevhub.online/tags/cli/index.xml" rel="self" type="application/rss+xml"/><item><title>kubectl cheatsheet: основные команды для работы с Kubernetes</title><link>https://lead-devops.blackdevhub.online/posts/kubectl-cheatsheet/</link><pubDate>Thu, 24 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/kubectl-cheatsheet/</guid><description>&lt;p&gt;kubectl — основной инструмент взаимодействия с Kubernetes-кластером. Ниже собрана шпаргалка по рутинным операциям: от настройки контекста до отладки подов и переключения между namespace. Все команды проверены на актуальных версиях kubectl (1.28+).&lt;/p&gt;&#10;&lt;h2 id="установка-и-настройка-контекста"&gt;Установка и настройка контекста&#10;&lt;/h2&gt;&#10;&lt;p&gt;Установка зависит от ОС. На Linux через пакетный менеджер или бинарник:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-3a900753-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="3"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-3a900753-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -LO &lt;span class="s2"&gt;&amp;#34;https://dl.k8s.io/release/&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;curl -L -s https://dl.k8s.io/release/stable.txt&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;/bin/linux/amd64/kubectl&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x kubectl &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo mv kubectl /usr/local/bin/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl version --client&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Конфигурация хранится в &lt;code&gt;~/.kube/config&lt;/code&gt;. Контекст определяет кластер, пользователя и namespace по умолчанию.&lt;/p&gt;</description></item><item><title>Git Tag: разметка релизов и закладки в истории</title><link>https://lead-devops.blackdevhub.online/posts/git-tag/</link><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/git-tag/</guid><description>&lt;h2 id="git-tag-разметка-релизов-и-закладки-в-истории"&gt;Git Tag: разметка релизов и закладки в истории&#10;&lt;/h2&gt;&#10;&lt;p&gt;Теги — это механизм Git для присвоения осмысленных меток конкретным коммитам. В отличие от веток, теги не двигаются: они зафиксированы в точке коммита и служат якорями для релизов, версий и важных контрольных точек. Без тегов релизная история превращается в поиск по хешам — и это прямой путь к ошибкам деплоя.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="типы-тегов-lightweight-vs-annotated"&gt;Типы тегов: lightweight vs annotated&#10;&lt;/h2&gt;&#10;&lt;p&gt;Существует два типа тегов. Lightweight — это просто имя, привязанное к коммиту, без дополнительных метаданных. Annotated — полноценный объект Git с автором, датой, сообщением и возможностью подписи.&lt;/p&gt;</description></item><item><title>pipx: изолированные Python-утилиты без боли</title><link>https://lead-devops.blackdevhub.online/posts/pipx/</link><pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/pipx/</guid><description>&lt;p&gt;pipx решает простую, но хроническую проблему: когда нужно запустить Python-утилиту однажды или разово, а &lt;code&gt;pip install&lt;/code&gt; засоряет глобальное окружение или требует виртуальное окружение, которое потом забываешь удалить. pipx создаёт изолированное venv для каждой утилиты, устанавливает туда зависимости и делает бинарник доступным в &lt;code&gt;$PATH&lt;/code&gt;. Одна команда — и утилита работает, не конфликтуя ни с чем.&lt;/p&gt;&#10;&lt;h2 id="что-такое-pipx-и-зачем-он-нужен"&gt;Что такое pipx и зачем он нужен&#10;&lt;/h2&gt;&#10;&lt;p&gt;pipx — это инструмент для установки и запуска Python-приложений в изолированных виртуальных окружениях. Каждая утилита живёт в своём venv под &lt;code&gt;~/.local/pipx/venvs/&lt;/code&gt;, а её console-scripts симлинкуются в &lt;code&gt;~/.local/bin/&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>ip: сетевая настройка и диагностика в CLI</title><link>https://lead-devops.blackdevhub.online/posts/ip-command-network-cli/</link><pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/ip-command-network-cli/</guid><description>&lt;p&gt;Когда привычный ifconfig выдаёт пустую строку, а настройка маршрута через route требует отдельной команды — это не баг системы. Это iproute2, который в современных дистрибутивах вытеснил net-tools. Утилита ip из пакета iproute2 — стандартный интерфейс управления сетевым стеком Linux. Она покрывает интерфейсы, адреса, маршруты, ARP-кеш, правила маршрутизации и изоляцию через namespace.&lt;/p&gt;&#10;&lt;h2 id="зачем-iproute2-заменил-net-tools"&gt;Зачем iproute2 заменил net-tools&#10;&lt;/h2&gt;&#10;&lt;p&gt;net-tools (ifconfig, route, arp, netstat, nameif) появились в BSD и перешли в Linux в 90-х. К 2000-м стало очевидно: они не поддерживают VLAN, IPsec, QoS, multicast-маршрутизацию и Policy Routing. Каждая задача требовала отдельной команды с несвязанным синтаксисом.&lt;/p&gt;</description></item><item><title>OpenSSL: проверка и разбор TLS-сертификатов в CLI</title><link>https://lead-devops.blackdevhub.online/posts/openssl-check-tls-certificates/</link><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/openssl-check-tls-certificates/</guid><description>&lt;p&gt;Уже забыли, когда последний раз сертификат на проде протухал неожиданно? Знакомо. OpenSSL умеет отвечать на вопросы о TLS-сертификатах быстрее, чем любой чекер из маркетплейса. Разбираем ключевые сценарии без воды.&lt;/p&gt;&#10;&lt;h2 id="базовый-разбор-сертификата"&gt;Базовый разбор сертификата&#10;&lt;/h2&gt;&#10;&lt;p&gt;Первая команда, с которой начинается любая диагностика — текстовый дамп сертификата.&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-aee942c7-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-aee942c7-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openssl x509 -text -noout -in cert.pem&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Вывод показывает Subject, Issuer, сроки валидности, алгоритм подписи и публичный ключ. Для быстрой справки без простыни:&lt;/p&gt;</description></item><item><title>curl: отладка HTTP в терминале</title><link>https://lead-devops.blackdevhub.online/posts/curl-http-debugging-cli/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/curl-http-debugging-cli/</guid><description>&lt;p&gt;cURL — стандартный инструмент отладки HTTP в терминале. Работает из коробки в Linux и macOS, есть в большинстве Docker-образов. Если нужно быстро проверить API, посмотреть заголовки ответа или отловить проблему с редиректом — одной строки достаточно.&lt;/p&gt;&#10;&lt;h2 id="базовые-флаги-отладки"&gt;Базовые флаги отладки&#10;&lt;/h2&gt;&#10;&lt;p&gt;Самый частый сценарий — получить ответ и увидеть, что сервер отдал. Ключ &lt;code&gt;-i&lt;/code&gt; выводит заголовки перед телом, &lt;code&gt;-v&lt;/code&gt; включает подробный режим с деталями соединения.&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-38d1e288-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="2"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-38d1e288-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -i https://api.example.com/health&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -v https://api.example.com/health&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Разница: &lt;code&gt;-i&lt;/code&gt; показывает заголовки + тело, &lt;code&gt;-v&lt;/code&gt; добавляет DNS-резолв, TLS-handshake и отладочную информацию до запроса.&lt;/p&gt;</description></item><item><title>ss: socket statistics вместо устаревшего netstat</title><link>https://lead-devops.blackdevhub.online/posts/ss-replace-netstat/</link><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/ss-replace-netstat/</guid><description>&lt;p&gt;Если &lt;code&gt;netstat&lt;/code&gt; зависает на сервере с десятками тысяч соединений — пора переходить на &lt;code&gt;ss&lt;/code&gt;. Утилита из пакета &lt;code&gt;iproute2&lt;/code&gt; работает напрямую с ядром через netlink, а не парсит &lt;code&gt;/proc/net/*&lt;/code&gt;. Результат — мгновенный вывод и меньше накладных расходов.&lt;/p&gt;&#10;&lt;h2 id="зачем-переходить-с-netstat"&gt;Зачем переходить с netstat&#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;netstat&lt;/code&gt; из &lt;code&gt;net-tools&lt;/code&gt; использует устаревшую схему: читает файлы из &lt;code&gt;/proc/net/tcp&lt;/code&gt;, &lt;code&gt;/proc/net/unix&lt;/code&gt; и преобразует числовые ID в символические имена. На сервере с активными соединениями это занимает секунды и нагружает CPU.&lt;/p&gt;</description></item></channel></rss>