Kubernetesに貢献する
Kubernetesに貢献する方法はたくさんあります。
新機能の設計に取り組むこともできますし、既存のコードにドキュメントを追加することも、ブログ で記事を書くこともできます。
それだけではありません。新機能を実装したり、バグを修正したりすることもできます。
貢献者コミュニティへの参加を支援することも、既存の貢献者をサポートすることもできます。
様々な方法でプロジェクトに貢献することができるため、Kubernetesは https://k8s.dev/ という専用のウェブサイトを作成しました。
Kubernetesへの貢献についてもっと学ぶために、参照することができます。
もし この ドキュメントへの貢献について特に学びたい場合は、Kubernetesドキュメントへの貢献 を参照してください。
また、Kubernetesへの貢献については、CNCF のページ を参照することもできます。
1 - Kubernetesのドキュメントに貢献する
このウェブサイトはKubernetes SIG Docs が管理しています。
Kubernetesプロジェクトは初心者でも経験者でも、全てのコントリビューターからの改善を歓迎しています!
Kubernetesドキュメントコントリビューターは
既存のコンテンツを改善します
新しいコンテンツを作成します
ドキュメントを翻訳します
Kubernetesリリースサイクルの一部としてドキュメントを管理・公開します
はじめに
どなたでも、問題を説明するissueや、ドキュメントの改善を求めるissueを作成し、kubernetes/website
GitHubリポジトリ に対するプルリクエスト(PR)を用いて変更に貢献することができます。
Kubernetesコミュニティで効果的に働くためには、git とGitHub を基本的に使いこなせる必要があります。
ドキュメンテーションに関わるには:
CNCFのContributor License Agreement にサインしてください。
ドキュメンテーションのリポジトリ と、ウェブサイトの静的サイトジェネレーター に慣れ親しんでください。
プルリクエストのオープン と変更レビュー の基本的なプロセスを理解していることを確認してください。
flowchart TB
subgraph third[プルリクエストのオープン]
direction TB
U[ ] -.-
Q[コンテンツを改善する] --- N[コンテンツを作成する]
N --- O[ドキュメントを翻訳する]
O --- P[k8sリリースサイクルの ドキュメントを管理する]
end
subgraph second[レビュー]
direction TB
T[ ] -.-
D[kubernetes/website リポジトリを確認する] --- E[静的サイトジェネレーター Hugoを確認する]
E --- F[基本的なGitHubの コマンドを理解する]
F --- G[オープンした プルリクエストを確認し レビュープロセスを見直す]
end
subgraph first[サインアップ]
direction TB
S[ ] -.-
B[CNCFの コントリビューターライセンス サインに署名する] --- C[Slackチャンネル sig-docs に 参加する]
C --- V[kubernetes-sig-docsの メーリングリストに 参加する]
V --- M[毎週開催している sig-docs callsや slack callsに 参加する]
end
A([fa:fa-user 新たな コントリビューター]) --> first
A --> second
A --> third
A --> H[質問をする!!!]
classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px;
classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold
classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000
class A,B,C,D,E,F,G,H,M,Q,N,O,P,V grey
class S,T,U spacewhite
class first,second,third white
このコンテンツを表示するには、JavaScriptを有効に する必要があります
図1. 新たなコントリビューターのためのスタートガイド。
図1は新たなコントリビューターのためのロードマップを概説しています。サインアップ
やレビュー
のステップのいくつか、またはその全てに従えばよいです。これで、プルリクエストのオープン
の下にリストされているいくつかの貢献目標を達成するためのプルリクエストを開く準備が整いました。また、質問はいつでも歓迎です!
一部のタスクでは、Kubernetes organizationで、より多くの信頼とアクセス権限が必要です。
役割と権限についての詳細は、SIG Docsへの参加 を参照してください。
はじめての貢献
あらかじめいくつかのステップを見直すことで、最初の貢献に備えることができます。図2はそれらのステップの概説で、詳細は次のとおりです。
flowchart LR
subgraph second[はじめての貢献]
direction TB
S[ ] -.-
G[K8sメンバーからの PRレビューを受ける] -->
A[最初のPRを作成するための 良いissueを kubernetes/websiteから探す] --> B[PRをオープンする!!]
end
subgraph first[推奨される準備]
direction TB
T[ ] -.-
D[コントリビューターの概要を読む] -->E[K8sのコンテンツと スタイルガイドを読む]
E --> F[Hugoのページコンテンツタイプと ショートコードについて学ぶ]
end
first ----> second
classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px;
classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold
classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000
class A,B,D,E,F,G grey
class S,T spacewhite
class first,second white
このコンテンツを表示するには、JavaScriptを有効に する必要があります
図2. はじめての貢献のための準備。
貢献時の支援の受け方
はじめて貢献を行うのは大変なことかもしれません。新規コントリビューターのためのアンバサダー は、最初の数回の貢献を行う手助けをしてくれます。Kubernetes Slack で、特に#sig-docs
チャンネルを用いて連絡を取ることができます。また毎月第一火曜日に行われる新規コントリビューターのための歓迎会 もあります。ここで新規コントリビューターのアンバサダーと交流し、質問に答えてもらうことができます。
訳注: 日本語ローカライゼーションに関しては、Slackのkubernetes-docs-ja
チャンネルを利用してください。
次のステップ
SIG Docsに参加する
SIG Docs はKubernetesのドキュメントとウェブサイトを公開・管理するコントリビューターのグループです。SIG Docsに参加することはKubernetesコントリビューター(機能開発でもそれ以外でも)にとってKubernetesプロジェクトに大きな影響を与える素晴らしい方法の一つです。
SIG Docsは複数の方法でコミュニケーションをとっています。
その他の貢献方法
2 - コンテンツの改善を提案する
Kubernetesのドキュメントに何か問題を見つけたり、新しいコンテンツに関してアイデアを思い付いたときは、issueを作ってください。必要なものは、GitHubアカウント とウェブブラウザーだけです。
Kubernetesのドキュメント上の新しい作業は、ほとんどの場合、GitHubのissueから始まります。Kubernetesのコントリビューターは、必要に応じてレビュー、分類、タグ付けを行います。次に、あなたやKubernetesコミュニティの他のメンバーが、そのissueを解決するための変更を加えるpull requestを開きます。
issueを作る
既存のコンテンツに対して改善を提案したい場合や、間違いを発見した場合は、issueを作ってください。
ページの右側のサイドバーにあるドキュメントのissueを作成 ボタンをクリックします。GitHubのissueページにリダイレクトし、一部のヘッダーが自動的に挿入されます。
問題や改善の提案について書きます。できる限り多くの詳細情報を提供するようにしてください。
Submit new issue ボタンをクリックします。
送信後、定期的にissueを確認するか、GitHubの通知を設定してください。レビュアや他のコミュニティメンバーが、issueに対して作業を行うために、あなたに何か質問をするかもしれません。
新しいコンテンツの提案
新しいコンテンツに関するアイデアがあるものの、どの場所に追加すればわからないときでも、issueを作ることができます。次のいずれかを選択して行ってください。
コンテンツが追加されるべきだと思う既存のページを選択し、ドキュメントのissueを作成 ボタンをクリックする。
GitHub に移動し、直接issueを作る。
よいissueを作るには
issueを作るときは、以下のことを心に留めてください。
明確なissueの説明を書く。不足している点、古くなっている点、誤っている点、改善が必要な点など、どの点がそうであるか明確に書く。
issueがユーザーに与える具体的な影響を説明する。
合理的な作業単位になるように、特定のissueのスコープを制限する。スコープの大きな問題については、小さな複数のissueに分割する。たとえば、"Fix the security docs"(セキュリティのドキュメントを修正する)というのはスコープが大きすぎますが、"Add details to the 'Restricting network access' topic"(トピック「ネットワークアクセスの制限」に詳細情報を追加する)であれば十分に作業可能な大きさです。
すでにあるissueを検索し、関連または同様のissueがないかどうか確認する。
新しいissueがほかのissueやpull requestと関係する場合は、完全なURLを参照するか、issueやpull requestの数字の前に#
の文字を付けて参照する。例えば、Introduced by #987654
のように書きます。
行動規範 に従って、仲間のコントリビューターに敬意を払いましょう。たとえば、"The docs are terrible"(このドキュメントは最悪だ)のようなコメントは、役に立つ敬意のあるフィードバックではありません。
3 - 新しいコンテンツの貢献
このセクションでは、新しいコンテンツの貢献を行う前に知っておくべき情報を説明します。
flowchart LR
subgraph second[始める前に]
direction TB
S[ ] -.-
A[CNCF CLAに署名] --> B[Gitブランチを選択]
B --> C[言語ごとにPR]
C --> F[コントリビューターのための ツールをチェックアウト]
end
subgraph first[貢献の基本]
direction TB
T[ ] -.-
D[ドキュメントをMarkdownで書き Hugoでサイトをビルド] --- E[GitHubにあるソース]
E --- G[複数の言語のドキュメントを含む '/content/../docs'フォルダー]
G --- H[Hugoのpage content typesやshortcodeをレビュー]
end
first ----> second
classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px;
classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold
classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000
class A,B,C,D,E,F,G,H grey
class S,T spacewhite
class first,second white
このコンテンツを表示するには、JavaScriptを有効に する必要があります
図 - 新しいコンテンツ提供の貢献方法
上記の図は新しいコンテンツを申請する前に知っておくべき情報を示しています。
詳細については以下で説明します。
貢献の基本
KubernetesのドキュメントはMarkdownで書き、KubernetesのウェブサイトはHugo を使ってビルドします。
Kubernetesのドキュメントは、MarkdownのスタイルとしてCommonMark を使用しています。
ソースはGitHub にあります。Kubernetesのドキュメントは/content/en/docs/
にあります。リファレンスドキュメントの一部は、update-imported-docs/
ディレクトリ内のスクリプトから自動的に生成されます。
Page content types にHugoによるドキュメントのコンテンツの見え方を記述しています。
Kubernetesのドキュメントに貢献するのにDocsy shortcode やカスタムのHugo shortcode が使えます。
標準のHugoのshortcodeに加えて、多数のカスタムのHugo shortcode を使用してコンテンツの見え方をコントロールしています。
ドキュメントのソースは/content/
内にある複数の言語で利用できます。各言語はそれぞれISO 639-1標準 で定義された2文字のコードの名前のフォルダを持ちます。たとえば、英語のドキュメントのソースは/content/en/docs/
内に置かれています。
複数言語でのドキュメントへの貢献や新しい翻訳の開始に関する情報については、Kubernetesのドキュメントを翻訳する を参照してください。
始める前に
CNCF CLAに署名する
すべてのKubernetesのコントリビューターは、コントリビューターガイド を読み、Contributor License Agreement(コントリビューターライセンス契約、CLA)への署名 を必ず行わなければなりません 。
CLAへの署名が完了していないコントリビューターからのpull requestは、自動化されたテストで失敗します。名前とメールアドレスはgit config
コマンドで表示されるものに一致し、gitの名前とメールアドレスはCNCF CLAで使われたものに一致しなければなりません。
どのGitブランチを使用するかを選ぶ
pull requestをオープンするときは、どのブランチをベースにして作業するかをあらかじめ知っておく必要があります。
シナリオ
ブランチ
現在のリリースに対する既存または新しい英語のコンテンツ
main
機能変更のリリースに対するコンテンツ
機能変更が含まれるメジャーおよびマイナーバージョンに対応する、dev-<version>
というパターンのブランチを使います。たとえば、機能変更がv1.32
に含まれる場合、ドキュメントの変更はdev-1.32
ブランチに追加します。
他の言語内のコンテンツ(翻訳)
各翻訳対象の言語のルールに従います。詳しい情報は、翻訳のブランチ戦略 を読んでください。
それでも選ぶべきブランチがわからないときは、Slack上の#sig-docs
チャンネルで質問してください。
備考: すでにpull requestを作成していて、ベースブランチが間違っていたことに気づいた場合は、作成者であるあなただけがベースブランチを変更できます。
言語ごとのPR
pull requestはPRごとに1つの言語に限定してください。複数の言語に同一の変更を行う必要がある場合は、言語ごとに別々のPRを作成してください。
コントリビューターのためのツール
kubernetes/website
リポジトリ内のdoc contributors tools ディレクトリには、コントリビューターとしての旅を楽にしてくれるツールがあります。
4 - 変更のレビュー
このセクションでは、コンテンツのレビュー方法について説明します。
4.1 - Pull Requestのレビュー
ドキュメントのPull Requestは誰でもレビューすることができます。Kubernetesのwebsiteリポジトリでpull requests のセクションに移動し、open状態のPull Requestを確認してください。
ドキュメントのPull Requestのレビューは、Kubernetesコミュニティに自分を知ってもらうためのよい方法の1つです。コードベースについて学んだり、他のコントリビューターとの信頼関係を築く助けともなるはずです。
レビューを行う前には、以下のことを理解しておくとよいでしょう。
はじめる前に
レビューを始める前に、以下のことを心に留めてください。
CNCFの行動規範 を読み、いかなる時にも行動規範にしたがって行動するようにする。
礼儀正しく、思いやりを持ち、助け合う気持ちを持つ。
変更点だけでなく、PRのポジティブな側面についてもコメントする。
相手の気持ちに共感して、自分のレビューが相手にどのように受け取られるのかをよく意識する。
相手の善意を前提として、疑問点を明確にする質問をする。
経験を積んだコントリビューターの場合、コンテンツに大幅な変更が必要な作業を行う新規のコントリビューターとペアを組んで取り組むことを考える。
レビューのプロセス
一般に、コンテンツや文体に対するPull Requestは、英語でレビューを行います。図1は、レビュープロセスについて手順の概要を示しています。 各ステップの詳細は次のとおりです。
(訳注:SIG Docs jaでは、日本語でも対応しています。日本語の翻訳に対するレビューは、日本語でも構いません。ただし、Pull Requestの作成者や他のコントリビューターが必ずしも日本語を理解できるとは限りませんので、注意して発言してください。)
flowchart LR
subgraph fourth[レビューの開始]
direction TB
S[ ] -.-
M[コメントを追加] --> N[変更の確認]
N --> O[Commentを選択]
end
subgraph third[PRの選択]
direction TB
T[ ] -.-
J[説明とコメントを読む]--> K[Netlifyプレビューで 変更点を表示]
end
A[オープン状態の PR一覧を確認]--> B[オープン状態のPRを ラベルで絞り込む]
B --> third --> fourth
classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px;
classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold
classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000
class A,B,J,K,M,N,O grey
class S,T spacewhite
class third,fourth white
このコンテンツを表示するには、JavaScriptを有効に する必要があります
図1. レビュープロセスの手順
https://github.com/kubernetes/website/pulls に移動します。Kubernetesのウェブサイトとドキュメントに対するopen状態のPull Request一覧が表示されます。
open状態のPRに、以下に示すラベルを1つ以上使って絞り込みます。
cncf-cla: yes
(推奨): CLAにサインしていないコントリビューターが提出したPRはマージできません。詳しい情報は、CLAの署名 を読んでください。
language/en
(推奨): 英語のPRだけに絞り込みます。
size/<size>
: 特定の大きさのPRだけに絞り込みます。レビューを始めたばかりの人は、小さなPRから始めてください。
さらに、PRがwork in progressとしてマークされていないことも確認してください。work in progress
ラベルの付いたPRは、まだレビューの準備ができていない状態です。
レビューするPRを選んだら、以下のことを行い、変更点について理解します。
PRの説明を読み、行われた変更について理解し、関連するissueがあればそれも読みます。
他のレビュアのコメントがあれば読みます。
Files changed タブをクリックし、変更されたファイルと行を確認します。
Conversation タブの下にあるPRのbuild checkセクションまでスクロールし、Netlifyのプレビュービルドで変更点をプレビューします。これはスクリーンショットです(これは、GitHubのデスクトップサイトを見せています。タブレットやスマートフォンデバイスでレビューしている場合は、GitHubウェブのUIは少し異なります):
プレビューを開くには、チェックリストのdeploy/netlify 行のDetails リンクをクリックします。
Files changed タブに移動してレビューを始めます。
コメントしたい場合は行の横の+
マークをクリックします。
その行に関するコメントを書き、Add single comment (1つのコメントだけを残したい場合)またはStart a review (複数のコメントを行いたい場合)のいずれかをクリックします。
コメントをすべて書いたら、ページ上部のReview changes をクリックします。ここでは、レビューの要約を追加できます(コントリビューターにポジティブなコメントも書きましょう!)。常に「Comment」を使用してください。
レビューの終了時、「Request changes」ボタンをクリックしないでください。さらに変更される前にマージされるのをブロックしたい場合、「/hold」コメントを残すことができます。Holdを設定する理由を説明し、必要に応じて、自分や他のレビューアがHoldを解除できる条件を指定してください。
レビューの終了時、「Approve」ボタンをクリックしないでください。大抵の場合、「/approve」コメントを残すことが推奨されます。
レビューのチェックリスト
レビューするときは、最初に以下の点を確認してみてください。
言語と文法
言語や文法に明らかな間違いはないですか? もっとよい言い方はないですか?
作成者が変更している箇所の用語や文法に注目してください。作成者がページ全体の変更を目的として明確にしていない限り、そのページのすべての問題を修正する義務はありません。
既存のページを変更するPRである場合、変更されている箇所に注目してレビューしてください。その変更されたコンテンツは、技術的および編集の正確性についてレビューしてください。PRの作成者が対処しようとしている内容と直接関係のない間違いを見つけた場合、それは別のIssueとして扱うべきです(既存のIssueが無いことを確認してください)。
コンテンツを移動 するPull Requestに注意してください。作成者がページの名前を変更したり、2つのページを結合したりする場合、通常、私たち(Kubernetes SIG Docs)は、その移動されたコンテンツ内で見つけられるすべての文法やスペルの間違いを修正することを作成者に要求することを避けています。
もっと簡単な単語に置き換えられる複雑な単語や古い単語はありませんか?
使われている単語や専門用語や言い回しで差別的ではない別の言葉に置き換えられるものはありませんか?
言葉選びや大文字の使い方はstyle guide に従っていますか?
もっと短くしたり単純な文に書き換えられる長い文はありませんか?
箇条書きやテーブルでもっとわかりやすく表現できる長いパラグラフはありませんか?
コンテンツ
同様のコンテンツがKubernetesのサイト上のどこかに存在しませんか?
コンテンツが外部サイト、特定のベンダー、オープンソースではないドキュメントなどに過剰にリンクを張っていませんか?
ウェブサイト
PRはページ名、slug/alias、アンカーリンクの変更や削除をしていますか? その場合、このPRの変更の結果、リンク切れは発生しませんか? ページ名を変更してslugはそのままにするなど、他の選択肢はありませんか?
PRは新しいページを作成するものですか? その場合、次の点に注意してください。
Netlifyのプレビューで変更は確認できますか? 特にリスト、コードブロック、テーブル、備考、画像などに注意してください。
その他
些細な編集 に注意してください。些細な編集だと思われる変更を見つけた場合は、そのポリシーを指摘してください (それが本当に改善である場合は、変更を受け入れても問題ありません)。
空白の修正を行っている作成者には、PRの最初のコミットでそれを行い、その後に他の変更を加えるよう促してください。これにより、マージとレビューの両方が容易になります。特に、大量の空白文字の整理と共に1回のコミットで発生する些細な変更に注意してください(もしそれを見つけたら、作成者に修正を促してください)。
レビュアーが誤字や不適切な空白など、PRの本質でない小さな問題を発見した場合は、コメントの先頭にnit:
を付けてください。これにより、作成者はこのフィードバックが重要でないことを知ることができます。
Pull Requestの承認を検討する際、残りのすべてのフィードバックがnitとしてマークされていれば、残っていたとしてもPRをマージできます。その場合、残っているnitに関するIssueをオープンすると役立つことがよくあります。その新しいIssueをGood First Issue としてマークするための条件を満たすことができるかどうか検討してください。それができたら、これらは良い情報源になります。
4.2 - approverとreviewer向けのレビュー
SIG DocsのReviewer(レビュアー) とApprover(承認者) は、変更をレビューする時にいくつか追加の作業を行います。
毎週、docsのメンバーの特定のapproverのボランティアは、pull requestのトリアージとレビューを担当します。この担当者は、その週の「PR Wrangler(PRの世話人)」と呼ばれます。詳しい情報は、PR Wrangler scheduler を参照してください。PR Wranglerになるには、週次のSIG Docsミーティングに参加し、ボランティアをします。もしその週にスケジュールされていなくても、活発なレビューが行われていないpull request(PR)をレビューすることは問題ありません。
このローテーションに加えて、変更されたファイルのオーナーに基づいて、botがPRにreviewerとapproverを割り当てます。
PRをレビューする
KubernetesのドキュメントはKubernetesコードレビュープロセス に従います。
pull requestのレビュー に書かれているすべてのことが適用されますが、ReviewerとApproverはそれに加えて次のことも行います。
必要に応じて、/assign
Prowコマンドを使用して、特定のreviewerにPRを割り当てる。これは、コードのコントリビューターからの技術的なレビューが必要な場合には特に重要です。
備考: 技術的なレビューを行える人物を知るには、Markdownファイル上部にあるfront-matterのreviewers
フィールドを確認してください。
PRがコンテンツ およびスタイル のガイドに従っていることを確認してください。ガイドに従っていない場合は、ガイドの関連する部分にリンクを作者に示してください。
PRの作者に変更を提案できるときは、GitHubのRequest Changes (変更をリクエスト)オプションを利用してください。
提案したことが反映されたら、/approve
や/lgtm
コマンドを使用して、GitHubのレビューステータスを変更してください。
他の作者のPRにコミットを追加する
PRにコメントを残すのは助けになりますが、まれに他の作者のPRに代わりにコミットを追加する必要がある場合があります。
あなたが明示的に作者から頼まれたり、長い間放置されたPRを蘇らせるような場合でない限り、他の作者のPRを「乗っ取る」ようなことはしないでください。短期的に見ればそのほうが短時間で終わるかもしれませんが、そのようなことをするとその人が貢献するチャンスを奪ってしまうことになります。
あなたが取る方法は、編集する必要のあるファイルがすでにPRのスコープに入っているか、あるいはPRがまだ触れていないファイルであるかによって変わります。
以下のいずれかが当てはまる場合、他の作者のPRにあなたがコミットを追加することはできません。
PRの作者が自分のブランチを直接https://github.com/kubernetes/website/ リポジトリにpushした場合。この場合、pushアクセス権限を持つreviewerしか他のユーザーのPRにコミットを追加することはできません。
備考: 次回PRを作成するとき、自分のブランチを自分のforkに対してpushするように作者に促してください。
PRの作者が明示的にapproverからの編集を禁止している場合。
レビュー向けのProwコマンド
Prow は、pull request(PR)に対してジョブを実行するKubernetesベースのCI/CDシステムです。Prowは、Kubernetes organization全体でchatbotスタイルのコマンドを利用してGitHub actionsを扱えるようにします。たとえば、ラベルの追加と削除 、issueのclose、approverの割り当てなどが行なえます。Prowコマンドは、GitHubのコメントに/<command-name>
という形式で入力します。
reviewerとapproverが最もよく使うprowコマンドには、以下のようなものがあります。
Prow commands for reviewing
Prowコマンド
Roleの制限
説明
/lgtm
Organizationメンバー
PRのレビューが完了し、変更に納得したことを知らせる。
/approve
Approver
PRをマージすることを承認する。
/assign
誰でも
PRのレビューまたは承認するひとを割り当てる。
/close
Organizationメンバー
issueまたはPRをcloseする。
/hold
誰でも
do-not-merge/hold
ラベルを追加して、自動的にマージできないPRであることを示す。
/hold cancel
誰でも
do-not-merge/hold
ラベルを削除する。
PRで利用できるすべてのコマンドを確認するには、Prowコマンドリファレンス を参照してください。
issueのトリアージとカテゴリー分類
一般に、SIG DocsはKubernetes issue triage のプロセスに従い、同じラベルを使用しています。
このGitHub issueのフィルター は、トリアージが必要な可能性があるissueを表示します。
issueをトリアージする
issueを検証する
issueがドキュメントのウェブサイトに関係するものであることを確かめる。質問に答えたりリソースの場所を報告者に教えることですぐに閉じられるissueもあります。詳しくは、サポートリクエストまたはコードのバグレポート のセクションを読んでください。
issueにメリットがあるかどうか評価する。
issueに行動を取るのに十分な詳細情報がない場合や、テンプレートが十分埋められていない場合は、triage/needs-information
ラベルを追加する。
lifecycle/stale
とtriage/needs-information
の両方のラベルがあるときは、issueをcloseする。
優先度(priority)ラベルを追加する(issueトリアージガイドライン は、priorityラベルについて詳しく定義しています。)
issueのラベル
ラベル
説明
priority/critical-urgent
今すぐに作業する。
priority/important-soon
3ヶ月以内に取り組む。
priority/important-longterm
6ヶ月以内に取り組む。
priority/backlog
無期限に延期可能。リソースに余裕がある時に取り組む。
priority/awaiting-more-evidence
よいissueの可能性があるissueを見失わないようにするためのプレースホルダー。
help
またはgood first issue
KubernetesまたはSIG Docsでほとんど経験がない人に適したissue。より詳しい情報は、Help WantedとGood First Issueラベル を読んでください。
あなたの裁量で、issueのオーナーシップを取り、issueに対するPRを提出してください(簡単なissueや、自分がすでに行った作業に関連するissueである場合は特に)。
issueのトリアージについて質問があるときは、Slackの#sig-docs
かkubernetes-sig-docs mailing list で質問してください。
issueラベルの追加と削除
ラベルを追加するには、以下のいずれかの形式でコメントします。
/<label-to-add>
(たとえば、/good-first-issue
)
/<label-category> <label-to-add>
(たとえば、/triage needs-information
や/language ja
)
ラベルを削除するには、以下のいずれかの形式でコメントします。
/remove-<label-to-remove>
(たとえば、/remove-help
)
/remove-<label-category> <label-to-remove>
(たとえば、/remove-triage needs-information
)
いずれの場合でも、ラベルは既存のものでなければなりません。存在しないラベルを追加しようとした場合、コマンドは無視されます。
すべてのラベル一覧は、websiteリポジトリーのラベルセクション で確認できます。SIG Docsですべてのラベルが使われているわけではありません。
issueのライフサイクルに関するラベル
issueは一般にopen後に短期間でcloseされます。しかし、issueがopenされた後にアクティブでなくなったり、issueが90日以上openのままである場合もあります。
issueのライブラリに関するラベル
ラベル
説明
lifecycle/stale
90日間活動がない場合、issueは自動的にstaleとラベル付けされます。/remove-lifecycle stale
コマンドを使って手動でlifecycleをリバートしない限り、issueは自動的にcloseされます。
lifecycle/frozen
このラベルが付けられたissueは、90日間活動がなくてもstaleになりません。priority/important-longterm
ラベルを付けたissueなど、90日以上openにしておく必要があるissueには、このラベルを手動で追加します。
特別な種類のissueに対処する
SIG Docsでは、対処方法をドキュメントに書いても良いくらい頻繁に、以下のような種類のissueに出会います。
重服したissue
1つの問題に対して1つ以上のissueがopenしている場合、1つのissueに統合します。あなたはどちらのissueをopenにしておくか(あるいは新しいissueを作成するか)を決断して、すべての関連する情報を移動し、関連するすべてのissueにリンクしなければなりません。最後に、同じ問題について書かれたすべての他のissueにtriage/duplicate
ラベルを付けて、それらをcloseします。作業対象のissueを1つだけにすることで、混乱を減らし、同じ問題に対して作業が重複することを避けられます。
リンク切れに関するissue
リンク切れのissueがAPIまたはkubectl
のドキュメントにあるものは、問題が完全に理解されるまでは/priority critical-urgent
を割り当ててください。その他のすべてのリンク切れに関するissueには、手動で修正が必要であるため、/priority important-longterm
を付けます。
Blogに関するissue
Kubernetes Blog のエントリーは時間が経つと情報が古くなるものだと考えています。そのため、ブログのエントリーは1年以内のものだけをメンテナンスします。1年以上前のブログエントリーに関するissueは修正せずにcloseします。
サポートリクエストまたはコードのバグレポート
一部のドキュメントのissueは、実際には元になっているコードの問題や、何か(たとえば、チュートリアル)がうまく動かないときにサポートをリクエストするものです。ドキュメントに関係のない問題は、kind/support
ラベルを付け、サポートチャンネル(SlackやStack Overflowなど)へ報告者を導くコメントをして、もし関連があれば機能のバグに対するissueを報告するリポジトリ(kubernetes/kubernetes
は始めるのに最適な場所です)を教えて、closeします。
サポートリクエストに対する返答の例を示します。(リクエストを行う際は英語で行うことが想定されるため、英文とその日本語訳を記載しています)
This issue sounds more like a request for support and less
like an issue specifically for docs. I encourage you to bring
your question to the `#kubernetes-users` channel in
[Kubernetes slack](https://slack.k8s.io/). You can also search
resources like
[Stack Overflow](https://stackoverflow.com/questions/tagged/kubernetes)
for answers to similar questions.
You can also open issues for Kubernetes functionality in
https://github.com/kubernetes/kubernetes.
If this is a documentation issue, please re-open this issue.
このissueは特定のドキュメントに関するissueではなく、サポートリクエストのようです。
Kubernetesに関する質問については、[Kubernetes slack](https://slack.k8s.io/)の
`#kubernetes-users`チャンネルに投稿することをおすすめします。同様の質問に対する回答を
[Stack Overflow](https://stackoverflow.com/questions/tagged/kubernetes)などの
リソースで検索することもできます。
Kubernetesの機能に関するissueについては、https://github.com/kubernetes/kubernetes
でissueを作成できます。
もしこれがドキュメントに関するissueの場合、このissueを再びopenしてください。
コードのバグに対する返答の例を示します。
This sounds more like an issue with the code than an issue with
the documentation. Please open an issue at
https://github.com/kubernetes/kubernetes/issues.
If this is a documentation issue, please re-open this issue.
こちらのissueは、ドキュメントではなくコードに関係するissueのようです。
https://github.com/kubernetes/kubernetes/issues でissueを作成してください。
もしこれがドキュメントに関するissueの場合、このissueを再びopenしてください。
5 - Kubernetesのドキュメントを翻訳する
このページでは、Kubernetesドキュメントにおける日本語翻訳の方針について説明します。
ドキュメントを日本語に翻訳するまでの流れ
翻訳を行うための基本的な流れについて説明します。不明点がある場合はKubernetes公式Slack の#kubernetes-docs-ja
チャンネルにてお気軽にご質問ください。
前提知識
翻訳作業は全てGitHubのIssue によって管理されています。翻訳作業を行いたい場合は、Issueの一覧をまず最初にご確認ください。
また、Kubernetes傘下のリポジトリではCLA
と呼ばれる同意書に署名しないと、Pull Requestをマージすることができません。詳しくは英語のドキュメント や、Qiitaに有志の方が書いてくださった日本語のまとめ をご覧ください。
翻訳を始めるまで
翻訳を希望するページのIssueが存在しない場合
こちらのサンプル に従う形でIssueを作成する
自分自身を翻訳作業に割り当てたい場合は、Issueのメッセージまたはコメントに/assign
と書く
新規ページを翻訳する場合 のステップに進む
不明点がある場合はKubernetes公式Slack の#kubernetes-docs-ja
チャンネルにてお気軽にご質問ください。
翻訳を希望するページのIssueが存在する場合
自分自身を翻訳作業に割り当てるために、Issueのコメントに/assign
と書く
新規ページを翻訳する場合 のステップに進む
Pull Requestを送るまで
新規ページを翻訳する場合の手順
kubernetes/website
リポジトリをフォークする
main
から任意の名前でブランチを作成する
content/en
のディレクトリから必要なファイルをcontent/ja
にコピーし、翻訳する
main
ブランチに向けてPull Requestを作成する
既存のページの誤字脱字や古い記述を修正する場合の手順
kubernetes/website
リポジトリをフォークする
main
から任意の名前でブランチを作成する
content/ja
のディレクトリから必要なファイルを編集する
main
ブランチに向けてPull Requestを作成する
翻訳スタイルガイド
基本方針
本文を、敬体(ですます調)で統一
特に、「〜になります」「〜となります」という表現は「〜です」の方が適切な場合が多いため注意
句読点は「、」と「。」を使用
漢字、ひらがな、カタカナは全角で表記
数字とアルファベットは半角で表記
記号類は感嘆符「!」と疑問符「?」のみ全角、それ以外は半角で表記
英単語と日本語の間に半角スペースは不要
日本語文では、文章の途中で改行を行わない。句点「。」で改行する
メタデータのreviewer
の項目は削除する
すでに日本語訳が存在するページにリンクを張る場合は、/ja/
を含めたURLを使用する
例: /path/to/page/
ではなく、/ja/path/to/page/
を使用する
用語の表記
Kubernetesのリソース名や技術用語などは、原則としてそのままの表記を使用します。
例えば、PodやService、Deploymentなどは翻訳せずにそのまま表記してください。
ただし、ノード(Node)に関してはKubernetesとしてのNodeリソース(例: kind: Node
やkubectl get nodes
、Nodeコントローラーなど)を指していないのであれば、「ノード」と表記してください。
またこれらの単語は、複数形ではなく単数形を用います。
例えば、原文に"pods"と表記されている場合でも、日本語訳では"Pod"と表記してください。
頻出表記(日本語)
よくある表記
あるべき形
〜ので、〜から、〜だから
〜のため 、〜ため
(あいうえお。)
(あいうえお)。
〇,〇,〇
〇、〇、〇(※列挙はすべて読点で統一)
長音の有無
カタカナ語に長音を付与するかどうかは、以下の原則に従ってください。
-er、-or、-ar、-cy、-gyで終わる単語は長音を付与する
例: 「クラスター」「セレクター」「サイドカー」「ポリシー」「トポロジー」
-ear、-eer、-re、-ty、-dy、-ryで終わる単語は長音を付与しない
例: 「クリア」「エンジニア」「アーキテクチャ」「セキュリティ」「スタディ」「ディレクトリ」
ただし、「コンテナ」は例外的に長音を付与しないこととします。
この原則を作成するにあたって、mozilla-japan/translation Editorial Guideline#カタカナ語の表記 を参考にしました。
その他の表記
その他の表記については、以下の表を参考にしてください。
英語
日本語
interface
インターフェース
proxy
プロキシ
quota
クォータ
stacked
積層
cron jobの訳し方に関して
混同を避けるため、cron jobはcronジョブと訳し、CronJobはリソース名としてそのまま表記します。
cron「の」ジョブは、「の」が続く事による解釈の難から基本的にはつけないものとします。
その他基本方針など
意訳と直訳で迷った場合は「直訳」で訳す
訳で難しい・わからないと感じたらSlackの#kubernetes-docs-ja
で相談する
できることを挙手制で、できないときは早めに報告
アップストリームのコントリビューター
SIG Docsでは、英語のソースに対するアップストリームへのコントリビュートや誤りの訂正 を歓迎しています。
6 - SIG Docsへの参加
SIG Docsは、Kubernetesプロジェクト内の
special interest groups の1つであり、
Kubernetes全体のドキュメントの作成、更新、および保守に重点を置いています。
SIGの詳細については、SIG DocsのGithubリポジトリ を参照してください。
SIG Docsは、すべての寄稿者からのコンテンツとレビューを歓迎します。
誰でもPull Request(PR)を開くことができ、コンテンツに関するissueを提出したり、進行中のPull Requestにコメントしたりできます。
あなたは、member や、
reviewer 、
approver になることもできます。
これらの役割にはより多くのアクセスが必要であり、変更を承認およびコミットするための特定の責任が伴います。
Kubernetesコミュニティ内でメンバーシップがどのように機能するかについての詳細は、
community-membership
をご覧ください。
このドキュメントの残りの部分では、kubernetesの中で最も広く公開されている
Kubernetesのウェブサイトとドキュメントの管理を担当しているSIG Docsの中で、これらの役割がどのように機能するのかを概説します。
SIG Docs chairperson
SIG Docsを含む各SIGは、議長として機能する1人以上のSIGメンバーを選択します。
これらは、SIGDocsとKubernetes organizationの他の部分との連絡先です。
それらには、Kubernetesプロジェクト全体の構造と、SIG Docsがその中でどのように機能するかについての広範な知識が必要です。
現在のchairpersonのリストについては、
Leadership
を参照してください。
SIG Docs teamsと自動化
SIG Docsの自動化は、GitHub teamsとOWNERSファイルの2つの異なるメカニズムに依存しています。
GitHub teams
GitHubには、二つのSIG Docs
teams
カテゴリがあります:
@sig-docs-{language}-owners
は承認者かつリードです。
@sig-docs-{language}-reviews
はレビュアーです。
それぞれをGitHubコメントの@name
で参照して、そのグループの全員とコミュニケーションできます。
ProwチームとGitHub teamsが完全に一致せずに重複する場合があります。
問題の割り当て、Pull Request、およびPR承認のサポートのために、自動化ではOWNERSファイルからの情報を使用します。
OWNERSファイルとfront-matter
Kubernetesプロジェクトは、GitHubのissueとPull Requestに関連する自動化のためにprowと呼ばれる自動化ツールを使用します。
Kubernetes Webサイトリポジトリ
は、2つのprowプラグイン を使用します:
これらの2つのプラグインはkubernetes.website
のGithubリポジトリのトップレベルにある
OWNERS ファイルと、
OWNERS_ALIASES ファイルを使用して、
リポジトリ内でのprowの動作を制御します。
OWNERSファイルには、SIG Docsのレビュー担当者および承認者であるユーザーのリストが含まれています。
OWNERSファイルはサブディレクトリに存在することもでき、そのサブディレクトリとその子孫のファイルのレビュー担当者または承認者として機能できるユーザーを上書きできます。
一般的なOWNERSファイルの詳細については、
OWNERS を参照してください。
さらに、個々のMarkdownファイルは、個々のGitHubユーザー名またはGitHubグループを一覧表示することにより、そのfront-matterでレビュー担当者と承認者を一覧表示できます。
OWNERSファイルとMarkdownファイルのfront-matterの組み合わせにより、PRの技術的および編集上のレビューを誰に依頼するかについてPRの所有者が自動化システムから得るアドバイスが決まります。
マージの仕組み
Pull Requestがコンテンツの公開に使用されるブランチにマージされると、そのコンテンツは https://kubernetes.io に公開されます。
公開されたコンテンツの品質を高くするために、Pull RequestのマージはSIG Docsの承認者に限定しています。仕組みは次のとおりです。
Pull Requestにlgtm
ラベルとapprove
ラベルの両方があり、hold
ラベルがなく、すべてのテストに合格すると、Pull Requestは自動的にマージされます。
Kubernetes organizationのメンバーとSIG Docsの承認者はコメントを追加して、特定のPull Requestが自動的にマージされないようにすることができます(/hold
コメントを追加するか、/lgtm
コメントを保留します)。
Kubernetesメンバーは誰でも、/lgtm
コメントを追加することでlgtm
ラベルを追加できます。
/approve
コメントを追加してPull Requestをマージできるのは、SIG Docsの承認者だけです。一部の承認者は、PR Wrangler やSIG Docsのchairperson など、追加の特定の役割も実行します。
次の項目
Kubernetesドキュメントへの貢献の詳細については、以下を参照してください:
6.1 - ロールと責任
誰もがKubernetesに貢献することができます。
SIG Docs へのコントリビューションが増えると、コミュニティ内で異なるレベルのメンバーシップに申請することができます。
これらの役割により、コミュニティ内でより多くの責任を担うことができます。
各役割にはより多くの時間とコミットメントが必要です。
役割は以下の通りです:
Anyone: Kubernetesドキュメントへの定期的なコントリビューター
Member: Issueの割り当てとトリアージができ、Pull Requestに対する非公式なレビューができる
Reviewer: ドキュメントのPull Requestのレビューをリードし、変更の品質を保証する
Approver: ドキュメントのレビューをリードし、変更をマージできる
Anyone
GitHubのアカウントを持っている人なら誰もがKubernetesに貢献することができます。
SIG Docs はすべての新たなコントリビューターを歓迎します。
誰もが以下のことをできます:
CLA に署名 した後は、誰もが以下のことをできます:
既存のコンテンツを改善するためのPull Requestを開く、新しいコンテンツを追加する、ブログ記事やケーススタディを書く
図表やグラフィックアセット、埋め込み可能なスクリーンキャストやビデオを作成する
詳細については、新しいコンテンツの貢献 を参照してください。
Member
Memberは、kubernetes/website
に複数のPull Requestを作成した人です。
MemberはKubernetes GitHub organization の一員です。
Memberは以下のことをできます:
Anyone に列挙されているすべてのことを行う
/lgtm
コメントを使用して、Pull RequestにLGTM (looks good to me)ラベルを追加する
備考: /lgtm
を使用すると、自動化がトリガーされます。
非公式に承認したい場合は、"LGTM"とコメントするだけでも大丈夫です!
/hold
コメントを使用して、Pull Requestのマージをブロックする
/assign
コメントを使用して、Pull RequestにReviewerを割り当てる
Pull Requestに非公式なレビューを提供する
自動化を使用してIssueをトリアージし、分類する
新機能をドキュメント化する
Memberになる
少なくとも5つの実質的なPull Requestを作成し、その他の要件 を満たした後に以下のようにしてMemberになることができます:
2人のReviewer またはApprover にあなたのメンバーシップをスポンサー してもらいます。
Slackの#sig-docsチャンネル やSIG Docsのメーリングリスト でスポンサーを依頼してください。
備考: 個別のSIG Docsメンバーに直接メールやSlackのダイレクトメッセージを送らないでください。
また申請する前にスポンサーを依頼する必要があります。
kubernetes/org
リポジトリにIssueを作成します。Organization Membership Request のissueテンプレートを使用してください。
スポンサーにGitHub Issueのことを知らせます。以下の方法があります:
Issue内でGitHubユーザー名に言及する(@<GitHub-username>
)
Slackやメールを使ってIssueのリンクを送る
スポンサーは+1
の投票でリクエストを承認します。
スポンサーがリクエストを承認すると、Kubernetes GitHubの管理者があなたをメンバーとして追加します。
おめでとうございます!
メンバーシップリクエストが承認されない場合はフィードバックを受け取ります。
フィードバックに対応した後、再度申請してください。
メールアカウントでKubernetes GitHub organizationの招待を受け入れます。
備考: GitHubはアカウントのデフォルトメールアドレスに招待を送信します。
Reviewer
ReviewerはオープンなPull Requestのレビューを担当します。
Memberのフィードバックとは異なり、PRを作成した人はReviewerのフィードバックに対応する必要があります。
Reviewerは@kubernetes/sig-docs-{language}-reviews GitHubチームのメンバーです。
Reviewerは以下のことをできます:
Anyone およびMember に列挙されているすべてのことを行う
Pull Requestをレビューし、拘束力のあるフィードバックを提供する
備考: 拘束力のないフィードバックを提供する場合、コメントの前に"Optionally: "などのフレーズを付けてください。
コード内のユーザー向けの文字列を編集する
コードコメントを改善する
SIG DocsのReviewer、あるいは特定の領域に関するドキュメントのReviewerになることができます。
Pull RequestへのReviewerの割り当て
自動化により、すべてのPull RequestにReviewerが割り当てられます。
特定の人物にレビューを依頼するには、/assign [@_github_handle]
とコメントします。
割り当てられたReviewerがPRにコメントしていない場合、他のReviewerが代わりにレビューできます。
また、必要に応じて技術的なReviewerを割り当てることもできます。
/lgtm
の使用
LGTMは"Looks good to me"の略で、Pull Requestが技術的に正確でマージの準備が整っていることを示します。
すべてのPRには、マージするためにReviewerからの/lgtm
コメントとApproverからの/approve
コメントが必要です。
Reviewerからの/lgtm
コメントは拘束力があり、自動化によりlgtm
ラベルが追加されます。
Reviewerになる
要件 を満たすと、SIG DocsのReviewerになることができます。他のSIGのReviewerは、SIG DocsでのReviewerステータスを別途申請する必要があります。
申請方法は以下の通りです:
kubernetes/website
リポジトリのOWNERS_ALIASES ファイルのセクションに、GitHubユーザー名を追加するPull Requestを開きます。
備考: どこに追加すればよいかわからない場合は、sig-docs-en-reviews
に追加してください。
訳注: sig-docs-en-reviews
は英語版のReviewerチームです。日本語ローカライゼーションのReviewerチームに参加する場合は、sig-docs-ja-reviews
に追加してください。
PRを1人以上のSIG Docs Approverに割り当てます(ユーザー名はsig-docs-{language}-owners
に記載されています)。
承認されると、SIG Docsのリードが適切なGitHubチームに追加します。
追加されると、k8s-ci-robot が新しいPull RequestのReviewerとしてあなたを割り当て、提案します。
Approver
ApproverはPull Requestをレビューし、マージするために承認します。
Approverは@kubernetes/sig-docs-{language}-owners GitHubチームのメンバーです。
Approverは以下のことをできます:
Anyone 、Member 、およびReviewer に列挙されているすべてのことを行う
/approve
コメントを使用してPull Requestを承認およびマージすることで、コントリビューターのコンテンツを公開する
スタイルガイドの改善を提案する
ドキュメントテストの改善を提案する
Kubernetesのウェブサイトや他のツールの改善を提案する
PRに既に/lgtm
が付いている場合、またはApprover自身が/lgtm
コメントを付けた場合、PRは自動的にマージされます。
SIG DocsのApproverは、追加の技術的なレビューが不要な変更にのみ/lgtm
を付けるべきです。
Pull Requestの承認
ApproverとSIG DocsのリードだけがPull Requestをwebsiteリポジトリにマージすることができます。
これには一定の責任が伴います。
Approverは/approve
コマンドを使用して、PRをリポジトリにマージできます。
警告: 不注意なマージはサイトを壊す可能性があるため、マージする際には慎重に行ってください。
提案された変更がドキュメントコンテンツガイド に準拠していることを確認してください。
もし疑問がある場合や何か不明な点がある場合は、遠慮なく追加のレビューを依頼してください。
PRを/approve
する前に、Netlifyのテストに通っていることを確認してください。
承認する前に、PRのNetlifyのページプレビューをクリックして内容が正しいことを確認してください。
週ごとのローテーションであるPR Wranglerローテーションスケジュール に参加してください。SIG DocsはすべてのApproverにこのローテーションへの参加を期待しています。詳細についてはPR wranglers を参照してください。
Approverになる
要件 を満たすと、SIG DocsのApproverになることができます。
他のSIGのApproverは、SIG DocsでのApproverステータスを別途申請する必要があります。
申請方法は以下の通りです:
kubernetes/website
リポジトリのOWNERS_ALIASES ファイルのセクションに、自分自身を追加するPull Requestを開きます。
備考: どこに追加すればよいかわからない場合は、`sig-docs-en-owners`に追加してください。
訳注: `sig-docs-en-owners`は英語版のApproverチームです。
日本語ローカライゼーションのApproverチームに参加する場合は、`sig-docs-ja-owners`に追加してください。
PRを1人以上の現在のSIG Docs Approversに割り当てます。
承認されると、SIG Docsのリードが適切なGitHubチームに追加します。
追加されると、k8s-ci-robot が新しいPull RequestのReviewerとしてあなたを割り当て、提案します。
次の項目
7 - ドキュメントスタイルの概要
このセクション内のトピックでは、文章のスタイル、コンテンツの形式や構成、特にKubernetesのドキュメント特有のHugoカスタマイズの使用方法に関するガイダンスを提供します。
7.1 - ドキュメントコンテンツガイド
このページでは、Kubernetesのドキュメント上のコンテンツのガイドラインを説明します。
許可されるコンテンツに関して疑問がある場合は、Kubernetes Slack の#sig-docsチャンネルに参加して質問してください!
Kubernetes Slackには、https://slack.k8s.io/ から参加登録ができます。
Kubernetesドキュメントの新しいコンテンツの作成に関する情報については、スタイルガイド に従ってください。
概要
ドキュメントを含むKubernetesのウェブサイトのソースは、kubernetes/website リポジトリに置かれています。
Kubernetesの主要なドキュメントはkubernetes/website/content/<language_code>/docs
フォルダに置かれており、これらはKubernetesプロジェクト を対象としています。
許可されるコンテンツ
Kubernetesのドキュメントにサードパーティーのコンテンツを掲載することが許されるのは、次の場合のみです。
コンテンツがKubernetesプロジェクト内のソフトウェアのドキュメントとなる場合
コンテンツがプロジェクト外のソフトウェアのドキュメントとなるが、Kubernetesを機能させるために必要である場合
コンテンツがkubernetes.ioの正規のコンテンツであるか、他の場所の正規のコンテンツへのリンクである場合
サードパーティーのコンテンツ
Kubernetesのドキュメントには、Kubernetesプロジェクト(kubernetes およびkubernetes-sigs GitHub organizationsに存在するプロジェクト)の適用例が含まれています。
Kubernetesプロジェクト内のアクティブなコンテンツへのリンクは常に許可されます。
Kubernetesを機能させるためには、一部サードパーティーのコンテンツが必要です。たとえば、コンテナランタイム(containerd、CRI-O、Docker)、ネットワークポリシー (CNI plugin)、Ingressコントローラー 、ロギング などです。
ドキュメント内で、Kubernetesプロジェクト外のサードパーティーのオープンソースソフトウェア(OSS)にリンクすることができるのは、Kubernetesを機能させるために必要な場合のみです。
情報源が重複するコンテンツ
可能な限り、Kubernetesのドキュメントは正規の情報源にリンクするようにし、情報源が重複してしまうようなホスティングは行いません。
情報源が重複したコンテンツは、メンテナンスするために2倍の労力(あるいはそれ以上!)が必要になり、より早く情報が古くなってしまいます。
その他の情報
許可されるコンテンツに関して疑問がある場合は、Kubernetes Slack の#sig-docsチャンネルに参加して質問してください!
次の項目
7.2 - コンテンツの構造化
このサイトではHugoを使用しています。Hugoでは、コンテンツの構造化 がコアコンセプトとなっています。
備考: Hugoのヒント: コンテンツの編集を始めるときは、hugo server --navigateToChanged
コマンドを使用してHugoを実行してください。
ページの一覧
ページの順序
ドキュメントのサイドメニューやページブラウザーなどでは、Hugoのデフォルトのソート順序を使用して一覧を作成しています。デフォルトでは、weight(1から開始)、日付(最新のものが1番目)、最後にリンクのタイトルの順でソートされます。
そのため、特定のページやセッションを上に移動したい場合には、ページのフロントマター内のweightを設定します。
title : My Page
weight : 10
備考: ページのweightについては、1、2、3…などの値を使用せず、10、20、30…のように一定の間隔を空けた方が賢明です。こうすることで、後で別のページを間に挿入できるようになります。さらに、同じディレクトリ(セクション)内の各ページのweightは、重複しないようにする必要があります。これにより、特にローカライズされたコンテンツでは、コンテンツが常に正しく整列されるようになります。
ドキュメントのメインメニュー
ドキュメントのメインメニューは、docs/
以下に置かれたセクションのコンテンツファイル_index.md
のフロントマター内にmain_menu
フラグが設定されたものから生成されます。
リンクのタイトルは、ページのlinkTitle
から取得されることに注意してください。そのため、ページのタイトルとは異なるリンクテキストにしたい場合、コンテンツファイル内の値を以下のように設定します。
main_menu : true
title : ページタイトル
linkTitle : リンク内で使われるタイトル
備考: 上記の設定は言語ごとに行う必要があります。メニュー上にセクションが表示されないときは、Hugoからセクションとして認識されていないためである可能性が高いです。セクションフォルダー内に_index.md
コンテンツファイルを作成してください。
ドキュメントのサイドメニュー
ドキュメントのサイドバーメニューは、docs/
以下の現在のセクションツリー から生成されます。
セクションと、そのセクション内のページがすべて表示されます。
特定のセクションやページをリストに表示したくない場合、フロントマター内のtoc_hide
フラグをtrue
に設定してください。
コンテンツが存在するセクションに移動すると、特定のセクションまたはページ(例:index.md
)が表示されます。それ以外の場合、そのセクションの最初のページが表示されます。
ドキュメントのブラウザー
ドキュメントのホームページのページブラウザーは、docs
セクション直下のすべてのセクションとページを使用して生成されています。
特定のセクションやページを表示したくない場合、フロントマターのtoc_hide
フラグをtrue
に設定してください。
メインメニュー
右上のメニュー(およびフッター)にあるサイトリンクは、page-lookupの機能を使用して実装されています。これにより、ページが実際に存在することを保証しています。そのため、たとえばcase-studies
のセクションが特定の言語のサイトに存在しない場合、メニューにはケーススタディのリンクが表示されません。
Page Bundle
スタンドアローンのコンテンツページ(Markdownファイル)に加えて、Hugoでは、Page Bundles がサポートされています。
Page Bundleの1つの例は、カスタムのHugo Shortcode です。これは、leaf bundle
であると見做されます。ディレクトリ内のすべてのファイルは、index.md
を含めてバンドルの一部となります。これには、ページからの相対リンク、処理可能な画像なども含まれます。
en/docs/home/contribute/includes
├── example1.md
├── example2.md
├── index.md
└── podtemplate.json
もう1つのPage Bundleがよく使われる例は、includes
バンドルです。フロントマターにheadless: true
を設定すると、自分自身のURLを持たなくなり、他のページ内でのみ使用されるようになります。
en/includes
├── default-storage-class-prereqs.md
├── index.md
├── partner-script.js
├── partner-style.css
├── task-tutorial-prereqs.md
├── user-guide-content-moved.md
└── user-guide-migration-notice.md
バンドル内のファイルに関して、いくつか重要な注意点があります。
翻訳されたバンドルに対しては、コンテンツ以外の見つからなかったファイルは上位の言語から継承されます。これにより重複が回避できます。
バンドル内のすべてのファイルは、HugoがResources
と呼ぶファイルになり、フロントマター(YAMLファイルなど)をサポートしていない場合であっても、言語ごとにパラメーターやタイトルなどのメタデータを提供できます。詳しくは、Page Resourcesメタデータ を参照してください。
Resource
の.RelPermalink
から取得した値は、ページからの相対的なものとなっています。詳しくは、Permalinks を参照してください。
スタイル
このサイトのスタイルシートのSASS のソースは、assets/sass
に置かれていて、Hugoによって自動的にビルドされます。
次の項目
7.3 - カスタムHugoショートコード
このページではKubernetesのマークダウンドキュメント内で使用できるHugoショートコードについて説明します。
ショートコードについての詳細はHugoのドキュメント を読んでください。
機能の状態
このサイトのマークダウンページ(.md
ファイル)内では、説明されている機能のバージョンや状態を表示するためにショートコードを使用することができます。
機能の状態のデモ
最新のKubernetesバージョンで機能をstableとして表示するためのデモスニペットを次に示します。
{{< feature-state state="stable" >}}
これは次の様に表示されます:
FEATURE STATE:
Kubernetes v1.31 [stable]
state
の値として妥当な値は次のいずれかです:
alpha
beta
deprecated
stable
機能の状態コード
表示されるKubernetesのバージョンのデフォルトはそのページのデフォルトまたはサイトのデフォルトです。
for_k8s_version
パラメーターを渡すことにより、機能の状態バージョンを変更することができます。
例えば:
{{< feature-state for_k8s_version="v1.10" state="beta" >}}
これは次の様に表示されます:
FEATURE STATE:
Kubernetes v1.10 [beta]
用語集
用語集に関連するショートコードとして、glossary_tooltip
とglossary_definition
の二つがあります。
コンテンツを自動的に更新し、用語集 へのリンクを付与する挿入を使用して、用語を参照することができます。
用語がマウスオーバーされると、用語集の内容がツールチップとして表示されます。
また、用語はリンクとして表示されます。
ツールチップの挿入と同様に、用語集の定義も再利用することができます。
用語集の用語データはglossaryディレクトリ に、それぞれの用語のファイルとして保存されています。
用語集のデモ
例えば、マークダウン内でツールチップ付きのcluster を表示するには、次の挿入を使用します:
{{< glossary_tooltip text="cluster" term_id="cluster" >}}
用語集の定義はこのようにします:
{{< glossary_definition prepend="A cluster is" term_id="cluster" length="short" >}}
これは次の様に表示されます:
A cluster is コンテナ化されたアプリケーションを実行する、ノード と呼ばれるワーカーマシンの集合です。すべてのクラスターには少なくとも1つのワーカーノードがあります。
完全な用語定義を挿入することもできます:
{{< glossary_definition term_id="cluster" length="all" >}}
これは次の様に表示されます:
コンテナ化されたアプリケーションを実行する、ノード と呼ばれるワーカーマシンの集合です。すべてのクラスターには少なくとも1つのワーカーノードがあります。
ワーカーノードは、アプリケーションのコンポーネントであるPodをホストします。マスターノードは、クラスター内のワーカーノードとPodを管理します。複数のマスターノードを使用して、クラスターにフェイルオーバーと高可用性を提供します。
ワーカーノードは、アプリケーションワークロードのコンポーネントであるPod をホストします。コントロールプレーン は、クラスター内のワーカーノードとPodを管理します。本番環境では、コントロールプレーンは複数のコンピューターを使用し、クラスターは複数のノードを使用し、耐障害性や高可用性を提供します。
APIリファレンスへのリンク
api-reference
ショートコードを使用することで、Kubernetes APIリファレンスへのリンクを作成することができます。
例えば、
Pod への参照方法は次の通りです:
{{< api-reference page="workload-resources/pod-v1" >}}
page
パラメーターの値はAPIリファレンスページのURLの末尾です。
anchor
パラメーターを指定することでページ内の特定の場所へリンクすることもできます。
例えば、
PodSpec や
environment-variables へのリンクは次の様に書きます:
{{< api-reference page="workload-resources/pod-v1" anchor="PodSpec" >}}
{{< api-reference page="workload-resources/pod-v1" anchor="environment-variables" >}}
text
パラメーターを指定することでリンクテキストを変更することもできます。
例えば、
Environment Variables へのリンクは次の様に書きます:
{{< api-reference page="workload-resources/pod-v1" anchor="environment-variables" text="Environment Variable" >}}
テーブルキャプション
テーブルキャプションを追加することで、表をスクリーンリーダーにとってよりアクセスしやすいものにする事ができます。
表へキャプション を追加するには、表をtable
ショートコードで囲い、caption
パラメーターにキャプションを指定します。
備考: テーブルキャプションはスクリーンリーダーからは読むことができますが、標準的なHTMLでは読むことができません。
例えば、次の様に書きます:
{{ < table caption= "Configuration parameters" > }}
Parameter | Description | Default
:---------|:------------|:-------
`timeout` | The timeout for requests | `30s`
`logLevel` | The log level for log output | `INFO`
{{ < / table > }}
これは次の様に表示されます:
Configuration parameters
Parameter
Description
Default
timeout
The timeout for requests
30s
logLevel
The log level for log output
INFO
この表に対するHTMLを検査すると、次の要素が<table>
要素のすぐ次にあるのを見ることができるでしょう:
<caption style = "display: none;" >Configuration parameters</caption >
タブ
このサイトのマークダウンページ(.md
ファイル)内では、あるソリューションに対する複数のフレーバーを表示するためのタブセットを追加することができます。
tabs
ショートコードはこれらのパラメーターを受けとります:
name
: タブに表示される名前
codelang
: 内側のtab
ショートコードにこれを指定した場合、Hugoはハイライトに使用するコード言語を知ることができます。
include
: タブ内で挿入するファイル。Hugo leaf bundle 内にタブがある場合そのファイル(HugoがサポートしているどのMIMEタイプでも良い)はそのbundle自身によって探されます。
もしそうでない場合、そのコンテントページは現在のページから相対的に探されます。
include
を使う場合、ショートコードの内部コンテンツはなく、自己終了構文を使用する必要があることに注意してください。
例えば、{{< tab name="Content File #1" include="example1" />}}
の様にします。
codelang
を指定するか、ファイル名から言語が特定される必要があります。
非コンテンツファイルはデフォルトでコードが強調表示されます。
もし内部コンテンツがマークダウンの場合、タブの周りに%
デリミターを使用する必要があります。
例えば、{{% tab name="Tab 1" %}}This is **markdown**{{% /tab %}}
の様にします。
タブセット内で、上記で説明したバリエーションを組み合わせることができます。
タブショートコードの例を次に示します。
備考: tabs
定義内のname はコンテンツページ内でユニークである必要があります。
タブのデモ: コードハイライト
{{ < tabs name= "tab_with_code" > }}
{{ {< tab name= "Tab 1" codelang= "bash" > }}
echo "これはタブ1です。"
{{ < / tab > }}
{{ < tab name= "Tab 2" codelang= "go" > }}
println "これはタブ2です。"
{{ < / tab > }} }
{{ < / tabs > }}
これは次の様に表示されます:
タブのデモ: インラインマークダウンとHTML
{{ < tabs name= "tab_with_md" > }}
{{ % tab name= "Markdown" % }}
これは**なにがしかのマークダウン**です。
{{ < note > }}
ショートコードを含むこともできます。
{{ < / note > }}
{{ % / tab % }}
{{ < tab name= "HTML" > }}
<div >
<h3 >プレーンHTML</h3 >
<p >これはなにがしかの<i >プレーン</i >HTMLです。</p >
</div >
{{ < / tab > }}
{{ < / tabs > }}
これは次の様に表示されます。
これはなにがしかのマークダウン です。
備考: ショートコードを含むこともできます。
プレーンHTML
これはなにがしかのプレーン HTMLです。
タブのデモ: ファイルの読み込み
{{ < tabs name= "tab_with_file_include" > }}
{{ < tab name= "Content File #1" include= "example1" /> }}
{{ < tab name= "Content File #2" include= "example2" /> }}
{{ < tab name= "JSON File" include= "podtemplate" /> }}
{{ < / tabs > }}
これは次の様に表示されます:
これは挿入 leaf bundle内のコンテンツファイルの例 です。
備考: 挿入されたコンテンツファイル内でもショートコードを使用することができます。
これは挿入 leaf bundle内のコンテンツファイルのもう一つの例 です
{
"apiVersion" : "v1" ,
"kind" : "PodTemplate" ,
"metadata" : {
"name" : "nginx"
},
"template" : {
"metadata" : {
"labels" : {
"name" : "nginx"
},
"generateName" : "nginx-"
},
"spec" : {
"containers" : [{
"name" : "nginx" ,
"image" : "dockerfile/nginx" ,
"ports" : [{"containerPort" : 80 }]
}]
}
}
}
サードパーティーコンテンツマーカー
Kubernetesの実行にはサードパーティーのソフトウェアが必要です。
例えば、名前解決を行うためにはクラスターにDNSサーバー を追加する必要があります。
私たちがサードパーティーソフトウェアにリンクするときや言及するときは、コンテンツガイド に従い、サードパーティーのものに印をつけます。
これらのショートコードを使用すると、それらを使用しているドキュメントページに免責事項が追加されます。
リスト
サードパーティーのリストには、
{{% thirdparty-content %}}
をすべてのアイテムを含むセクションのヘッダーのすぐ下に追加します。
アイテム
ほとんどのアイテムがプロジェクト内ソフトウェア(例えばKubernetes自体やDescheduler コンポーネント)を参照している場合、違う形を使用することができます。
次のショートコードをアイテムの前か、特定のアイテムのヘッダーのすぐ下に追加します:
{{% thirdparty-content single="true" %}}
バージョン文字列
ドキュメント内でバージョン文字列を生成して挿入するために、いくつかのバージョンショートコードから選んで使用することができます。
それぞれのバージョンショートコードはサイトの設定ファイル(hugo.toml
)から取得したバージョンパラメーターの値を使用してバージョン文字列を表示します。
最もよく使われる二つのバージョンパラメーターはlatest
とversion
です。
{{< param "version" >}}
{{< param "version" >}}
ショートコードはサイトのversion
パラメーターに設定されたKubernetesドキュメントの現在のバージョンを生成します。
param
ショートコードはサイトパラメーターの名前の一つを受けとり、この場合はversion
を渡しています。
備考: 以前にリリースされたドキュメントではlatest
とversion
の値は同じではありません。
新しいバージョンがリリースされると、latest
はインクリメントされ、version
は変更されません。
例えば、以前にリリースされたドキュメントはversion
をv1.19
として表示し、latest
をv1.20
として表示します。
これは次の様に表示されます:
v1.31
{{< latest-version >}}
{{< latest-version >}}
ショートコードはサイトのlatest
パラメーターの値を返します。
サイトのlatest
パラメーターは新しいドキュメントのバージョンがリリースされた時に更新されます。
このパラメーターは必ずしもversion
の値と一致しません。
これは次の様に表示されます:
v1.31
{{< latest-semver >}}
{{< latest-semver >}}
ショートコードはlatest
から"v"接頭辞を取り除いた値を生成します。
これは次の様に表示されます。
1.31
{{< version-check >}}
{{< version-check >}}
ショートコードはページにmin-kubernetes-server-version
パラメーターがあるかどうか確認し、version
と比較するために使用します。
これは次の様に表示されます:
バージョンを確認するには次のコマンドを実行してください:
kubectl version
.
{{< latest-release-notes >}}
{{< latest-release-notes >}}
ショートコードはlatest
からバージョン文字列を生成し、"v"接頭辞を取り除きます。
このショートコードはバージョン文字列に対応したリリースノートCHANGELOGページのURLを表示します。
これは次の様に表示されます:
https://git.k8s.io/kubernetes/CHANGELOG/CHANGELOG-1.31.md
次の項目