minikubeでflexisipを運用(Flexisip + Flexisip Account Manager)
Flexisip は、RTP 用に広範なポート範囲を確保する必要があるため、コンテナのネットワークモードをホスト(host
)に設定する必要があります。しかし、Minikube はデフォルトで Kubernetes をコンテナ内で実行するため、このホストネットワークモードが利用できません。そのため、Flexisip に必要なポートを確保するには、Minikube をコンテナベースではなく、直接ホスト上または仮想マシン(VM)上で実行する必要があります。
–driver=noneで運用する場合、ホストマシンに必要な追加パッケージが幾つかあります(以下参照)。
ルートユーザで起動
$ sudo su
# minikube --driver=none --container-runtime=containerd
用意したマニフェストと設定ファイル
$ tree -a
.
├── apache ### Flexisipファイルサーバ用Pod
│ ├── apache_deployment.yaml
│ ├── apache_pv-pvc.yaml
│ ├── apache_service.yaml
│ └── httpd.conf
├── cert-manager ### Ingress-Nginxを利用したTLS認証Pod
│ ├── certificate.yaml
│ ├── cluster-issuer.yaml
│ └── ingress.yaml
├── cni-plugins.tgz ### CNI追加パッケージ
├── deploy.yaml ### Ingress-Nginxの公式マニフェスト
├── flexisip ### Flexisip用Pod
│ ├── flexisip.conf
│ ├── flexisip_deployment.yaml
│ └── flexisip_pv-pvc.yaml
├── flexisip.tar ### Flexisipカスタムビルドイメージ
├── mariadb ### MariaDBデータベースPod
│ ├── mariadb_deployment.yaml
│ ├── mariadb_pv-pvc.yaml
│ └── mariadb_service.yaml
├── nginx ### Flexisip Account Manager用ウェブサーバ用Pod
│ ├── default.conf
│ ├── nginx_deployment.yaml
│ └── nginx_service.yaml
├── php-fpm ### Flexisip Account Manager PHP-FPM Pod
│ ├── create-configmap-secret.sh
│ ├── .env
│ ├── flexisip-http-file-transfer-server.conf
│ ├── lime-server.conf
│ ├── php-fpm_deployment.yaml
│ ├── php-fpm_pv-pvc.yaml
│ └── php-fpm_service.yaml
├── php-fpm.tar ### Flexisip Account Manager PHP-FPM カスタムビルドイメージ
├── phpmyadmin ### PhpMyAdmin Pod
│ ├── phpmyadmin_deployment.yaml
│ ├── phpmyadmin_pv-pvc.yaml
│ └── phpmyadmin_service.yaml
└── redis ### Redis Pod
├── redis_deployment.yaml
├── redis_pv-pvc.yaml
└── redis_service.yaml
上記yamlファイルを作成するまでが慣れないと大変ですが、作成できたらこれらyamlファイルを $ kubectl apply -f ***.yaml
コマンドで読み込むだけで、システムが安定稼働します。
# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
cert-manager cert-manager-544f4cd4f9-ppdb5 1/1 Running 2 (6h59m ago) 19h
cert-manager cert-manager-cainjector-5674ff7897-6xxsd 1/1 Running 4 (6h34m ago) 19h
cert-manager cert-manager-webhook-8fbb858cb-92qqj 1/1 Running 2 (6h59m ago) 19h
default apache-deployment-6c97c7f99-bkjvq 1/1 Running 1 (6h59m ago) 16h
default flexisip-7784d9d9d8-gkdv7 1/1 Running 2 (6h34m ago) 14h
default mariadb-deployment-67d8c8485-x48vt 1/1 Running 1 (6h59m ago) 16h
default nginx-deployment-74664cff65-mlv7p 1/1 Running 0 6h29m
default php-fpm-68d859cf74-g99jr 1/1 Running 1 (6h59m ago) 15h
default phpmyadmin-8978775b9-2dnzl 1/1 Running 1 (6h59m ago) 16h
default redis-58d6bd9ccb-fxgtr 1/1 Running 1 (6h59m ago) 16h
ingress-nginx ingress-nginx-controller-557f88b9b9-xxc68 1/1 Running 0 102s
kube-system coredns-674b8bbfcf-7x7l4 1/1 Running 2 (6h59m ago) 24h
kube-system coredns-674b8bbfcf-89vxh 1/1 Running 2 (6h59m ago) 24h
kube-system etcd-hp-elitedesk 1/1 Running 2 (6h59m ago) 24h
kube-system kube-apiserver-hp-elitedesk 1/1 Running 2 (6h59m ago) 24h
kube-system kube-controller-manager-hp-elitedesk 1/1 Running 2 (6h59m ago) 24h
kube-system kube-proxy-lkvdl 1/1 Running 2 (6h59m ago) 24h
kube-system kube-scheduler-hp-elitedesk 1/1 Running 2 (6h59m ago) 24h
kube-system storage-provisioner 1/1 Running 4 (6h34m ago) 24h
Minikubeは本番環境移行前の試験用途として使用しており、次の段階では本番に近い環境として、各ノードを物理・仮想ホスト上に分散配置し、VM上でkubeadmを用いてクラスターを構成・運用します。