1. HOME
  2. ブログ
  3. BLOG
  4. apacheとphpの環境をkubernetesで構築する

BLOG

BLOG

apacheとphpの環境をkubernetesで構築する

Docker for Macでkubernetesを起動

dockerアプリからpreferencesを開き、kubernetesの「Enable Kubernetes」にチェックを入れて、kubernetesを有効にする。

kubectl config get-contexts

を実行して、CURRENTが”docker-for-desktop”になっていることを確認

仮に”docker-for-desktop”になっていない場合には、下記コマンドでCURRENTを変更

kubectl config use-context docker-for-desktop

下記コマンドにて起動しているMaster Nodeを確認

$ kubectl get nodes
NAME                 STATUS    ROLES     AGE       VERSION
docker-for-desktop   Ready     master    203d      v1.10.11

dockerを準備

ディレクトリ構成

workspace .
├── app
    ├── phpinfo.php
    └── index.php
└── docker
    ├── apache-php
    │   ├── vhost.conf
    │   └── Dockerfile
    └── templates
        └── main.yaml
phpinfo.php
<?php
  phpinfo();
?>
index.php
<?php
  echo "現在の時間は".date("Y/m/d H:i:s")."です。";
?>
vhost.conf
<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName localhost
    ServerAdmin root@example.com
    LogFormat "[%V] %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" custom
    ErrorLog /etc/httpd/logs/error_log
    CustomLog /etc/httpd/logs/access_log custom
    <Directory "/var/www/html">
        AllowOverride All
        Options Indexes FollowSymLinks SymLinksIfOwnerMatch
    </Directory>
</VirtualHost>
FROM php:7.2.6-apache

ADD vhost.conf /etc/apache2/sites-available/vhost.conf

下記コマンドでdocke imageを作成

$ docker build -t k8sdemo/php-apache:1.0.0 docker/apache-php

クラスタ上にコンテナを起動するためのyamlを準備

main.yaml
apiVersion: v1
kind: Service
metadata:
  name: ssdemo-service
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: ssdemo-apache-php
---
apiVersion: extensions/v1beta1
kind: Deployment # リソースの種類
metadata:
  name: ssdemo-deployment # Deploymentの名前
spec:
  replicas: 2 # 起動するpod数
  template:
    metadata:
      labels:
        app: ssdemo-apache-php # podの名前
    spec:
      containers:
      - name: ssdemo-apache-php # コンテナ名
        image: k8sdemo/php-apache:1.0.4 # コンテナイメージ
        imagePullPolicy: IfNotPresent # ローカルのdocker imageを使用
        ports:
        - containerPort: 80 # コンテナのポート
        volumeMounts:
        - mountPath: /var/www/html/
          name: demo-volume
      volumes:
      - name: demo-volume
        hostPath:
          # directory location on host
          path: /Users/ytada/Documents/k8sdemo/app
          # this field is optional
          type: Directory

各yamlをクラスタにデプロイ

下記コマンドよりクラスタにデプロイ

$ kubectl apply -f main.yaml

クラスタの状況を確認

$ kubectl get all

サービスを確認

http://localhost/
http://localhost/phpinfo.php
  • コメント ( 0 )

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

関連記事