|
| 1 | +--- |
| 2 | +title: Генерация справочной документации для команд kubectl |
| 3 | +content_template: templates/task |
| 4 | +weight: 90 |
| 5 | +--- |
| 6 | + |
| 7 | +{{% capture overview %}} |
| 8 | + |
| 9 | +На этой странице показано, как сгенерировать справочник для команды `kubectl`. |
| 10 | + |
| 11 | +{{< note >}} |
| 12 | +На этой странице показывается, как сгенерировать справочную документацию для таких [команд kubectl](/ru/docs/reference/generated/kubectl/kubectl-commands), как [kubectl apply](/ru/docs/reference/generated/kubectl/kubectl-commands#apply) и [kubectl taint](/ru/docs/reference/generated/kubectl/kubectl-commands#taint). |
| 13 | +Этот раздел не рассматривает генерацию справочной страницы для опций [kubectl](/ru/docs/reference/generated/kubectl/kubectl/). Инструкции по генерации справочной страницы опций kubectl смотрите в разделе [Генерация справочной документации для компонентов и инструментов Kubernetes](/ru/docs/contribute/generate-ref-docs/kubernetes-components/). |
| 14 | +{{< /note >}} |
| 15 | + |
| 16 | +{{% /capture %}} |
| 17 | + |
| 18 | +{{% capture prerequisites %}} |
| 19 | + |
| 20 | +{{< include "prerequisites-ref-docs.md" >}} |
| 21 | + |
| 22 | +{{% /capture %}} |
| 23 | + |
| 24 | +{{% capture steps %}} |
| 25 | + |
| 26 | +## Настройка локальных репозиториев |
| 27 | + |
| 28 | +Создайте рабочую область и определите переменную окружения `GOPATH`. |
| 29 | + |
| 30 | +```shell |
| 31 | +mkdir -p $HOME/<workspace> |
| 32 | + |
| 33 | +export GOPATH=$HOME/<workspace> |
| 34 | +``` |
| 35 | + |
| 36 | +Загрузите локальные копии следующих репозиториев: |
| 37 | + |
| 38 | +```shell |
| 39 | +go get -u github.com/spf13/pflag |
| 40 | +go get -u github.com/spf13/cobra |
| 41 | +go get -u gopkg.in/yaml.v2 |
| 42 | +go get -u kubernetes-sigs/reference-docs |
| 43 | +``` |
| 44 | + |
| 45 | +Если у вас ещё нет копии репозитория kubernetes/website, клонируйте её на свой компьютер: |
| 46 | + |
| 47 | +```shell |
| 48 | +git clone https://github.com/<your-username>/website $GOPATH/src/github.com/<your-username>/website |
| 49 | +``` |
| 50 | + |
| 51 | +Склонируйте репозиторий kubernetes/kubernetes по пути k8s.io/kubernetes: |
| 52 | + |
| 53 | +```shell |
| 54 | +git clone https://github.com/kubernetes/kubernetes $GOPATH/src/k8s.io/kubernetes |
| 55 | +``` |
| 56 | + |
| 57 | +Удалите пакет spf13 в `$GOPATH/src/k8s.io/kubernetes/vendor/github.com`. |
| 58 | + |
| 59 | +```shell |
| 60 | +rm -rf $GOPATH/src/k8s.io/kubernetes/vendor/github.com/spf13 |
| 61 | +``` |
| 62 | + |
| 63 | +В репозитории kubernetes/kubernetes использует исходный код `kubectl` и `kustomize`. |
| 64 | + |
| 65 | +* Определите базовую директорию вашей копии репозитория [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes). |
| 66 | +Например, если вы выполнили предыдущий шаг, чтобы получить репозиторий, вашей базовой директорией будет `$GOPATH/src/k8s.io/kubernetes`. |
| 67 | +В остальных командах базовая директория будет именоваться как `<k8s-base>`. |
| 68 | + |
| 69 | +* Определите базовую директорию вашей копии репозитория [kubernetes/website](https://github.com/kubernetes/website). |
| 70 | +Например, если вы выполнили предыдущий шаг, чтобы получить репозиторий, вашей базовой директорией будет `$GOPATH/src/github.com/<your-username>/website`. |
| 71 | +В остальных команд базовая директория будет именоваться как `<web-base>`. |
| 72 | + |
| 73 | +* Определите базовую директорию вашей копии репозитория [kubernetes-sigs/reference-docs](https://github.com/kubernetes-sigs/reference-docs). |
| 74 | +Например, если вы выполнили предыдущий шаг, чтобы получить репозиторий, вашей базовой директорией будет `$GOPATH/src/github.com/kubernetes-sigs/reference-docs`. |
| 75 | +В остальных команд базовая директория будет именоваться как `<rdocs-base>`. |
| 76 | + |
| 77 | +В вашем локальном репозитории k8s.io/kubernetes переключитесь в нужную вам ветку и убедитесь, что она в актуальном состоянии. Например, если вам нужно сгенерировать документацию для Kubernetes 1.17, вы можете использовать эти команды: |
| 78 | + |
| 79 | +```shell |
| 80 | +cd <k8s-base> |
| 81 | +git checkout v1.17.0 |
| 82 | +git pull https://github.com/kubernetes/kubernetes v1.17.0 |
| 83 | +``` |
| 84 | + |
| 85 | +Если вам не нужно изменять исходный код `kubectl`, следуйте инструкциям по [определению переменных сборки](#настройка-переменных-для-сборки). |
| 86 | + |
| 87 | +## Редактирование исходного кода kubectl |
| 88 | + |
| 89 | +Справочная документация по команде kubectl генерируется автоматически из исходного кода kubectl. Если вы хотите изменить справочную документацию, сначала измените один или несколько комментариев в исходном коде kubectl. Сделайте изменения в локальный репозиторий kubernetes/kubernetes, а затем отправьте пулреквест в ветку master репозитория [github.com/kubernetes/kubernetes](https://github.com/kubernetes/kubernetes). |
| 90 | + |
| 91 | +[PR 56673](https://github.com/kubernetes/kubernetes/pull/56673/files) — пример пулреквеста, который исправляет опечатку в исходном коде kubectl. |
| 92 | + |
| 93 | +Отслеживайте пулреквест и по мере необходимости отвечайте на комментарии рецензента. Не забывайте отслеживать активность в пулреквест до тех пор, пока он не будет принят в ветку master репозитория kubernetes/kubernetes. |
| 94 | + |
| 95 | +## Применение вашего изменения в ветку выпуска |
| 96 | + |
| 97 | +Теперь ваше изменение в ветке master, которая используется для разработки следующего выпуска Kubernetes. Если вы хотите добавить ваше изменение в документацию для уже выпущенной версии Kubernetes, вам нужно применить коммит с соответствующим изменением в нужную ветку выпуска. |
| 98 | + |
| 99 | +Например, предположим, что ветка master используется для разработки Kubernetes 1.10, а вам нужно бэкпортировать ваше изменение в ветку release-1.15. За инструкциями обратитесь к странице [Propose a Cherry Pick](https://git.k8s.io/community/contributors/devel/sig-release/cherry-picks.md). |
| 100 | + |
| 101 | +Отслеживайте ваш пулреквест с применённым изменением до тех пор, пока он не будет объединён в ветку выпуска. |
| 102 | + |
| 103 | +{{< note >}} |
| 104 | +Применение коммита требует наличия возможности добавить метку и этап в вашем пулреквесте. Если у вас нет таких разрешений, вам нужно переговорить с кем-то, кто может сделать это для вас. |
| 105 | +{{< /note >}} |
| 106 | + |
| 107 | +## Настройка переменных для сборки |
| 108 | + |
| 109 | +Перейдите на `<rdocs-base>`. В командной строке установите следующие переменные окружения. |
| 110 | + |
| 111 | +* `K8S_ROOT` со значением `<k8s-base>`. |
| 112 | +* `WEB_ROOT` со значением `<web-base>`. |
| 113 | +* `K8S_RELEASE` со значением нужной версии документации. |
| 114 | + Например, если вы хотите собрать документацию для Kubernetes версии 1.17, определите переменную окружения `K8S_RELEASE` со значением 1.17. |
| 115 | + |
| 116 | +Примеры: |
| 117 | + |
| 118 | +```shell |
| 119 | +export WEB_ROOT=$(GOPATH)/src/github.com/<your-username>/website |
| 120 | +export K8S_ROOT=$(GOPATH)/src/k8s.io/kubernetes |
| 121 | +export K8S_RELEASE=1.17 |
| 122 | +``` |
| 123 | + |
| 124 | +## Создание версионированной директории |
| 125 | + |
| 126 | +Скрипт сборки `createversiondirs` создаёт версионированную директорию и копирует туда конфигурационные файлы справочника kubectl. |
| 127 | +Имя версионированной директории имеет следующий вид: `v<major>_<minor>`. |
| 128 | + |
| 129 | +В директории `<rdocs-base>` выполнение следующий скрипт сборки: |
| 130 | + |
| 131 | +```shell |
| 132 | +cd <rdocs-base> |
| 133 | +make createversiondirs |
| 134 | +``` |
| 135 | + |
| 136 | +## Переход в тег выпуска в k8s.io/kubernetes |
| 137 | + |
| 138 | +В вашем локальном репозитории `<k8s-base>` перейдите в ветку с версией Kubernetes, для которой вы хотите получить документацию. Например, если вы хотите сгенерировать документацию для Kubernetes 1.17, перейдите в тег `v1.17.0`. Убедитесь, что ваша локальная ветка содержит актуальные изменения. |
| 139 | + |
| 140 | +```shell |
| 141 | +cd <k8s-base> |
| 142 | +git checkout v1.17.0 |
| 143 | +git pull https://github.com/kubernetes/kubernetes v1.17.0 |
| 144 | +``` |
| 145 | + |
| 146 | +## Выполнение кода для генерации документации |
| 147 | + |
| 148 | +В вашей локальной директории `<rdocs-base>` запустите скрипт сборки `copycli`. Команда выполняется от пользователя `root`: |
| 149 | + |
| 150 | +```shell |
| 151 | +cd <rdocs-base> |
| 152 | +make copycli |
| 153 | +``` |
| 154 | + |
| 155 | +Команда `copycli` удаляет временную директорию сборки, генерирует файлы команды kubectl и копирует полученную HTML-страницу справочника команде kubectl и ресурсы в `<web-base>`. |
| 156 | + |
| 157 | +## Проверка сгенерированных файлов |
| 158 | + |
| 159 | +Убедитесь в том, что перечисленные ниже два файлы были сгенерированы: |
| 160 | + |
| 161 | +```shell |
| 162 | +[ -e "<rdocs-base>/gen-kubectldocs/generators/build/index.html" ] && echo "index.html built" || echo "no index.html" |
| 163 | +[ -e "<rdocs-base>/gen-kubectldocs/generators/build/navData.js" ] && echo "navData.js built" || echo "no navData.js" |
| 164 | +``` |
| 165 | + |
| 166 | +## Проверка скопированных файлов |
| 167 | + |
| 168 | +Убедитесь в том, все сгенерированные файлы были скопированы в вашу директорию `<web-base>`: |
| 169 | + |
| 170 | +```shell |
| 171 | +cd <web-base> |
| 172 | +git status |
| 173 | +``` |
| 174 | + |
| 175 | +В выводе должны перечислены изменённые файлы: |
| 176 | + |
| 177 | +``` |
| 178 | +static/docs/reference/generated/kubectl/kubectl-commands.html |
| 179 | +static/docs/reference/generated/kubectl/navData.js |
| 180 | +``` |
| 181 | + |
| 182 | +Также в выводе должно быть: |
| 183 | + |
| 184 | +``` |
| 185 | +static/docs/reference/generated/kubectl/scroll.js |
| 186 | +static/docs/reference/generated/kubectl/stylesheet.css |
| 187 | +static/docs/reference/generated/kubectl/tabvisibility.js |
| 188 | +static/docs/reference/generated/kubectl/node_modules/bootstrap/dist/css/bootstrap.min.css |
| 189 | +static/docs/reference/generated/kubectl/node_modules/highlight.js/styles/default.css |
| 190 | +static/docs/reference/generated/kubectl/node_modules/jquery.scrollto/jquery.scrollTo.min.js |
| 191 | +static/docs/reference/generated/kubectl/node_modules/jquery/dist/jquery.min.js |
| 192 | +static/docs/reference/generated/kubectl/node_modules/font-awesome/css/font-awesome.min.css |
| 193 | +``` |
| 194 | + |
| 195 | +## Проверка документации локально |
| 196 | + |
| 197 | +Соберите документацию Kubernetes в вашей директории `<web-base>`. |
| 198 | + |
| 199 | +```shell |
| 200 | +cd <web-base> |
| 201 | +make docker-serve |
| 202 | +``` |
| 203 | + |
| 204 | +Посмотрите [локальную предварительную версию сайта](https://localhost:1313/docs/reference/generated/kubectl/kubectl-commands/). |
| 205 | + |
| 206 | +## Добавление и фиксация изменений в kubernetes/website |
| 207 | + |
| 208 | +Выполните команду `git add` и `git commit` для фиксации файлов. |
| 209 | + |
| 210 | +## Создание пулреквеста |
| 211 | + |
| 212 | +Создайте пулреквест в репозиторий `kubernetes/website`. Отслеживайте изменения в пулреквесте и по мере необходимости отвечайте на комментарии рецензента. Не забывайте проверять пулреквест до тех пор, пока он не будет принят. |
| 213 | + |
| 214 | +Спустя несколько минут после принятия вашего пулреквеста, обновленные темы справочника будут отображены в [документации](/ru/docs/home/). |
| 215 | + |
| 216 | +{{% /capture %}} |
| 217 | + |
| 218 | +{{% capture whatsnext %}} |
| 219 | + |
| 220 | +* [Руководство по быстрому старту генерации справочной документации](/ru/docs/contribute/generate-ref-docs/quickstart/) |
| 221 | +* [Генерация справочной документации для компонентов и инструментов Kubernetes](/ru/docs/contribute/generate-ref-docs/kubernetes-components/) |
| 222 | +* [Генерация справочной документации для API Kubernetes](/ru/docs/contribute/generate-ref-docs/kubernetes-api/) |
| 223 | + |
| 224 | +{{% /capture %}} |
0 commit comments