Flexisip 2.4.1, Flexisip Account Manager on Podman (minikube, kubernetes)

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を用いてクラスターを構成・運用します。