LoginSignup
4
7

More than 5 years have passed since last update.

ローカル環境(Win7)でKubernetesを動かす

Posted at

Minikubeとは

  • ローカル環境で動作可能なKubernetes(Win/Mac/Linux...)
  • Dockerホストが別途必要(Docker for Windows...)
  • ハイパーバイザーが別途必要(Hyper-V、VirtualBox...)
    • Minikube用のVMイメージの作成は不要

インストール

  • Docker for Windowsインストール
    • (省略)
  • VirtualBoxインストール
    • (省略)
  • minikube.exeダウンロード
    • https://github.com/kubernetes/minikube/releases
      • minikube-windows-amd64.exeをダウンロード
      • 保存先パスを環境変数PATHに追加
      • ファイル名を「minikube.exe」にリネームし、任意のフォルダに保存(例:c:\minikube)

Kubernetesクラスタの作成

ハイパーバイザーをVirtualBoxに設定

minikube config set vm-driver virtualbox

Kubernetesクラスタの作成

minikube start

状態確認

minikube status

ダッシュボード(ブラウザ)の起動

minikube dashboard

Minikubeへのデプロイ(Podの作成)

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-sample
spec:
  replicas: 2  // 同じ仕様のPodを2個起動する
  template:
    metadata:
      labels:
        app: deployment-sample  // Service作成時に指定するラベル名
    spec:
      containers:  // Podに含めるコンテナイメージの設定
      - name: nginx
        image: nginx:1.1
      - name: myapp
        image: myapp:1.1
  • ymlの内容を登録(Podのデプロイ、起動)
kubectl apply -f deployment-sample.yml
  • デプロイ後のイメージ
  • 01.png

CI/CDの流れ

  • 全体構成イメージ

02.png

  • 検証環境(Kubernetes)へデプロイ
    • 開発環境(ローカル)
      • Gitのdevブランチにpush
    • CIサーバ
      • devブランチをチェックアウト
      • ビルド・単体テスト
      • Dockerイメージの作成(docker build)
      • イメージをDockerレジストリに登録(docker push)
      • 検証環境にデプロイ(kubectl apply)
        • DockerレジストリからDockerイメージを取得
        • Pod作成・起動
      • (Integration Test実行)
        • テストに失敗したらデプロイをロールバック(kubectl rollout)
    • デプロイ後のイメージ
      • すでにDeploymentが存在する状態でkubectl applyを実行すると、新しいDeployment(Pod)が作成される
      • 新旧バージョンが混在した期間を経て、最終的に新バージョンに切り替わる(ローリングアップデート)

03.png

  • 本番環境(Kubernetes)へデプロイ
    • 開発環境(ローカル)
      • devブランチをmasterブランチにマージ
    • CIサーバ
      • masterブランチをチェックアウト
      • ビルド・単体テスト
      • Dockerイメージの作成(docker build)
      • イメージをDockerレジストリに登録(docker push)
      • 本番環境にデプロイ(kubectl apply)
        • DockerレジストリからDockerイメージを取得
        • Pod作成・起動
        • リリースに失敗したらデプロイをロールバック(kubectl rollout)

課題

  • Dockerイメージのバージョン付け方
    • そもそもつけるものなのかどうか
    • docker buildとdeployment.ymlのバージョンをCIで更新する??
  • 本番環境へのデプロイはローリングアップデートでいいのか?
    • ブルーグリーンとかカナリヤの場合はどうやる?
      • ブルーグリーンの場合は、新VerのPodに旧Verと異なるラベルを付与する
  • Dockerイメージ毎回作ると容量の問題は?
  • どういうNWの動きになってるの?

参考

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7