2017-12-05 4 views
1

私はpublicフォルダのPHPアプリケーションを持っています。これには、PHPリクエストを静的ファイルとして扱うindex.phpが含まれています。kubernetesのnginxとphp-fpmコンテナの間でアプリケーションフォルダを正しく共有する方法はありますか?

私は、静的ファイルをnginxのコンテナ経由で直接提供したいと思います。動的リクエストを配信するためにのみphp-fpmを使用します。

どのように達成できますか?

  1. 同じアプリケーションフォルダを有する2つの別々の容器を作成する:第一は、PHP-FPMが配置される第二の静的及び委任動的リクエストを提供していnginxのであろう私は理解されるように、二つの方法があります。
  2. 2番目の解決方法はpersistentVolumeClaimですが、同期のために何らかの魔法も必要です(initContainers)。

ベストプラクティスは何ですか?

答えて

0

Nginx PodとPhp podの2つのポッドがあるとしましょう。 今これらのポッドに関連付ける必要があるのは2つあります。

  • 静的ファイル(パブリック・フォルダ)
  • 設定ファイル(nginx.conf)
私は設定ファイルの静的ファイルとConfigMapのための永続的なボリュームの主張を使用することを好むだろう

問題の解決策。

PHPのポッドはK8Sリソース

  • 展開

    (コンテナ)
  • サービス(内部を露出させる)の情報として
  • PersistentVolumeClaim(パブリックフォルダ用)
  • ConfigMap(環境変数、次がありますデータベースについて)

Nginxポッドには以下のk8sリソースがあります

  • 展開(コンテナ)
  • サービス(内部または外部に露出する)
  • ConfigMap(カスタマイズnginx.conf)

今展開Resoucesのような他のリソースとの関係を有することになります永続的なボリューム要求と設定マップなど

私はInitContainerによって理解しているように、Podが一貫したネットワーク名前空間を持ち、主要なファイルシステムを整理するのに役立ちますそれは、サービスアカウント、pvc、configmapなどの主要コンテナに必要なすべてのリソースを提供します。

たとえば、メインコンテナを再起動した場合、initコンテナはIPアドレスが変更されないことを確認します。ただし、ポッドをもう一度作成すると、initcontainerを再度作成してから、ポッドに新しいIPアドレスが作成されることを意味します。

関連する問題