2018年2月12日月曜日

Docker For Mac で Kubernetes を試してEC-CUBEを動かしてみる(その2)

SYSTEM_KDです。


前回の続きになります。

前回は、Kubernetes にて CentOS7 + Apache + PHP7.0 の環境を用意して、Apacheを確認する部分まで進みましたので、その続きとして PHP の動作を確認してみたいと思います。

とりあえず、phpinfo でPHPの設定情報でも表示してみようと思ったのですが、イメージファイル内には phpのファイルを含めていませんでしたので表示できません。

イメージに PHP ファイルを含めるようにして再作成すれば確認できる状態になると思いますが、ファイルを変更するごとに再作成を行うのも面倒&開発環境ですので、ホストをマウントするようにしたいと思います。

※ Kubernetes 1.9.2 で試してます

ホストをマウントするボリュームを用意


ホストをマウントしようとは決めましたが、ググってもいまいちどれが良いのか分からない、、というかバージョンのせいなのか、どれも書き方が違っている・・・。


仕方がないので、公式ドキュメント + 翻訳 で頑張ってみることにします。


まず、Volume といっても 普通の Volume と 永続的なVolume でわかれているようです。


消えても良いかどうかと言われると、開発のソースコードは消えない方が良いので、永続的な Volume (PersistentVolume)を利用するようにします。


ざっくりと、説明をみてみると、「PersistentVolume」と「PersistentVolumeClaims」が必要みたいです。

うーん・・さっぱり意味がわかりません・・ ^^;



とりあえず、言われるがままに用意します。


apiVersion: v1
kind: PersistentVolume
metadata:
  name: centos7-volume
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: centos7-storage
  hostPath:
    path: /ホストのパスフルパスで指定/html


実態としてはフルパスで指定したホストのパスの場所。

サイズとして、1Gi を確保


とりあえず作成してみる。


kubectl create -f centos7-volume.yml


kubectl get vp でエラーなく作成できているか確認。

NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM     STORAGECLASS      REASON    AGE
centos7-volume   1Gi        RWO            Retain           Available             centos7-storage             5s


次に、PersistentVolumeClaims を用意。


apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: centos7-volume-claims
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: centos7-storage


storageClassName を PersistentVolume と合わせてあげれば上手くつながってくれるみたいです。

こっちも作成してみる。

kubectl create -f centos7-volume-claims.yml

kubectl get vpc で STATUS が Bound になってれば成功です。


NAME                    STATUS    VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS      AGE
centos7-volume-claims   Bound     centos7-volume   1Gi        RWO            centos7-storage   3s


ボリュームが作成できたので、PODと紐付けてみます。


POD と Volume を紐付け


前回しようした、「centos7.yml」に Volume について追記します。


apiVersion: apps/v1
kind: Deployment
metadata:
  name: mycentos7
  labels:
    app: mycentos7
spec:
  selector:
    matchLabels:
      app: mycentos7
  template:
    metadata:
      labels:
        app: mycentos7
    spec:
      containers:
      - name: mycentos7
        image: localhost:5000/web/mycentos7:1
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: /var/www
          name: docroot
      volumes:
      - name: docroot
        persistentVolumeClaim:
          claimName: centos7-volume-claims


先程作った Volume を /var/www にマウントします。

マウントされるホスト側のディレクトリには、html ディレクトリと、phpinfo() を書いたPHPファイルを用意してます。

前回同様、

kubectl apply -f centos7.yml


で動かしてあげると、phpinfo が表示されるはず。

(サービスは前と同じです)




でました!!


とりあえず、Apache + PHP まではできたようですので、次はデーターベースに進みたいと思います。


タイトルに含めてたけど、EC-CUBEにたどり着けるのはまだ先になりそう。。


以上、Docker For Mac で Kubernetes を試してEC-CUBEを動かしてみる(その2) でした。



0 件のコメント:

コメントを投稿