新しい IBM Developer JP サイトへようこそ!サイトのデザインが一新され、旧 developerWorks のコンテンツも統合されました。 詳細はこちら

Kubernetes 開発者向けセットアップ・ガイド

このセットアップ・ガイドの対象読者は主に、現在あるいは将来 Kubernetes オープンソース・プロジェクトに取り組んで貢献しようと目指している開発者、テクニカル・ライター、テスト担当者です。例えば、ドキュメントの編集、コードの修正、Kubernetes の新機能の起草に取り組みたいと考えている場合、Kubernetes API を使用する各種のアプリケーション (プロファイル作成ツール、モニタリング・ツール、統合ツールなど) を開発、使用している場合、Kubernetes の機能セットを明示的に利用するサービスを開発している場合は、いずれもこのガイドの対象読者となります。

最初のセクションで Kubernetes の基本について説明した後、以降のセクションで、開発環境をセットアップできるようお手伝いします。続いて、Kubernetes プロジェクトで GitHub と Git を使用する方法を説明し、最後のセクションで、Kubernetes プロジェクトに有用なコードを貢献できるよう、開発、ビルド、テストに関するアドバイスを提供します。

セットアップを開始する前の基本的な質問

今までに Kubernetes を扱った経験がない場合、セットアップを開始するにあたって以下のような質問があることが考えられます。

Kubernetes とは何ですか?

Kubernetes は、Go で作成されたアプリケーションの集合です。これらのアプリケーションが連携して、コンテナーをインタラクティブに管理できるプラットフォームを形成しています。

Kubernetes のソース・コードはどこにありますか?

Kubernetes のソース・コードは GitHub から入手できます。

Kubernetes はオープンソース・ソフトウェアですか?

Kubernetes はオープンソース・ソフトウェア (OSS) であり、Google から Cloud Native Computing Foundation (CNCF) に寄贈されました。

Kubernetes はどこで稼働するのですか?

Kubernetes はさまざまなオペレーティング・システム/ディストリビューション上で稼働します。ただし、このガイドでは Ubuntu 上で開発、テストするためのセットアップ手順を説明します。

前提条件

このセットアップ・ガイドに従うには、以下の前提条件が必要です。

  • GitHub アカウント
  • Git、bash、Linux の基礎知識

所要時間

このセットアップ・ガイドの手順を開始してから完了するまでの所要時間は、この一連の手順のどの段階まで達しているかによるため完全にそれぞれの読者次第です。開発者によっては、最初からリンク先のページで説明している手順に従うことにして、この記事は参考としてだけ読む場合もあるでしょう。あるいは、いろいろな問題に突き当たったり、これまで OSS の開発、テスト、または Linux の経験がなかったりすると、手順を完了するのに半日、1 日、数日、あるいは 1 週間かかることも考えられます。

こうした所要時間のばらつきに対処するために、時間がかかる部分をスキップして先に進めるよう、詳しい手順の参照先を記載します。専門家であっても時間がかかるような作業については、その旨を伝えます。また、環境のごく一部のみを構築してテストするためのショートカットも記載するので、所要時間を短縮できます。操作にかかる時間は、ハードウェアによって異なります。例えば、いくつかのテスト操作は、高速のクラスターでは 10 分、低速のラップトップでは 20 時間かかる場合もあります。

開発環境

まず始めに、以下の要素からなる基本的な Kubernetes 開発環境を作成します。

すでに希望どおりに環境をセットアップしてある場合は、遠慮なく「GitHub と Kubernetes プロジェクト」にスキップしてください。

ホスト・オペレーティング・システムをセットアップする

まず始めに必要な作業は、どこかに Ubuntu をインストールすることです。Ubuntu 16.04 または 18.04 LTS Server あるいは Desktop で十分必要を満たします。これよりも新しい LTS 以外のリリースを使用することもできますが、それは各自にお任せします。私は iMac 上の仮想マシン (VM) 内で最新の VirtualBox を使って 16.04 LTS Desktop を実行している他、Mac ラップトップ上では VirtualBox を使って 18.04 LTS Desktop を実行し、ほとんど中古の部品を使って組み立てたベアメタル・サーバー上では 18.04 LTS Server を実行しています。

Kubernetes の開発に仮想マシンを使用できることは確かです。私もそうしているので、独自のサーバーを構築するリソースがないとしても、やる気をなくす必要はありません。

VirtualBox 上に Ubuntu をセットアップするには、以下の手順に従います。

VirtualBox の設定に関しては、以下の提案を参考にしてください。

  • ベース・メモリー 8GB
  • 140GB VDI ハード・ディスク
  • 共有クリップボード — 双方向専用 (デスクトップの場合)
  • ビデオ・メモリー 128MB (デスクトップの場合)
  • ネットワーキング: NAT
  • ゲスト追加モジュールをインストールする必要があります (デスクトップの場合、「VirtualBox VM」 > 「Devices (デバイス)」 > 「Insert Guest Additions CD Image (ゲスト追加 CD イメージ)」… の順にクリックします)
  • ポート転送ルール (拡張「Network (ネットワーク)」セクションのボタンを参照)

    VirtualBox 内のポート転送ルールを示す画面のスクリーン・キャプチャー

Ubuntu をセットアップする

Ubuntu Desktop を使用している場合は、ターミナルを作成します。

Ubuntu ターミナルのスクリーン・キャプチャー

次に、ソフトウェア・アップデーターを実行します。

Ubuntu ソフトウェア・アップデーターを示す画面のスクリーン・キャプチャー

以下のスクリーン・キャプチャーは、ターミナルから apt-get update を実行中の画面を示しています。

ターミナルから実行中の apt-get コマンドを示す画面のスクリーン・キャプチャー

ssh を使用、構成する

Ubuntu Desktop をインストールした場合、ssh を実行するには、ssh を使用して以下の手順に従ってください。

PC または Mac クライアントを使用して、ssh で Ubuntu Server または Desktop に接続します。Ubuntu Desktop をインストールした場合、ssh を実行するには、以下のコマンドを実行します。

$ sudo apt-get install openssh-server
$ sudo service ssh start or sudo /etc/init.d/ssh start
$ ssh -v localhost

次に、クライアント・マシンから (パスワードを使用して) ssh サーバーにログインします。

ssh サーバーにログインする方法を示す図

パスワードなしで ssh 接続できるようにするには、以下の手順に従います。

これまで、Kubernetes のエンドツーエンド・テストを実行するには、パスワードを使用しない ssh 接続を構成する必要がありました (パスワードではなく、鍵を使用する ssh 接続)。パスワードを使用しない ssh 接続をセットアップする必要がない場合は、「Go をインストールする」にスキップしてください。

まず、以下のコマンドを使用して Ubuntu の公開鍵と秘密鍵を生成します。

$ ssh-keygen -t rsa

次に、デフォルトの場所を使用してパスワードを入力するか、何も入力せずに Enter キーを押します。

$ ssh-copy-id mike@10.0.2.15

Mac 上で、~/.ssh ディレクトリーから以下のコマンドを実行して鍵を生成します。

$ ssh-keygen -b 1024 -t rsa -f id_rsa -P ""

Mac の秘密鍵 (例: cat ~/.ssh/d_rsa.pub) をコピーし、Ubuntu ゲストの /home/user/.ssh/authorized_keys ファイル内に貼り付けます。

パスワードを使用せずに ssh 接続できるように Ubuntu ゲストを構成します。

$ sudo nano /etc/ssh/sshd\_config

UN-comment/configure を以下のように編集します。

PubkeyAuthentication yes

AuthorizedKeyFile %h/.ssh/authorized\_keys

PasswordAuthentication no

PermitRootLogin without-password

再起動します。

$ sudo service ssh restart or sudo /etc/init.d/ssh restart

テストします。

$ ssh mike@ubuntu (ubuntu = hostname) or 127.0.0.1 or 10.0.2.15 ...

機能することを確認してから終了します。

パスワードを使用しない root としてログインするため、手っ取り早い方法を取ることができます。それは、ユーザーの公開鍵と秘密鍵のペアと authorized_keys の値を /root/.ssh にコピーすることです。以下に例を示します。

$ sudo cp ~/.ssh/authorized_keys /root/.ssh/authorized_keys (you may have to mkdir /root/.ssh)
$ sudo cp ~/.ssh/id_rsa /root/.ssh/id_rsa
$ sudo cp ~/.ssh/id_rsa.pub /root/.ssh/id_rsa.pub

これで、Mac ターミナル上のユーザー・アカウントから、root またはユーザーとしてパスワードを使用せずに ssh でゲスト Ubuntu に接続できるようになったはずです。

ターミナル 1:

ssh -p 2222 root@127.0.0.1

ターミナル 2:

ssh -p 2222 mike@127.0.0.1

Ubuntu ホスト間でユーザーまたは root アカウントに ssh 接続することもできます。

$ ssh root@10.0.2.15
$ sudo ssh root@10.0.2.15

Go をインストールする

Go をインストールする際は、Kubernetes でサポートされている最新バージョン (またはできるだけ新しいバージョン) の Go をインストールしてください。

https://golang.org/dl/ で目的のバージョンを選択し、curl を実行してローカル・ホストにダウンロードします。

  $ curl -O https://storage.googleapis.com/golang/go1.13.9.linux-amd64.tar.gz

以下のインストール手順に従います。

$ tar -xvf go1.13.9.linux-amd64.tar.gz
$ sudo mv go /usr/local
$ rm go1.13.9.linux-amd64.tar.gz

該当するユーザーの環境変数を構成します。以下の例では、現在ログインしているユーザー (~) の環境変数を構成しています。

$ sudo nano ~/.profile

以下のコマンドを実行します。

$ sudo nano /root/.profile

次に、以下の行を追加して、これらのファイルにエクスポート・パス・ステートメントを追加します。

$ export PATH=$PATH:/usr/local/go/bin:/home/mike/go/bin

注: /usr/local/go/bin は Go に同梱されている Go バイナリーを実行するためのディレクトリー、/home/username/go/bin は Go で作成する任意の Go アプリケーションを実行するためのディレクトリーです。

構成をテストします。

$ go version

go version go1.13.9 linux/amd64

ユーザー・プロファイルの編集内容を使用して sudo として実行するには、以下のコマンドを実行します。

$ sudo su --

# source /home/mike/.profile

リスクは高くなりますが、root としてログインし、visudo を使用して sudo secure_path を変更するという方法で、Go 用のパスを追加することもできます。:

# visudo

デフォルトの sudo secure_path を編集します。

Defaults
secure\_path=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/go/bin:/home/mike/go/bin\"

sudo 構成をテストします。

$ sudo go version

go version go1.13.9 linux/amd64

Docker と containerd をインストールする

Ubuntu に Docker エンジンをインストールする方法について詳しくは、このリンク先の Docker ドキュメントを参照してください。

Docker をインストールするには、まず、パッケージを更新します。

$ sudo apt-get update

次に、以前のバージョンをすべて削除します。

$ sudo apt-get remove docker docker-engine docker.io containerd runc

https トランスポートのサポートをインストールします。

$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

Docker の GPG 鍵を追加します。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

apt リポジトリーとして、Docker の安定版リリースを追加します。

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Docker と containerd の最新の安定版をインストールします。

$ sudo apt-get update

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

特定の Docker バージョンを選ぶには、以下のコマンドを実行します。

$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

Docker インストール済み環境をテストします。

$ sudo docker run hello-world

sudo を入力せずに Docker を実行できるよう、sudo として実行する Docker グループに自分を追加します。

$ sudo usermod -aG docker mike

Ubuntu ホストをリブートします。

$ sudo shutdown -r

ホストのリブートが完了したら、ssh を使用してホストに再度ログインし、今度は sudo を使用しないで Docker を再テストします。

$ docker run hello-world

ビルド・ツールをインストールする

以下のコマンドを実行します。

$ sudo apt-get install build-essential

jq をインストールする

以下のコマンドを実行して jq (JSON プロセッサー) をインストールします。

$ sudo apt-get install jq

python-pip とd pyyaml をインストールする

以下のコマンドを実行して python-pip と pyyaml をインストールします。

$ sudo apt-get install python-pip

$ sudo pip install pyyaml

GitHub と Kubernetes プロジェクト

最初に fork する対象を確認してください。その後、fork のクローンを作成し、プロファイルとクライアント構成に関する考慮事項、さらに Kubernetes プロジェクトの Git ワークフローについて説明します。

fork する

GitHub 上で、以下を対象とした開発用 fork を作成します。

fork のクローンを作成する

通常、github.com ソース・リポジトリーのクローンを作成する際は、$GOPATH/src/github.com パスまたは (GitHub 内のソースへのパスを表す) ~/go/src/github.com/projectname パスを使用します。その理由は、go get タイプのコマンドを使用して GitHub でホストされているパッケージをプルするときに便利だからです。

ただしご推察のとおり、従来からの理由によって Kubernetes パッケージには github.com/kubernetes/kubernetes という名前ではなく、k8s.io/kubernetes という名前が付けられています。したがって、すべての開発ツールを正常に機能させるには、ディスク上のパッケージ・コードが見つかるようにクローンを k8s.io ディレクトリー内に格納する必要があります。

name/kubernetes fork から、以下の手順に従って k8s.io/kubernetes ソース・ツリーを作成します。

mike@mike-VirtualBox:~/go/src$ mkdir k8s.io
mike@mike-VirtualBox:~/go/src$ cd k8s.io
$ git clone https://github.com/mikebrow/kubernetes.git
$ git clone https://github.com/mikebrow/website.git
$ git clone https://github.com/mikebrow/test-infra.git

結果: fork 内のソース・ファイルが go/src/k8s.io/kubernetes ディレクトリーと k8s.io/website ディレクトリーにコピー (複製) されます。また、Git により、ローカル・ハード・ディスク上に GitHub fork のマスター・ブランチが作成されます。

ブランチのステータスを確認します。

$ cd kubernetes

$ git status

On branch master
Your branch is up-to-date with 'origin/master`.
nothing to commit, working directory clean

GitHub プロファイルに関する推奨事項

GitHub プロファイルに関する以下の推奨を採用するかどうか検討してください。

  • e-メールをパブリック・プロファイルに追加する
  • 2 要素認証を有効にする

Git クライアント構成に関する推奨事項

クライアント構成に関する以下の推奨を採用するかどうか検討してください。

user.* エントリーを global、local、またはその両方に設定します。

$ git config --local user.name "full name here"

$ git config --local user.email "email address here"

または

$ git config --global user.name "full name here"

$ git config --global user.email "email address here"

プッシュしやすくします。

$ git config --global push.default simple

毎回 GitHub 資格情報を思い出さなくても済むように、以下のコマンドを実行します。

$ git config credential.helper store

git に対し、ハード・ディスク上に複製されたブランチに加えられた変更を追跡し、kubernetes/kubernetes と照らし合わせるように指示します。

$ git remote add upstream https://github.com/kubernetes/kubernetes.git

git config -l を実行すると、以下のような結果が出力されるはずです。

user.name=Mike Brown
user.email=brownwm@us.ibm.com
push.default=simple
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://github.com/mikebrow/kubernetes.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.upstream.url=https://github.com/kubernetes/kubernetes.git
remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*
credential.helper=store

Kubernetes オープンソース・プロジェクトの Git ワークフロー

以下の図は、GitHub 上のオープンソース・プロダクトでの問題を見つけて修正する際の典型的な Git ワークフローを示しています。このフローは Docker を対象に描かれていますが、Kubernetes の場合でも有効です。

ターミナルから実行中の apt-get コマンドを示す画面のスクリーン・キャプチャー

https://github.com/kubernetes/kubernetes/issues にアクセスして、取り組めそうな Kubernetes の問題を見つけてください。

Kubernetes OSS の問題を示す画面のスクリーン・キャプチャー

見つけた問題に関するコメントを残します。

質問がある場合は、遠慮なく質問してください。

問題に取り組みたい場合は、その旨を表明します。例えば、#dibs を呼び出しているというセンテンスを追加して、この問題に取り組んでいることを示します。

自分一人で問題を修正できるかどうか確信を持てない場合は、#investigating を使用して、少なくとも調査していることを表明します。その場合、問題修正の担当にはなりませんが、後で dibs を呼び出す可能性があることを他のメンバーにわかってもらえます。

Kubernetes 開発 (etcd をインストールする)

Kubernetes を構築する前に、etcd をインストールする必要があります。Kubernetes には、etcd をインストールするための以下のスクリプトが同梱されています。

$ hack/install-etcd.sh

表示された etcd へのパスをユーザー・プロファイルに追加します。例えば、/home/mike/go/src/k8s.io/kubernetes/third_party/etcd をパスに追加するには、以下のコマンドを使用します。

$ sudo nano ~/.profile

$ sudo nano /root/.profile

必要に応じて、このパスを sudo の secure\_path に追加します。

$ sudo su -
# visudo

セキュア・パスは以下のようになります。

Defaults
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/go/bin:/home/mike/go/bin:/home/mike/go/src/k8s.io/kubernetes/third_party/etcd"

ホストをリブートします。

$ sudo shutdown -r

ホストのリブートが完了したら、ssh を使用してホストに再度ログインし、etcd をテストします。

$ etcd --version
$ sudo etcd --version

make を使用して Kubernetes を構築する

help ターゲットを使用して make のオプションを表示します。

$ make help

特記事項と警告: Kubernetes を初めて構築、検証、テストするときは時間がかかります。これは、Kubernetes がかなりの数の大きなコンテナー・イメージをビルドしてダウンロードするためです。初めて、あるいは 2 回目でも、ダウンロードの実行を試みると、一部のダウンロードが失敗して、ビルドとテストが予期せずに失敗することがあります。また、「マスター」を構築することから、テストの一部や多くの部分でエラーが発生することも考えられます。エラーによっては、長時間待った末にタイムアウトして発生するものもあるため、忍耐が必要です。すべてがダウンロードされて、エラーも発生していないとしても、構築、検証、テストのステップにはかなりの時間がかかることを覚悟しておいてください。

Kubernetes を実行するために必要なすべてのものをローカルでビルドするには、ターゲットとして all を使用します。

$ sudo make all

パッケージ/実行可能ファイルのうちの 1 つだけをビルドする場合は、make WHAT=cmd/package\_name を使用します。例えば、kublet サーバーをビルドするには、以下のコマンドを実行します。

$ sudo make WHAT=cmd/kublet

変更内容によっては、クライアント/サーバー・パッケージが常にビルドされるとは限りません。この 2 つを同期させる (ビルドされたバイナリーを消去/削除する) には、clean を使用します。

$ sudo make clean

リリースを生成するには、以下のコマンドを実行します。

$ sudo make release

テストを実行せずにリリースを生成するには、以下のコマンドを実行します。

$ sudo make release-skip-tests

Kubernetes をテストする (単体テストと統合テスト)

ローカルの開発ブランチに加えた変更をコミットする前に、検証テスト、単体テスト、統合テストを実行することをお勧めします。変更のタイプによっては、エンドツーエンド・テスト・バケットを実行することもお勧めします。

PR を kubernetes/kubernetes にプッシュする前に、ビルド検証テスト (送信前検証) を行います。

$ sudo make verify

以下のコマンドを実行して単体テストを行います。

$ sudo make test

pkg/api/pod だけをテストする場合は、以下のコマンドを実行します。

$ sudo make test WHAT=./pkg/api/pod

冗長モードで kubelet だけをテストします。

$ sudo make test WHAT=./pkg/kubelet GOFLAGS=-v

冗長モードでポッドと kubelet をテストします。

$ sudo make test WHAT="./pkg/api/pod ./pkg/kubelet" GOFLAGS=-v

以下のコマンドを実行して統合テストを行います。

$ sudo make test-integration

kubelet の統合テストを行うには、以下のコマンドを実行します。

$ sudo make test-integration WHAT=./test/integration/kubelet

冗長モードでポッドの統合テストを実行します。

$ sudo make test-integration WHAT=./test/integration/pods GOFLAGS="-v"

Kubernetes のエンドツーエンド・テスト

以降のセクションで、Kubernetes のエンドツーエンド (e2e) テストを実行する方法を説明します。

1. kubetest をインストールする

以下のコマンドを実行して kubetest をインストールします。

$ cd ../test-infra
$ sudo GO111MODULE=on go install ./kubetest
$ cd ../kubernetes

2. ローカル・クラスターを起動する

Kubernetes の e2e テストを実行するには、クラスターを使用する必要があります。Kubernetes 対応のクラスターであれば、どのクラスター上でも e2e テストを実行できます。このガイドでは、Linux 環境内で実行される単一ノードのクラスターを作成する方法を説明します。これまでの手順に従っていれば、VM 内またはベアメタル上の Ubuntu ホスト内で、このクラスターが Ubuntu ゲスト・アカウント内で実行されます。使用するターミナルは 2 つです。

e2e テストに関する注記: デフォルトの e2e テスト選択項目では、クライアントとサーバーのバージョンが一致していない場合、e2e テストは実行されません。現在は、check_version_skew=false を設定することで、バージョンが一致していなくても e2e を実行できるようになっています。

ターミナル 1 内で、Kubernetes を構築してローカル・クラスターを起動します。

$ sudo make clean
$ sudo make
$ sudo PATH=$PATH hack/local-up-cluster.sh

ターミナル 2 内で、ローカル・クラスターと相互作用するように kubectl を構成します。

$ export KUBECONFIG=/var/run/kubernetes/admin.kubeconfig

単一ノード・ローカル・クラスターのステータスを確認します。

$ cluster/kubectl.sh get nodes

NAME        STATUS    AGE
127.0.0.1   Ready     3h

3. e2e テストを実行する

ターミナル 2 で、e2e シークレット・テスト・バケットを実行します。

$ sudo kubetest --provider=local --test --test_args="--minStartupPods=1 --ginkgo.focus=Secrets"

注: ローカル・クラスター内に 1 つのノードしかないことを反映させるために、minStartupPods1 に設定します。

すべての e2e テストを実行します (テストが完了するまでには時間がかかります)。

$ sudo kubetest --provider=local --test --test_args="--minStartupPods=1"

Kubernetes クラスターを使い終わったら、ターミナル 1 で Ctrl-C キーを押して、すぐにシャットダウンできます。

エンドツーエンド・テストについて詳しくは、e2e-tests を参照してください。

Kubernetes のエンドツーエンド・ノード・テスト

以降のセクションで、Kubernetes のエンドツーエンド・ノード・テスト (e2e ノード・テスト) を実行する方法を説明します。

1. ginkgo をインストールする

以下のコマンドを実行します。

$ sudo go get -u github.com/onsi/ginkgo/ginkgo
$ sudo go get -u github.com/onsi/gomega/...

2. クラスターを起動する

ターミナル 1 で、単一ノードからなるローカル・クラスターを起動します。

$ sudo PATH=$PATH hack/local-up-cluster.sh

ターミナル 2 で、ローカル・クラスターと相互作用するように kubectl を構成します。

$ export KUBECONFIG=/var/run/kubernetes/admin.kubeconfig

3. e2e ノード・テストを実行する

Sysctls e2e-node テストをローカルで実行します。

$ sudo make test-e2e-node PARALLELISM=1 FOCUS=Sysctls

すべての e2e ノード・テスト を実行します (テストが完了するまでには時間がかかります)。

$ sudo make test-e2e-node PARALLELISM=1

エンドツーエンド・ノード・テストについて詳しくは、 e2e-node-tests ドキュメントを参照してください。

生成されたファイルをビルドする

kubernetes/kubernetes ツリー内の他のソース・ファイルの生成に使用するソース・ファイルを編集したら、git commit でコミットする前に、生成されたファイルを更新する必要があります。それには、以下のコマンドを実行します。

$ sudo make update

Running update-generated-protobuf
Running update-codegen
Running update-generated-runtime
Running update-generated-device-plugin
...

Kubernetes ドキュメンテーション Web サイト

Kubernetes のドキュメンテーションに貢献するには、これらの手順に従ってください。

他に必要な作業

まだ完全に終わったわけではありません。他にも行うべきタスクがあります。

  • 変更をコミットする前に、変更したファイルのそれぞれに対して gofmt -s-w file.go を実行します。
  • 変更をコミットする前に、変更したファイルのそれぞれに対して golint を実行します (現在、Kubernetes チームでは lint を使用していませんが、これを実行しても害にはなりません)。
  • 機能を作成または変更したら、必ずドキュメントを更新してください。
  • 変更内容に対応するテスト・ケースを必ず追加してください。
  • 問題を修正またはクローズするためのコミットでは、コミット・メッセージでその問題に言及してください (Closes #XXXX または Fixes #XXXX)。
  • 毎回コミットした後、テスト・スイートを実行してテストに合格することを確認します。
  • マスターの進化についていくために、できるだけ頻繁にコードの同期とリベースを行います。

まとめ

Kubernetes の開発を開始する上で、このガイドが皆さんのお役に立ったことを願います。Kubernetes コミュニティーのガイドラインを確認し、そのガイドラインに従って、コントリビューター、メンバー、レビューアー、承認者 (別名「コミッター」、「メンテナー」)、サブプロジェクト・オーナーとして成功してください。

私に連絡する際は、brownwm@us.ibm.com 宛てに e-メールを送信するか、https://twitter.com/mikebrow にアクセスしてください。