KinDを使用したKubernetesの開発者

このガイドは、ローカルKubernetes開発環境をセットアップするためのクロスプラットフォームリソースとして提供することを目的としています。このガイドでは、KinDを使用します。これはDockerを使用してKubernetesクラスターを作成し、異なるバージョンや複数のノードをデプロイするための簡単なメカニズムを提供します。

また、nip.ioも利用します。nip.ioでは、以下のようなフォーマットで任意のIPアドレスをホスト名にマッピングすることができます:192.168.1.250.nip.io 192.168.1.250 にマッピングします。 インストールは不要です。

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

アップルシリコン (M1/M2)

kind は、colima と共に使用することで、M1 およびM2 の亜種を含む、macOS 上のローカル Kubernetes 開発環境を提供することができます。

依存関係のインストール

  • MacOS >= 13 (Ventura)を使用していることを確認してください。
  • colimaをインストールします。
  • インストールRosetta

     softwareupdate --install-rosetta
    

VMの構築

colima VMを作成します:

colima start --cpu 4 --memory 16 --disk 40 --profile docker --arch aarch64 --vm-type=vz --vz-rosetta

準備ができたら以下の手順に従ってGitLabをkind

VM の管理

colima VM を停止するには:

colima stop --profile docker

VMを再度起動します:

colima start --profile docker

ローカルシステムの削除とクリーンアップ

colima delete --profile docker

準備

必要な情報

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

  • Linux:hostname -i
  • MacOS:ipconfig getifaddr en0
note
ほとんどのMacOSシステムは、en0 プライマリインターフェースとして en0使用します。en0 異なるプライマリー・インターフェースを持つシステムを使用する場合は、そのインターフェイス名を.MacOSに置き換えて en0ください。

名前空間の使用

アプリケーションはdefault 以外のネームスペースにインストールするのがベストプラクティスとされています。kubectlhelm install を実行する前にネームスペースを作成してください:

kubectl create namespace YOUR_NAMESPACE

今後使用するすべてのkubectlコマンドに--namespace YOUR_NAMESPACE 。別の方法として、kubectxプロジェクトのkubens 、ネームスペースにコンテキストで切り替え、余分な入力を省略できます。

依存関係のインストール

asdf (more info) を使って、以下のツールをインストールできます:

  • kubectl
  • helm
  • kind

kind 、Dockerを使ってローカルのKubernetesクラスターを実行するので、Dockerをインストールしておいてください。

設定例の入手

GitLab chartsリポジトリには、以下の手順で参照するすべてのサンプルが含まれています。リポジトリをクローンするか、既存のチェックアウトを更新して最新版を入手してください:

git clone https://gitlab.com/gitlab-org/charts/gitlab.git

GitLab Helm チャートの追加

以下のコマンドに従って、GitLab Helm チャートにアクセスできるように設定しましょう:

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

デプロイオプション

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

note
最初のフルデプロイプロセスは、クラウドネイティブのGitLabイメージがダウンロードされる間、ネットワークやシステムリソースによって約10分かかる場合があります。以下のコマンドでGitLabが起動していることを確認します:
kubectl --namespace YOUR_NAMESPACE get pods

GitLabは、webservice ポッドが2/2 コンテナでREADY 状態を示している場合、完全にデプロイされています。

SSL付きNGINXイングレス・ノードポート

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

kind create cluster --config examples/kind/kind-ssl.yaml
helm upgrade --install gitlab gitlab/gitlab \
  --set global.hosts.domain=(your host IP).nip.io \
  -f examples/kind/values-base.yaml \
  -f examples/kind/values-ssl.yaml

そうすると、https://gitlab.(your host IP).nip.io で GitLab にアクセスできるようになります。

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

ブラウザが自己署名証明書を信頼できるようにするには、ルートCAをダウンロードし、それを信頼します:

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

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

note
docker login でレ ジ ス ト リ に ロ グ イ ンす る 必要があ る 場合は、 自己署名証明書で動作す る よ う レ ジ ス ト リ を設定す る ための追加手順が必要です。詳 し く はこ ち らこ ち ら を参照 し て く だ さ い。

SSLなしのNGINX Ingress NodePort

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

kind create cluster --config examples/kind/kind-no-ssl.yaml
helm upgrade --install gitlab gitlab/gitlab \
  --set global.hosts.domain=(your host IP).nip.io \
  -f examples/kind/values-base.yaml \
  -f examples/kind/values-no-ssl.yaml

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

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

DNSの処理

このガイドはnip.ioにネットワークアクセスできることを前提としています。これが利用できない場合は、KinDでも利用できるminikubeドキュメントのDNSの扱いを参照してください。

note
etc/hostsを編集する際は、$(minikube ip)の出力ではなく、ホストコンピュータのIPアドレスを使用することを忘れないでください。

クリーンアップ

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

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