2022年3月21日月曜日

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

Microk8sで同一ポッド内にMantis Bug TrackerとMariaDBを配置するには、以下の手順を実行します。Mantis Bug Trackerの構成フォルダとMariaDBのデータは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-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

・イメージ作成コマンド ※192.168.1.1の部分はMicrok8sのホストのIPに変更してください。
docker build . -t 192.168.1.1:32000/mantisbtmariadb:latest

・イメージのタグ付け
docker tag `docker images | grep '192.168.1.1:32000/mantisbtmariadb' | awk '{print $3}'` 192.168.1.1:32000/mantisbtmariadb:latest

・イメージをビルトインレジストリにプッシュ
docker push 192.168.1.1:32000/mantisbtmariadb:latest

・Microk8sのサーバ上で、イメージが登録されたことを確認するには以下のコマンドを実行します。
wget http://192.168.1.1:32000/v2/_catalog -O -

3. Mantis Bug Tracker構成格納/MariaDBデータ用ディレクトリを作成
以下のコマンドでMantis Bug Tracker構成格納/MariaDBデータ用ディレクトリを作成します。
sudo mkdir -p /var/mantisbt-conf

sudo mkdir -p /var/mariadb-data

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

※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:
          - `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-mariadb-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

※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

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

6. 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: localhost:32000/mantisbtmariadb:latest
        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

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

7. Mantis Bug TrackerとMariaDBのサービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > mantisbt-mariadb-service.yml
apiVersion: v1
kind: Service
metadata:
  name: mantisbt-mariadb-service
spec:
  selector:
    app: mantisbt-mariadb
  type: LoadBalancer
  externalIPs:
  - 192.168.1.1 # 外部からアクセスできるMicrok8sをインストールしたホストのIPを設定します。
  ports:
  - name: http
    protocol: TCP
    port: 8080
    targetPort: 80
  - name: db
    protocol: TCP
    port: 3306
    targetPort: 3306
EOF

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

8. ブラウザから以下のURLからmantisbtにアクセスします。
http://<Microk8sをインストールしたホストの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 件のコメント:

コメントを投稿