PHP デプロイのテスト
前提条件
- PHP アプリケーションのコンテナー化 から始まる、ここまでのガイドすべてを終えていること。
- Docker Desktop において Kubernetes を有効 にしていること。
概要
本節では Docker Desktop を使って、開発マシン上に実現されている Kubernetes のフル機能環境に向けたアプリケーションのデプロイ方法について学びます。 これによってデプロイ前に Kubernetes 上のワークロードをローカルにおいてテスト、デバッグすることができます。
Kubernetes YAML ファイルの生成
docker-php-sample ディレクトリ内に docker-php-kubernetes.yaml という名のファイルを生成します。
このファイルを IDE またはテキストエディターで開きます。
そして以下に示す内容を記述します。
DOCKER_USERNAME/REPO_NAME の部分は、自分の Docker ユーザー名、および PHP アプリケーション向け CI/CD の設定 において生成したリポジトリ名に置き換えてください。
apiVersion: apps/v1
kind: Deployment
metadata:
name: docker-php-demo
namespace: default
spec:
replicas: 1
selector:
matchLabels:
hello-php: web
template:
metadata:
labels:
hello-php: web
spec:
containers:
- name: hello-site
image: DOCKER_USERNAME/REPO_NAME
imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: php-entrypoint
namespace: default
spec:
type: NodePort
selector:
hello-php: web
ports:
- port: 80
targetPort: 80
nodePort: 30001この Kubernetes YAML ファイルには --- によって区切られた 2 つのオブジェクトがあります。
- デプロイメント。
スケール可能なポッドグループを記述します。
ここではレプリカを 1 とします。
つまりポッドを 1 つコピーします。
そのポッドは以下において
templateと記述されるものであり、その中にただ 1 つのコンテナーを持ちます。 このコンテナーは PHP アプリケーション向け CI/CD の設定 において GitHub アクションによってビルドしたイメージから生成されるものです。 - NodePort サービス。 これはホスト上のポート 30001 をポッド内のポート 80 にトラフィックをルーティングします。 これによってネットワークからアプリにアクセスできるようになります。
Kubernetes オブジェクトについての詳細は Kubernetes ドキュメント を参照してください。
アプリケーションのデプロイとチェック
端末において
docker-php-sampleに移動し、アプリケーションを Kubernetes にデプロイします。$ kubectl apply -f docker-php-kubernetes.yaml実行結果は以下のようになるはずです。 つまり Kubernetes オブジェクトは正常に生成されたはずです。
deployment.apps/docker-php-demo created service/php-entrypoint createdデプロイの一覧を表示して、すべてがうまく動作していることを確認します。
$ kubectl get deploymentsデプロイ結果は以下のように一覧表示されるはずです。
NAME READY UP-TO-DATE AVAILABLE AGE docker-php-demo 1/1 1 1 6sこの出力結果から、ポッドがすべて実行していることが分かります。 今回のサービスに関しても同じく確認します。
$ kubectl get services以下のような出力結果が得られるはずです。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d22h php-entrypoint NodePort 10.111.101.229 <none> 80:30001/TCP 33sデフォルトの
kubernetesサービスに加えてphp-entrypointいうサービスが表示されます。php-entrypointサービスはポート 30001/TCP のトラフィックを受けつけます。ブラウザーを開いて http://localhost:30001/hello.php にアクセスします。 アプリケーションを確認することができます。
以下のコマンドを実行してアプリケーションを終了します。
$ kubectl delete -f docker-php-kubernetes.yaml
まとめ
本節では Docker Desktop を使って、開発マシン上に実現されている Kubernetes のフル機能環境に向けたアプリケーションのデプロイ方法について学びました。
関連情報