KinDを使用したKubernetesの開発者

このガイドでは、KinDを使用します。KinDはDockerを使用してKubernetesクラスターを作成し、異なるバージョンや複数のノードをデプロイするための簡単なメカニズムを提供します。

また、nip.ioを利用します。nip.ioを利用すると、次のような形式で任意のIPアドレスをホスト名にマッピングすることができます:192.168.1.250.nip.io、これは192.168.1.250にマッピングされます。 インストールの必要はありません。

注意:以下の SSL 対応のインストールオプションでは、リポジトリのクローンや変更のプッシュを行いたい場合、SSH ではなく HTTPS 経由で行う必要があります。 NodePorts 経由での GitLab Shell のサービス公開を更新することで、これに対処する予定です。

準備

必要な情報

以下のインストール・オプションはすべて、あなたのホストIPを知る必要があります。 この情報を見つけるためのいくつかのオプションを紹介します:

  • Linux:hostname -i
  • MacOS:ipconfig getifaddr en0
注:ほとんどのMacOSシステムでは、en0 プライマリインターフェースとして使用されます。 別のプライマリインターフェースを持つシステムを使用している場合は、そのインターフェース名を. en0

名前空間の使用

default以外のネームスペースにアプリケーションをインストールするのがベストプラクティスとされています。kubectl create namespace (some name)を使用してネームスペースを作成し、--namespace (some name) を追加してkubectl コマンドを実行することができます。何度も入力したくない場合は、kubectxプロジェクトのkubens をチェックしてください。

kubectlのインストール

kubectlをインストールするには、こちらの手順に従ってください。

Helmのインストール

helmをインストールするには、こちらの手順に従ってください。

KinDのインストール

kindをインストールするには、こちらの手順に従ってください。

GitLab Helm チャートの追加

以下のコマンドに従って、GitLab Helmチャートにアクセスできるようにシステムをセットアップしてください:

helm repo add gitlab https://charts.gitlab.io/
helm repo update

デプロイオプション

ニーズに応じて、以下のデプロイオプションから1つを選択します。

ポートフォワーディング

この方法では、kubectl を使って NGINX Controller サービスをローカルにポートフォワードします。

注意:Linuxを使用している場合、コンテナはあなたのマシン上で直接実行されるため、このオプションはうまく機能するはずです。 MacOSの場合、DockerはVM内で実行されるため、サービスを正しく公開するには余分な手順が必要です。

まず、examples/kind/values-port-forward.yaml を開き、global.hosts.domain(your host IP).nip.ioに設定します。次に、以下のコマンドを実行します:

kind create cluster --config examples/kind/kind-port-forward.yaml
helm upgrade --install gitlab gitlab/gitlab -f examples/kind/values-port-forward.yaml
sudo kubectl port-forward --address (your host IP) service/gitlab-nginx-ingress-controller 443:443

GitLab へのアクセスは以下から行えます。https://gitlab.(your host IP).nip.io

注:kubectl port-forward コマンドでsudo を使用しているのは、ローカルでポート443をホストするには昇格権限が必要なためです。runnerが正常に接続できるようにするには、ポート443をホストする必要があります(runnerが接続するのは、ポートフォワードが開始されてからであることに注意してください)。

SSLを使用したNginx Ingress NodePort

この方法では、kind を使用して、Nginx コントローラサービスの NodePorts を SSL を有効にしたローカルマシンのポートに公開します。

まず、examples/kind/values-ssl.yaml を開き、global.hosts.domain(your host IP).nip.ioに設定します。次に、以下のコマンドを実行します:

kind create cluster --config examples/kind/kind-ssl.yaml
helm upgrade --install gitlab gitlab/gitlab -f examples/kind/values-ssl.yaml

GitLab にはhttps://gitlab.(your host IP).nip.ioからアクセスできます。

(オプション)ルート CA の追加

ブラウザが自己署名証明書を信頼するためには、ルートCAをダウンロードし、それを信頼してください:

kubectl get secret gitlab-wildcard-tls-ca -ojsonpath='{.data.cfssl_ca}' | base64 --decode > gitlab.(your host IP).nip.io.ca.pem

ルートCAをダウンロードしたら、ローカルチェーンに追加します(手順はプラットフォームによって異なりますが、オンラインで簡単に入手できます)。

注:GitLab Runnerを全く実行したくない場合は、関連する値ファイルで無効にすることができます:gitlab-runner.install=false
注:docker loginを使ってレジストリにログインする必要がある場合は、自己署名証明書で動作するようにレジストリを設定するための追加手順が必要です。詳しい手順は、こちらと こちらをご覧ください。

SSLなしのNginx Ingress NodePort

この方法では、kind を使用して、Nginx コントローラサービスの NodePorts を SSL を無効にしたローカルマシンのポートに公開します。

まず、examples/kind/values-no-ssl.yaml を開き、global.hosts.domain(your host IP).nip.ioに設定します:

kind create cluster --config examples/kind/kind-no-ssl.yaml
helm upgrade --install gitlab gitlab/gitlab -f examples/kind/values-no-ssl.yaml

GitLabにはhttp://gitlab.(your host IP).nip.ioからアクセスしてください。

注:docker loginでレジストリにログインする必要がある場合は、Dockerに安全でないレジストリを信頼するように指示する必要があります。

清掃

ローカルシステムをクリーンアップする準備ができたら、このコマンドを実行してください:

kind delete cluster
注意:作成時にクラスターに名前を付けた場合、または複数のクラスターを運用している場合は、--name フラグを使用して特定のクラスターを削除できます。