2018年2月10日土曜日

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

SYSTEM_KDです。

ブログを放置しまくっていますが、久々に書きたいと思います。
(もう2月というのに今年初投稿とは、、もっと適当に頑張ろっと)

Docker for mac で Kubernetes (Beta版) が利用できるようになったらしいので、試してみます。

Docker の使い方を教えてもらってから、開発環境は Docker を利用しており、Kubernetes も試してみたかったというか、興味があったものの、よく分からず手が出せておりませんでした。。 ^^;

ということで、基本よく分からない状態でゴニョゴニョやってみたいと思います。

最終的には、EC-CUBEが動く状態の環境を作りたいという趣旨です。

Edge版をインストール


さっそく使ってみたいと思いますが、Docker For Mac の Stable 版ではまだ利用できず、Edge版を利用しないといけないので、インストールします。



 (と思ったのですが、一度Stable版をアンインストールしてEdge版が再インストールされるので、開発環境(主に Volume)のエクスポートを行いました)


インストールが完了して、起動したら設定を表示して、kubernetes を有効化します。



有効化できたら、利用できるようになっているはずです。
(miniKubeとかを使ってたら設定を変更する必要がありますが、そこらへんはスキップで)



インストールはできたので、さっそく何か動かしてみたいと思います。


つくる環境を考える


ゴールは、EC-CUBEを動作させるということで、LAMP環境(できればMySQLではなくPostgreSQLが良い)を作りたいと思います。


・・ググる

・・・ググる

・・・・ググる


色々と検索をしてみましたが、よくあるサンプルは nginx と WordPress あたりですね。

(まぁ、並行的に動かして・・・と考えると nginx ですよね)


EC-CUBEのシステム要件としては、WebServer は Apache なので、(というか公開を前提とした本気の環境でも無いので)とりあえず Apache を動かしてたい。。


Apache のイメージを持ってきて動かせば、とりあえず起動させるのは問題ないかと思いますが、今の開発環境をベースに試したいと思いますので、謎の縛り状態でやってみたいと思います。


[ 環境 ]
CentOS 7
Apache 2.4
PHP 7.0
MySQL ( と PostgreSQL )


まずは Apache


目指す環境が決まりましたので、順に進んでいきたいと思います。

まずはこれを用意
CentOS7 + Apache 2.4 + PHP7.0


普段は、Dockerfile を用意しておいて、docker-compose で組み立ててますが、Kubernetes でやるには、イメージをもってくるような状態にしないといけないようですので、普段の Dockerfile をもとにイメージを用意したいと思います。


・・・

プライベートなレジストリ持ってないです。はい。
(DockerHub のアカウント作ってないです ^^;


まずは、Apache と言いながら、いきなり別のことになりそうです。。


ということで、Dockerを使って自前で用意します。


version: "3"
services:
  myregistry:
    image: registry:2.6
    volumes:
      - ./myregistry:/var/lib/registry
    ports:
      - "5000:5000"


実行します
docker-compose -f docker-compose-registry.yml up -d

レジストリが用意できたら、CentOS7 +  Apache2.4 + PHP7.0 の環境のイメージを登録します。

別ディレクトリを作成して、イメージを作るためのファイルを用意します。
(別途用意ではなく、開発環境用に利用しているものを使いまわしてます)


FROM centos:7

RUN yum -y install httpd

RUN yum -y install epel-release

RUN rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

RUN yum -y install --enablerepo=remi,remi-php70 php php-mbstring php-pdo php-gd php-xml php-zip php-mcrypt php-mysql php-pgsql

RUN yum -y update

COPY ./myconf.conf /etc/httpd/conf.d/myconf.conf

CMD [ "/usr/sbin/httpd", "-D", "FOREGROUND" ]


<VirtualHost *:80>
DocumentRoot /var/www/html

<Directory "/var/www/html">
  Require all granted
  AllowOverride All
  AddDefaultCharset utf-8
</Directory>

</VirtualHost>


version: "3"
services:
  web:
    build: .
    ports:
      - "80:80"


イメージを作成します
docker-compose -f docker-compose-web.yml build



イメージの作成が完了したら、レジストリに登録します。

イメージの名前を変えないといけないようなので、変更して登録します。
(登録したことないから、ググってコピペ状態です。。^^;


docker tag image_web:latest localhost:5000/web/mycentos7:1

で名前を変更して


docker push localhost:5000/web/mycentos7:1

で push します。


登録できたので、これをもとにようやくKubernetes に進みたいと思います。

pod 作成のために、deployment のファイルを用意します。



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


では、pod を作成してみます。

kubectl apply -f centos7.yml

先程用意したファイルで作成


kubectl get pod

で pod を確認してみます。


NAME                         READY     STATUS    RESTARTS   AGE
mycentos7-6b9db6df94-xwt7q   1/1       Running   0          14s


できてるっぽいです。

Apache のテストページがみたいので、アクセスしてみたいと思います。


アクセスするには、サービスが必要みたいなので、用意します。


apiVersion: v1
kind: Service
metadata:
  name: mycentos7
  labels:
    app: mycentos7
spec:
  ports:
    - port: 80
  selector:
    app: mycentos7
  type: NodePort


サービスを作成します。

kubectl create -f centos7-service.yml


作成したサービスを確認してみます。


kubectl get svc


NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        19h
mycentos7    NodePort    10.109.140.222   <none>        80:30462/TCP   2m


できたみたいです。

では、ブラウザからアクセスしてみます。

作成したサービスのポート番号にアクセスします。

http://localhost:30462/



 表示できました。

なかなか大変だった。。


ひとまず、CentOS7 + Apache + PHP7.0 まできましたが、PHPが本当に動くのか部分は未確認なので、次回は PHP の動作確認から行いたいと思います。


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

0 件のコメント:

コメントを投稿