2022年3月3日木曜日

Minikubeで同一ポッド内にMantis Bug TrackerとMariaDBを配置する(local永続ボリューム使用)

Minikubeで同一ポッド内にMantis Bug TrackerとMariaDBを配置するには、以下の手順を実行します。Mantis Bug Trackerの構成フォルダとMariaDBのデータはlocal永続ボリュームに保存します。

○MantisBTの画面

実行手順

1. 以下のDockerfileを使用してイメージを作成します
# ホスト側で実行して、dockerの向き先をminikubeにします
eval $(minikube -p minikube docker-env)

cat << EOF > Dockerfile
FROM alpine:3.15
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php8-apache2 php8-mysqli php8-pdo php8-pdo_mysql 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

docker build -t mantisbtmariadb .

2. Mantis Bug Tracker構成格納/MariaDBデータ用ディレクトリを作成
以下のコマンドでMantis Bug Tracker構成格納/MariaDBデータ用ディレクトリを作成します。
minikube ssh

sudo mkdir -p /var/mantisbt-conf

sudo mkdir -p /var/mariadb-data

sudo chown 100:101 /var/mantisbt-conf

exit

3. 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:
          - minikube
EOF

kubectl apply -f ./local-mantisbt-pv.yml

※MariaDB用
cat << EOF > local-mariadb-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-mariadb-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/mariadb-data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - minikube
EOF

kubectl apply -f ./local-mariadb-pv.yml

4. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※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

kubectl apply -f ./local-mantisbt-pvc.yml

※MariaDB用
cat << EOF > local-mariadb-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-mariadb-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 5Gi
  volumeName: local-mariadb-pv
EOF

kubectl apply -f ./local-mariadb-pvc.yml

5. Mantis Bug TrackerとMariaDBのDeploymentの作成
以下のコマンドでMantis Bug TrackerとMariaDBを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > mantisbt-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mantisbt-mariadb-deployment
  labels:
    app: mantisbt-mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mantisbt-mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mantisbt-mariadb
    spec:
      containers:
      - name: mariadb
        image: mariadb:10.7-focal
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mantisbt
        - name: MYSQL_DATABASE
          value: mantisbt
        - name: MYSQL_USER
          value: mantisbt
        - name: MYSQL_PASSWORD
          value: mantisbt
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      - name: mantisbt
        image: mantisbtmariadb
        imagePullPolicy: Never # ローカルイメージを使用する
        ports:
        - containerPort: 80
        volumeMounts:
        - name: mantisbt-conf
          mountPath: /var/www/localhost/htdocs/config
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
      - name: mantisbt-conf
        persistentVolumeClaim:
          claimName: local-mantisbt-pvc
EOF

kubectl apply -f ./mantisbt-mariadb-deployment.yml

6. Mantis Bug TrackerとMariaDBのサービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > mantisbt-mariadb-service.yml
apiVersion: v1
kind: Service
metadata:
  name: mantisbt-mariadb-service
spec:
  selector:
    app: mantisbt-mariadb
  ports:
  - name: http
    protocol: TCP
    port: 8080
    targetPort: 80
  - name: db
    protocol: TCP
    port: 3306
    targetPort: 3306
EOF

kubectl apply -f ./mantisbt-mariadb-service.yml

7. Port-Fowardingで外部からアクセスできるようにする
kubectl port-forward --address 0.0.0.0 service/mantisbt-mariadb-service 8080:8080 3306:3306

ブラウザから以下のURLからmantisbtにアクセスします。
http://<MinikubeをインストールしたホストのIP>:8080/
Installer Optionsで以下の項目を入力する
Type of Database: MySQL Improved
Hostname (for Database Server): 127.0.0.1
Username (for Database): mantisbt
Password (for Database): mantisbt
Database name (for Database): mantisbt

0 件のコメント:

コメントを投稿