Microk8sで同一ポッド内にMantis Bug TrackerとPostgreSQLを配置するには、以下の手順を実行します。Mantis Bug Trackerの構成フォルダとPostgreSQLのデータはlocal永続ボリュームに保存します。
〇MantisBTの画面
デフォルトユーザ/パスワードはadministrator/rootです。
実行手順
1. ビルトインレジストリの有効化(※既に実施している場合はスキップしてください)
Microk8sがインストールされているホスト上で以下のコマンドを実行します。
microk8s enable registry:size=50Gi
※registryプラグインが有効化してあるか不明な場合はmicrok8s statusコマンドを実行します。
Dockerがインストールしてあるリモートマシン上で以下のコマンドを実行します。192.168.1.1の部分は、Microk8sのホストのIPに変更してください。
cat << EOF | sudo tee /etc/docker/daemon.json
{
"insecure-registries" : ["192.168.1.1:32000"]
}
EOF
sudo systemctl restart docker
2. 以下のDockerfileを使用してイメージを作成します
cat << EOF > Dockerfile
FROM alpine:3.15
WORKDIR /
RUN apk update \
&& apk add --no-cache apache2 php8-apache2 php8-pgsql php8-pdo php8-pdo_pgsql php8-intl php8-mbstring php8-session php8-curl php8-json php8-xml php8-zip php8-tokenizer php8-ctype php8-gd php8-xmlwriter php8-xmlreader php8-dom php8-zlib php8-iconv php8-simplexml php8-fileinfo openssl openrc unzip \
&& rm -rf /var/cache/apk/* \
&& wget https://sourceforge.net/projects/mantisbt/files/mantis-stable/2.25.2/mantisbt-2.25.2.tar.gz \
&& tar xvfz mantisbt-2.25.2.tar.gz \
&& rm -f mantisbt-2.25.2.tar.gz \
&& mv /var/www/localhost/htdocs /var/www/localhost/htdocs.bak \
&& mv mantisbt-2.25.2 /var/www/localhost/htdocs \
&& chown -R apache:apache /var/www/localhost/htdocs \
&& mkdir -p /run/apache2
EXPOSE 80
VOLUME ["/var/www/localhost/htdocs/config"]
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
EOF
・イメージ作成コマンド ※192.168.1.1の部分はMicrok8sのホストのIPに変更してください。
docker build . -t 192.168.1.1:32000/mantisbtpg:latest
・イメージのタグ付け
docker tag `docker images | grep '192.168.1.1:32000/mantisbtpg' | awk '{print $3}'` 192.168.1.1:32000/mantisbtpg:latest
・イメージをビルトインレジストリにプッシュ
docker push 192.168.1.1:32000/mantisbtpg:latest
・Microk8sのサーバ上で、イメージが登録されたことを確認するには以下のコマンドを実行します。
wget http://192.168.1.1:32000/v2/_catalog -O -
3. Mantis Bug Tracker構成格納/PostgreSQLデータ用ディレクトリを作成
以下のコマンドでMantis Bug Tracker構成格納/PostgreSQLデータ用ディレクトリを作成します。
sudo mkdir -p /var/mantisbt-conf
sudo mkdir -p /var/pgdata
sudo chown 100:101 /var/mantisbt-conf/
4. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※Mantis Bug Tracker用
cat << EOF > local-mantisbt-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-mantisbt-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/mantisbt-conf
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-mantisbt-pv.yml
※PostgreSQL用
cat << EOF > local-pg-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pg-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/pgdata
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-pg-pv.yml
5. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※Mantis Bug Tracker用
cat << EOF > local-mantisbt-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-mantisbt-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-mantisbt-pv
EOF
microk8s kubectl apply -f ./local-mantisbt-pvc.yml
※PostgreSQL用
cat << EOF > local-pg-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-pg-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-pg-pv
EOF
microk8s kubectl apply -f ./local-pg-pvc.yml
6. Mantis Bug TrackerとPostgreSQLのDeploymentの作成
以下のコマンドでMantis Bug TrackerとPostgreSQLを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > mantisbt-pg-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mantisbt-pg-deployment
labels:
app: mantisbt-pg
spec:
replicas: 1
selector:
matchLabels:
app: mantisbt-pg
strategy:
type: Recreate
template:
metadata:
labels:
app: mantisbt-pg
spec:
containers:
- name: mypg
image: postgres:14-alpine
env:
- name: POSTGRES_DB
value: mantisbt
- name: POSTGRES_USER
value: mantisbt
- name: POSTGRES_PASSWORD
value: mantisbt
ports:
- containerPort: 5432
volumeMounts:
- name: pgdata
mountPath: /var/lib/postgresql/data
- name: mantisbt
image: localhost:32000/mantisbtpg:latest
ports:
- containerPort: 80
volumeMounts:
- name: mantisbt-conf
mountPath: /var/www/localhost/htdocs/config
volumes:
- name: pgdata
persistentVolumeClaim:
claimName: local-pg-pvc
- name: mantisbt-conf
persistentVolumeClaim:
claimName: local-mantisbt-pvc
EOF
microk8s kubectl apply -f ./mantisbt-pg-deployment.yml
7. Mantis Bug TrackerとPostgreSQLのサービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > mantisbt-pg-service.yml
apiVersion: v1
kind: Service
metadata:
name: mantisbt-pg-service
spec:
selector:
app: mantisbt-pg
type: LoadBalancer
externalIPs:
- 192.168.1.1 # 外部からアクセスできるMicrok8sをインストールしたホストのIPを設定します。
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 80
- name: db
protocol: TCP
port: 5432
targetPort: 5432
EOF
microk8s kubectl apply -f ./mantisbt-pg-service.yml
8. ブラウザから以下のURLからmantisbtにアクセスします。
http://<Microk8sをインストールしたホストのIP>:8080/
Installer Optionsで以下の項目を入力する
Type of Database: PostgreSQL
Hostname (for Database Server): 127.0.0.1
Username (for Database): mantisbt
Password (for Database): mantisbt
Database name (for Database): mantisbt