LoginSignup
1
1

More than 5 years have passed since last update.

Minikube + ASP.NET Core でHello Worldする

Last updated at Posted at 2018-06-24

Minikube + ASP.NET Core でHello Worldする

概要

  • Minikubeを使ってLocalで ASP.NET Core 2.1のコンテナを動かす
  • Kubernetesのコマンドに色々触れる
  • AKSがGAしたので、AKSを使ってもいいが、最初はローカルで

( kubectlは「きゅーぶこんとろーる」と読んでいる人が多いのでminikubeも個人的には「みにきゅーぶ」と読んでいる(「くーべ」と言っている人を否定しているわけではない)

使用環境

  • Ubuntu 16.04LTS
  • Docker(Install済み)
  • dotnet core SDK(Install済み)

環境準備

  • Minikubeのインストール方法に関してはこちらを参照
  • ただしなぜかMac前提なので、Ubuntuはこちらを見る

1. Minikubeをインストール

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

VirtualBoxが入っていない場合は入れておく
下記のコマンドでminikubeを起動する。
minikubeのデフォルトのハイパーバイザーはVirtualBoxなので、下記のコマンドでは勝手にVirtualBox上にminikubeが起動する。もし宗教上の理由などでO社製品が使えないといったタブーがある場合はKVMを使って起動のオプションを変えてやるといいかもしれない。

minikube start

2. Minikubeを起動させる

kubectlはこの記事を試す前に全然別のタイミングで入れたので、kubectlが入っていない場合はここを参考に入れておく。
ちなみにkubectlはクラウドネイティブ世代のSSHと言われている。
我々がSSHでリモートのLinuxサーバや仮想マシンにアクセスしてきたように、
クラウド上にあるkubernetesにアクセスして管理するためにkubectlを使うとのこと。

kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080
kubectl expose deployment hello-minikube --type=NodePort
kubectl get pod
> NAME                             READY     STATUS    RESTARTS   AGE
> hello-minikube-6c47c66d8-2dldq   1/1       Running   1          1m

PodというのはKubernetesを扱う上ではよく出てくる言葉で概念は知っておいたほうがいい。
どのレイヤーを抽象化しているのかこちらの図が非常にわかりやすい。

アプリを作って動かす

1. dotnetのアプリのコンテナ作成する

newしてbuildしてrun出来るアプリを作る。手元に何も無ければ以下を実行。

dotnet new sampleapp
cd sampleapp
dotnet build
dotnet run

これで普通のASPのhello worldページが表示されるはず。
Dockerfileを作る。

FROM microsoft/dotnet:2.1-sdk-alpine AS build
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

FROM microsoft/dotnet:2.1-aspnetcore-runtime-alpine AS runtime
WORKDIR /app
COPY --from=build /app/out .
ENTRYPOINT ["dotnet", "aspsample.dll"]

Dockerのコンテナイメージをminikube上からpull出来るようにdockerの環境変数を変更。

eval $(minikube docker-env)

普通にbuildしてrun

docker build -t aspsample:v1 .
docker run -d -p 8080:80 --name aspapp aspsample

2. アプリをデプロイする

Deploymentはこちらに詳しい。

kubectl run aspdeployment --image=aspapp:v1 --port=8080
kubectl get deployments
> NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
> aspdeployment    1         1         1            1           1m

ポートを開けてサービスを起動する。

kubectl expose deployment aspdeployment --type=LoadBalancer --port=80
minikube service aspdeployment

ブラウザが開きhello worldページがみれるはず。

最後に

  • .NET系の開発者がメインで使っているであろうWindows環境でこれらを色々試そうとすると、3時間ドハマりして出来なかったことが、Ubuntu上で色々やると10秒で出来て捗る
  • Visual StudioにもKubernetesのプラグインがそのうち追加されそうだけど、(現在はプレビュー)ある程度枯れるまでは全然期待してない。(プラグインが良くても他がよくならないと意味ない)
  • なので、今後時代はkubernetesだー!と思っている.NETエンジニアは最初からMacやLinuxを使えばいいと思う。
1
1
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
1
1