docker for mac に同梱されている kubernetes を使ってみる
昨日、こちら でminikubeを使ったローカル環境の構築を行いましたが、どうやら docker for mac に kubernetes が同梱されているようなので、使ってみます。
インストールする
右上の dockerのマークをクリックし、 Preference
を選択
Kubernetes
-> Enable Kubernetes
にチェックを入れて、Apply
をクリックすればインストールされ使えるようになります。
早速デプロイしてみる
先日、こちらで、minikubeにデプロイしたアプリケーションを使います。また、今回はkomposeコマンドは使わずにyamlファイルを作成し、kubectlコマンドでデプロイするようにします。(ただ、yamlファイルはkomposeで生成したものをベースにし修正しました。)
こちらのyamlファイルを用意し、 (まだ、雰囲気で書いている段階なので冗長な箇所などがあるかも)
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: rails spec: replicas: 1 strategy: {} template: metadata: creationTimestamp: null labels: group: rails spec: containers: - args: - bash - -c - rm -rf /usr/src/app/tmp/pids/server.pid && bundle exec rake db:migrate && bundle exec rails s -b 0.0.0.0 image: localhost:5000/takapi/app_rails:v1 name: rails ports: - containerPort: 3000 resources: {} status: {}
apiVersion: v1 kind: Service metadata: name: rails spec: ports: - name: "3000" port: 3000 targetPort: 3000 selector: group: rails type: NodePort status: loadBalancer: {}
以下のコマンドでデプロイ
kubectl create -f rails-service.yaml kubectl create -f rails-deployment.yaml
どうやらうまく行った感じがします。
kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE rails NodePort 10.99.111.229 <none> 3000:31378/TCP 4m
kubectl get deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE rails 1 1 1 1 4m
kubectl get pods NAME READY STATUS RESTARTS AGE rails-558944b847-4vbgv 1/1 Running 0 4m kubectl logs rails-558944b847-4vbgv INFO WEBrick 1.4.2 INFO ruby 2.6.1 (2019-01-30) [x86_64-linux] INFO WEBrick::HTTPServer#start: pid=1 port=3000
そして、localhost:31378
にアクセスすると、アプリケーションのページが表示されるようになりました!
ソースファイルをマウントしてみる
minikubeと違い、ホストはmacなので(もちろん、dockerを動かすためのVMはいますが)普通にVolumeマウントができます。
ということで、 rails-deployment.yaml
に以下に追記し、
ports: - containerPort: 3000 resources: {} + volumeMounts: + - name: app-src + mountPath: /usr/src/app + restartPolicy: Always + volumes: + - name: app-src + hostPath: + path: /Users/takapi/app + type: Directory status: {}
再デプロイします。
kubectl delete deployment rails deployment.extensions "rails" deleted kubectl create -f rails-deployment.yaml deployment.extensions "rails" created
ファイルを編集するとリアルタイムで変わったので、マウント成功!
まとめ
現時点でやってみた感じでは、minikubeもdocker for macもどちらも大きく操作が異なるという訳ではありませんした。 なので、実際開発環境として使う際は、mac を使っている人は、docker for mac で良いのではないかなぁ。多分。と思う今日の頃。
minikubeの場合、ホスト側のファイルをマウントしたいときは、PC <-> minikube <-> コンテナ
といった感じにマウントしなくてはならないため、PC <-> minikube
のファイル共有設定に一手間必要そうです。
ちょっとだけ、Kubernetesの雰囲気が掴めてきたかもしれない。
今日のところはこんな感じで。