ラベル MariaDB の投稿を表示しています。 すべての投稿を表示
ラベル MariaDB の投稿を表示しています。 すべての投稿を表示

2022年11月5日土曜日

Ubuntu 22.04にDrupal9.4.8とMariaDBをインストールする

DrupalはPHP製のCMSです。

〇Drupalの画面

構築方法

1. 以下のコマンドを実行してMariaDBをインストールします
※パスワードは適宜変更してください
sudo apt-get update

sudo apt-get -y install mariadb-server

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"

mysql -uroot -proot -e "CREATE DATABASE drupal DEFAULT CHARACTER SET utf8;"

mysql -uroot -proot -e "CREATE USER drupal@localhost IDENTIFIED BY 'drupal';"

mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON drupal.* TO 'drupal'@'localhost';"

mysql -uroot -proot -e "FLUSH PRIVILEGES;"

2. Drupalをインストールします
sudo apt-get -y install apache2 \
  php8.1 \
  libapache2-mod-php8.1 \
  apache2 \
  php8.1-mbstring \
  php8.1-mysql \
  php8.1-gd \
  php8.1-curl \
  php8.1-dom

wget https://ftp.drupal.org/files/projects/drupal-9.4.8.tar.gz

tar xvfz drupal-9.4.8.tar.gz

sudo mv drupal-9.4.8 /opt/drupal

sudo chown -R www-data:www-data /opt/drupal

sudo ln -s /opt/drupal/ /var/www/html/

cat << EOF | sudo tee -a /etc/apache2/apache2.conf
<Directory /var/www/html>
  AllowOverride All
  RewriteEngine on
</Directory>
EOF

sudo a2enmod rewrite

sudo systemctl restart apache2

3.ブラウザからhttp://<ホスト名またはアドレス>/drupal/にアクセスします。「Save and continue」ボタンをクリックします。

4.「標準」を選択して「保存して次へ」をクリックします

5.データベース名・ユーザー名・パスワードに「drupal」を入力して「保存して次へ」ボタンをクリックします

6.サイト名・管理者の情報を入力します

7.インストール完了画面

2022年10月31日月曜日

Debian 11(Bullseye)にinnotopとMariaDBをインストールする

innotopでMySQLの各種情報を表示することが出来ます。

インストール手順

以下のコマンドを実行します。
1. MariaDBのインストールとテスト用DBとユーザの作成
echo "mariadb-server-10.5 mysql-server/root_password password root" | sudo debconf-set-selections

echo "mariadb-server-10.5 mysql-server/root_password_again password root" | sudo debconf-set-selections
# パスワードは適宜変更してください
sudo apt-get -y install mariadb-server

sudo mysql -uroot -proot -e "CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;"

sudo mysql -uroot -proot -e "CREATE USER test@localhost IDENTIFIED BY 'test';"

sudo mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost';"

sudo mysql -uroot -proot -e "GRANT SUPER ON *.* TO test@'localhost' IDENTIFIED BY 'test';"

sudo mysql -uroot -proot -e "FLUSH PRIVILEGES;"

2. innotopのインストール
sudo apt-get -y install git make libdbi-perl libterm-readkey-perl libdbd-mysql-perl

git clone https://github.com/innotop/innotop.git

cd innotop/

perl Makefile.PL

sudo make install

innotop -utest -ptest

2022年9月20日火曜日

AlmaLinux 9/Rocky Linux 9にDBeaverとMariaDBをインストールする

DBeaverは様々なデータベースに対応したデータベースクライアントです。

〇DBeaverの画面(AlmaLinux 9)

〇DBeaverの画面(Rocky Linux 9)

インストール方法

以下のコマンドを実行します。
1. MariaDBのインストール
sudo dnf -y install mariadb mariadb-server

sudo systemctl enable mariadb.service

sudo systemctl start mariadb.service

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"
※パスワードは適宜変更してください。

2. DBeaverのインストール
wget https://github.com/dbeaver/dbeaver/releases/download/22.2.0/dbeaver-ce-22.2.0-stable.x86_64.rpm

sudo dnf -y install ./dbeaver-ce-22.2.0-stable.x86_64.rpm

関連情報

・DBeaverに関する他の記事はこちらを参照してください。

・DBeaverのウェブサイト
https://dbeaver.io/

2022年9月16日金曜日

Ubuntu 22.04にphpMyAdminとMariaDBをインストールする

phpMyAdminでwebインターフェイスからMariaDBを操作できます。

〇phpMyAdminの画面

インストール方法

1. 以下のコマンドを実行してMariaDBをインストールします。
sudo apt-get update

sudo apt-get -y install mariadb-server

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"
※パスワードは適宜変更してください。

2.phpMyAdminをインストールします。
sudo apt-get -y install apache2 \
  php8.1 \
  libapache2-mod-php8.1 \
  php8.1-mysql \
  php8.1-common \
  php8.1-xml \
  php8.1-zip \
  php8.1-mbstring \
  php8.1-curl \
  unzip

wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.gz

tar xvfz phpMyAdmin-5.2.0-all-languages.tar.gz

sudo mv phpMyAdmin*-languages /opt/phpmyadmin

sudo chown -R www-data:www-data /opt/phpmyadmin

sudo ln -s  /opt/phpmyadmin /var/www/html

cat << EOF | sudo tee -a /etc/apache2/apache2.conf
<Directory /var/www/html>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
EOF

sudo systemctl reload apache2.service

3. ブラウザからhttp://<ホスト名またはIPアドレス>/phpmyadmin/ にアクセスします。
ユーザ名にroot、MariaDBインストール時に設定したパスワードを指定します。

関連情報

・phpMyAdminのウェブサイト
https://www.phpmyadmin.net/

2022年7月24日日曜日

AlmaLinux 9/Rocky Linux 9にスタンドアローン版のOmniDBとMariaDBをインストールする

OmniDBはオープンソースのデータベース管理ツールです。

〇スタンドアローン版OmniDBの画面(ALmaLinux9)

〇スタンドアローン版OmniDBの画面(Rocky Linux9)

インストール方法

以下のコマンドを実行します。
1. (任意)MariaDBをインストール
※ローカルでMariaDBを試したい場合は、以下のコマンドを実行します。
sudo dnf -y install mariadb mariadb-server

sudo systemctl enable mariadb.service

sudo systemctl start mariadb.service

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"
※パスワードは適宜変更してください

2. OmniDBのインストール
sudo dnf -y install libXScrnSaver

wget https://github.com/OmniDB/OmniDB/releases/download/3.0.3b/omnidb-app-3.0.3b_linux_x86_64.rpm

sudo dnf -y install omnidb-app-3.0.3b_linux_x86_64.rpm

関連情報

・OmniDBのwebサイト
https://omnidb.org/en/

2022年6月29日水曜日

AlmaLinux 9にphpMyAdminとMariaDBをインストールする

phpMyAdminでwebインターフェイスからMariaDBを操作できます。

〇phpMyAdminの画面
http://<ホスト名またはIPアドレス/phpmyadmin/にアクセスします。

インストール方法

以下の手順を実行します。
1. firewallでhttpの80番ポートを開けます
sudo firewall-cmd --add-service=http --permanent

sudo firewall-cmd --reload

2. MariaDBをインストール
sudo dnf -y install mariadb mariadb-server

sudo systemctl enable mariadb.service

sudo systemctl start mariadb.service

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"
※パスワードは適宜変更してください。

3. ApacheとPHPのインストール
sudo dnf install -y httpd \
  php \
  php-mysqlnd \
  php-json \
  php-opcache \
  php-xml \
  php-dom \
  php-mbstring \
  php-gd \
  php-curl

sudo systemctl enable php-fpm

sudo systemctl enable httpd

4. SELinuxの無効化
sudo setenforce 0

sudo getenforce

sudo sed -i -e 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

5. phpMyAdminのインストール
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.gz

tar xvfz phpMyAdmin-5.2.0-all-languages.tar.gz

sudo mv phpMyAdmin*-all-languages /opt/phpmyadmin

sudo chown -R apache:apache /opt/phpmyadmin

sudo ln -s  /opt/phpmyadmin /var/www/html

cat << EOF | sudo tee /etc/httpd/conf.d/phpmyadmin.conf
<Directory /var/www/html/phpmyadmin/data>
        AllowOverride None
        Require all denied
</Directory>
EOF

sudo service httpd restart

関連情報

・phpMyAdminに関する他の記事は、こちらを参照してください。

2022年6月21日火曜日

Ubuntu Desktop 22.04にDBeaverとMariaDBをインストールする

DBeaverは様々なデータベースに対応したデータベースクライアントです。

〇DBeaverの画面

インストール方法

以下のコマンドを実行します。
1. MariaDBのインストール
sudo apt-get update

sudo apt-get -y install mariadb-server

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"

mysql -uroot -proot -e "CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;"

mysql -uroot -proot -e "CREATE USER test@localhost IDENTIFIED BY 'test';"

mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost';"

mysql -uroot -proot -e "FLUSH PRIVILEGES;"

2. JDKのインストール
sudo apt-get -y install openjdk-11-jdk

3. DBeaverのインストール
cd /opt

sudo wget https://dbeaver.io/files/dbeaver-ce-latest-linux.gtk.x86_64.tar.gz

sudo tar xvfz dbeaver-ce-latest-linux.gtk.x86_64.tar.gz

cat << EOF | sudo tee /usr/share/applications/dbeaver.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/dbeaver/dbeaver
Icon=/opt/dbeaver/dbeaver.png
Name=DBeaver
Categories=Development;
EOF

関連情報

・DBeaverに関する他の記事はこちらを参照してください。

2022年4月13日水曜日

k3sで同一ポッド内にMariaDBとMetabaseを配置する

Metabaseはオープンソースのデータ解析・可視化ツールです。k3sで同一ポッド内にMariaDBとMetabaseを配置するには、以下の手順を実行します(metabase公式のイメージはamd64のみです)。

〇Metabaseの画面

実行手順

1. local永続ボリュームで使用するディレクトリの作成
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
sudo mkdir -p /var/mymariadb

sudo mkdir -p /var/metabase

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※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/mymariadb
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。
sudo k3s kubectl apply -f ./local-mariadb-pv.yml

※Metabase用
cat << EOF > local-metabase-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-metabase-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/metabase
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。
sudo k3s kubectl apply -f ./local-metabase-pv.yml

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

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

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

sudo k3s kubectl apply -f ./local-metabase-pvc.yml

4. MetabaseとMariaDBのDeploymentの作成
以下のコマンドでMetabaseとMariaDBを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > metabase-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: metabase-mariadb-deployment
  labels:
    app: metabase-mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: metabase-mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: metabase-mariadb
    spec:
      containers:
      - name: mymariadb
        image: mariadb:10.7-focal
        args: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mymariadb
        - name: MYSQL_DATABASE
          value: metabase
        - name: MYSQL_USER
          value: metabase
        - name: MYSQL_PASSWORD
          value: metabase
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      - name: metabase
        image: metabase/metabase
        env:
        - name: MB_DB_FILE
          value: /metabase-data/metabase.db
        - name: MB_DB_TYPE
          value: mysql
        - name: MB_DB_DBNAME
          value: metabase
        - name: MB_DB_PORT
          value: "3306"
        - name: MB_DB_USER
          value: metabase
        - name: MB_DB_PASS
          value: metabase
        - name: MB_DB_HOST
          value: 127.0.0.1
        ports:
        - containerPort: 3000
        volumeMounts:
        - name: metabase-data
          mountPath: /metabase-data
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
      - name: metabase-data
        persistentVolumeClaim:
          claimName: local-metabase-pvc
EOF

sudo k3s kubectl apply -f ./metabase-mariadb-deployment.yml

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

sudo k3s kubectl apply -f ./metabase-service.yml

ブラウザからhttp://<ホスト名:8080 にアクセスします。

言語、ユーザアカウント情報を入力して、「3.データを追加する」で以下の様に入力します。
データベースのタイプ: MySQL
名前: mariadb
ホスト: 127.0.0.1
ポート: 3306
データベース名: metabase
ユーザ: metabase
パスワード: metabase

2022年4月6日水曜日

k3sで同一ポッド内にphpBBとMariaDBを配置する

phpBBは掲示板アプリケーションです。k3sで同一ポッド内にphpBBとMariaDBを配置するには、以下の手順を実行します(注:MariaDBのarmのofficial32ビットイメージは無いようです)。データはlocal永続ボリュームに保存します。

実行手順

1. local永続ボリュームで使用するディレクトリの作成
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
sudo mkdir -p /var/mariadb-data

sudo mkdir -p /var/phpbb-data

sudo chown 1001:1001 /var/phpbb-data

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※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`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。
sudo k3s kubectl apply -f ./local-mariadb-pv.yml

※phpBB用
cat << EOF > local-phpbb-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-phpbb-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/phpbb-data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。
sudo k3s kubectl apply -f ./local-phpbb-pv.yml

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

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

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

sudo k3s kubectl apply -f ./local-phpbb-pvc.yml

4. phpBBとMariaDBのDeploymentの作成
以下のコマンドでphpBBとMariadbを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > phpbb-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: phpbb-mariadb-deployment
  labels:
    app: phpbb-mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: phpbb-mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: phpbb-mariadb
    spec:
      containers:
      - name: mariadb
        image: mariadb:10.7-focal
        env:
        - name: MARIADB_ROOT_PASSWORD
          value: phpbb
        - name: MARIADB_DATABASE
          value: phpbb
        - name: MARIADB_USER
          value: phpbb
        - name: MARIADB_PASSWORD
          value: phpbb
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      - name: pnpbb
        image: bitnami/phpbb:latest
        env:
        - name: PHPBB_DATABASE_USER
          value: phpbb
        - name: PHPBB_DATABASE_PASSWORD
          value: phpbb
        - name: PHPBB_DATABASE_NAME
          value: phpbb
        - name: PHPBB_DATABASE_HOST
          value: 127.0.0.1
        - name: PHPBB_FORUM_NAME
          value: サンプルフォーラム
        - name: PHPBB_FORUM_DESCRIPTION
          value: サンプルのフォーラムです
        - name: PHPBB_USERNAME
          value: admin
        - name: PHPBB_PASSWORD
          value: admin
        - name: PHPBB_EMAIL
          value: admin@localhost.localdomain
        ports:
        - containerPort: 8080
        volumeMounts:
        - name: phpbb-data
          mountPath: /bitnami
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
      - name: phpbb-data
        persistentVolumeClaim:
          claimName: local-phpbb-pvc
EOF

sudo k3s kubectl apply -f ./phpbb-mariadb-deployment.yml

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

sudo k3s kubectl apply -f ./phpbb-mariadb-service.yml

ブラウザからhttp://<ホスト名またはIP>:8080/ にアクセスします。
ユーザ名admin、パスワードadminでログインします。

2022年3月29日火曜日

k3sでlocal永続ボリュームを使用するMariaDBをデプロイする

k3sでlocal永続ボリュームを使用するMariaDBをデプロイするには、以下の手順を実行します(※officialでarmの32ビットイメージは無いようです)。

実行手順

1. MariaDBデータ格納用ディレクトリを作成
以下のコマンドでMariaDBデータ格納用ディレクトリを作成します。
sudo mkdir -p /var/lib/mymariadb

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
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/lib/mymariadb
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。
sudo k3s kubectl apply -f ./local-mariadb-pv.yml

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

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

4. Deploymentの作成
以下のコマンドでmariadbのイメージと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mariadb-deployment
  labels:
    app: mymariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mymariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mymariadb
    spec:
      containers:
      - name: mymariadb
        image: mariadb:10.7-focal
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mymariadb
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
EOF

sudo k3s kubectl apply -f ./mariadb-deployment.yml

5. サービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > mariadb-service.yml
apiVersion: v1
kind: Service
metadata:
  name: mariadb-service
spec:
  selector:
    app: mymariadb
  type: LoadBalancer
  externalIPs:
  - xxx.xxx.xxx.xxx  # 外部からアクセスできるk3sをインストールしたホストのIPを設定します。
  ports:
  - protocol: TCP
    port: 3306
    targetPort: 3306
EOF

sudo k3s kubectl apply -f ./mariadb-service.yml

※接続確認
mariadb -h ※k3sをインストールしたホストのIP -uroot -pmymariadb mysql

※MariaDBのクライアントは以下のコマンドでインストールできます。
sudo apt-get -y install mariadb-client

2022年3月26日土曜日

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

Microk8sで同一ポッド内にMariaDBとnocodbを配置するには、以下の手順を実行します。MariaDBのデータはlocal永続ボリュームに保存します。

〇nocodbの画面

実行手順

1. MariaDBデータ格納用ディレクトリを作成
以下のコマンドでMariaDBデータ格納用ディレクトリを作成します。
sudo mkdir -p /var/lib/mymariadb

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
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/lib/mymariadb
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-mariadb-pv.yml

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

4. nocodbとMariaDBのDeploymentの作成
以下のコマンドでnocodbとmariadbを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > nocodb-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nocodb-mariadb-deployment
  labels:
    app: nocodb-mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nocodb-mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nocodb-mariadb
    spec:
      containers:
      - name: mymariadb
        image: mariadb:10.7-focal
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mymariadb
        - name: MYSQL_DATABASE
          value: nocodb
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      - name: nocodb
        image: nocodb/nocodb:latest
        env:
        - name: NC_DB
          value: mysql2://127.0.0.1:3306?u=root&p=mymariadb&d=nocodb
        - name: NC_AUTH_JWT_SECRET
          value: 569a1821-0a93-45e8-87ab-eb857f20a010
        ports:
        - containerPort: 8080
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
EOF

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

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

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

ブラウザから以下のURLからnocodbにアクセスします。
http://<Microk8sをインストールしたホストのIP>:8080/
最初にSuper adminとなるユーザの情報を入力します。

2022年3月24日木曜日

Microk8sで同一ポッド内にMariaDBとMetabaseを配置する

Metabaseはオープンソースのデータ解析・可視化ツールです。Microk8sで同一ポッド内にMariaDBとMetabaseを配置するには、以下の手順を実行します。

〇Metabaseの画面

実行手順

1. local永続ボリュームで使用するディレクトリの作成
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
sudo mkdir -p /var/mymariadb

sudo mkdir -p /var/metabase

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※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/mymariadb
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-mariadb-pv.yml

※Metabase用
cat << EOF > local-metabase-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-metabase-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/metabase
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-metabase-pv.yml

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

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

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

4. MetabaseとMariaDBのDeploymentの作成
以下のコマンドでMetabaseとMariaDBを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > metabase-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: metabase-mariadb-deployment
  labels:
    app: metabase-mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: metabase-mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: metabase-mariadb
    spec:
      containers:
      - name: mymariadb
        image: mariadb:10.7-focal
        args: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mymariadb
        - name: MYSQL_DATABASE
          value: metabase
        - name: MYSQL_USER
          value: metabase
        - name: MYSQL_PASSWORD
          value: metabase
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      - name: metabase
        image: metabase/metabase
        env:
        - name: MB_DB_FILE
          value: /metabase-data/metabase.db
        - name: MB_DB_TYPE
          value: mysql
        - name: MB_DB_DBNAME
          value: metabase
        - name: MB_DB_PORT
          value: "3306"
        - name: MB_DB_USER
          value: metabase
        - name: MB_DB_PASS
          value: metabase
        - name: MB_DB_HOST
          value: 127.0.0.1
        ports:
        - containerPort: 3000
        volumeMounts:
        - name: metabase-data
          mountPath: /metabase-data
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
      - name: metabase-data
        persistentVolumeClaim:
          claimName: local-metabase-pvc
EOF

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

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

microk8s kubectl apply -f ./metabase-service.yml
ブラウザからhttp://<ホスト名:8080 にアクセスします。

言語、ユーザアカウント情報を入力して、「3.データを追加する」で以下の様に入力します。
データベースのタイプ: MySQL
名前: mariadb
ホスト: 127.0.0.1
ポート: 3306
データベース名: metabase
ユーザ: metabase
パスワード: metabase

2022年3月23日水曜日

Microk8sでlocal永続ボリュームを使用するMariaDBをデプロイする

Microk8sでlocal永続ボリュームを使用するMariaDBをデプロイするには、以下の手順を実行します。

実行手順

1. MariaDBデータ格納用ディレクトリを作成
以下のコマンドでMariaDBデータ格納用ディレクトリを作成します。
sudo mkdir -p /var/lib/mymariadb

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
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/lib/mymariadb
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-mariadb-pv.yml

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

4. Deploymentの作成
以下のコマンドでmariadbのイメージと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mariadb-deployment
  labels:
    app: mymariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mymariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mymariadb
    spec:
      containers:
      - name: mymariadb
        image: mariadb:10.7-focal
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mymariadb
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
EOF

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

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

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

※接続確認
mariadb -h ※Microk8sをインストールしたホストのIP -uroot -pmymariadb mysql

※MariaDBのクライアントは以下のコマンドでインストールできます。
sudo apt-get -y install mariadb-client

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

2022年3月20日日曜日

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

Kanboardはタスク管理をおこなうPHP製のソフトウェアです。Microk8sで同一ポッド内にMariaDBとKanboardを配置するには、以下の手順を実行します。MariaDBとKanboardのデータはlocal永続ボリュームに保存します。

実行手順

1. MariaDBデータ格納用ディレクトリを作成
以下のコマンドでMariaDBデータ格納用ディレクトリを作成します。
sudo mkdir -p /var/lib/mymariadb

sudo mkdir -p /var/kanboard_data

sudo mkdir -p /var/kanboard_plugins

sudo mkdir -p /var/kanboard_ssl

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※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/lib/mymariadb
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-mariadb-pv.yml

※Kanboardデータ用
cat << EOF > local-kanboard-data-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-kanboard-data-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/kanboard_data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-kanboard-data-pv.yml

※Kanboardプラグイン用
cat << EOF > local-kanboard-plugins-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-kanboard-plugins-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/kanboard_data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-kanboard-plugins-pv.yml

※KanboardのSSL用
cat << EOF > local-kanboard-ssl-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-kanboard-ssl-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  local:
    path: /var/kanboard_ssl
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-kanboard-ssl-pv.yml

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

※Kanboardデータ用
cat << EOF > local-kanboard-data-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-kanboard-data-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 5Gi
  volumeName: local-kanboard-data-pv
EOF

microk8s kubectl apply -f ./local-kanboard-data-pvc.yml

※Kanboardプラグイン用
cat << EOF > local-kanboard-plugins-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-kanboard-plugins-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 5Gi
  volumeName: local-kanboard-plugins-pv
EOF

microk8s kubectl apply -f ./local-kanboard-plugins-pvc.yml

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

microk8s kubectl apply -f ./local-kanboard-ssl-pvc.yml

4. KanboardとMariaDBのDeploymentの作成
以下のコマンドでkanboardとmariadbを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > kanboard-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kanboard-mariadb-deployment
  labels:
    app: kanboard-mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kanboard-mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: kanboard-mariadb
    spec:
      containers:
      - name: mymariadb
        image: mariadb:10.7-focal
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mymariadb
        - name: MYSQL_DATABASE
          value: kanboard
        - name: MYSQL_USER
          value: kanboard
        - name: MYSQL_PASSWORD
          value: kanboard
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      - name: kanboard
        image: kanboard/kanboard:latest
        env:
        - name: DATABASE_URL
          value: mysql://kanboard:kanboard@127.0.0.1/kanboard
        ports:
        - containerPort: 80
          name: http
        - containerPort: 443
          name: https
        volumeMounts:
        - name: kanboard-data
          mountPath: /var/www/app/data
        - name: kanboard-plugins
          mountPath: /var/www/app/plugins
        - name: kanboard-ssl
          mountPath: /etc/nginx/ssl
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
      - name: kanboard-data
        persistentVolumeClaim:
          claimName: local-kanboard-data-pvc
      - name: kanboard-plugins
        persistentVolumeClaim:
          claimName: local-kanboard-plugins-pvc
      - name: kanboard-ssl
        persistentVolumeClaim:
          claimName: local-kanboard-ssl-pvc
EOF

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

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

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

ブラウザから以下のURLからKanboardにアクセスします。
http://<Microk8sをインストールしたホストのIP>:8080/
初期ログインはユーザadmin、パスワードadminでログインしてください。

2022年3月15日火曜日

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

Microk8sで同一ポッド内にMariaDBとAdminerを配置するには、以下の手順を実行します。MariaDBのデータはlocal永続ボリュームに保存します。

実行手順

1. MariaDBデータ格納用ディレクトリを作成
以下のコマンドでMariaDBデータ格納用ディレクトリを作成します。
sudo mkdir -p /var/lib/mymariadb

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
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/lib/mymariadb
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。
microk8s kubectl apply -f ./local-mariadb-pv.yml

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

4. AdminerとMariaDBのDeploymentの作成
以下のコマンドでadminerとmariadbを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > adminer-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: adminer-mariadb-deployment
  labels:
    app: adminer-mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: adminer-mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: adminer-mariadb
    spec:
      containers:
      - name: mymariadb
        image: mariadb:10.7-focal
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mymariadb
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      - name: adminer
        image: adminer:4-standalone
        env:
        - name: ADMINER_DEFAULT_SERVER
          value: 192.168.1.140 #※ホストのIPアドレス
        ports:
        - containerPort: 8080
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
EOF

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

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

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

ブラウザから以下のURLからAdminerにアクセスします。
http://<Microk8sをインストールしたホストのIP>:8080/
ログインフォームでは、以下を選択します。
データベース種類: MySQL
サーバ: 127.0.0.1
ユーザ名: root
パスワード: mymariadb
データベース: mysql

2022年3月10日木曜日

Minikubeで同一ポッド内にphpBBとMariaDBを配置する

phpBBは掲示板アプリケーションです。Minikubeで同一ポッド内にphpBBとMariaDBを配置するには、以下の手順を実行します。データはlocal永続ボリュームに保存します。

実行手順

1. local永続ボリュームで使用するディレクトリの作成
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
minikube ssh

sudo mkdir -p /var/mariadb-data

sudo mkdir -p /var/phpbb-data

sudo chown 1001:1001 /var/phpbb-data

exit

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

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

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

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

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

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

4. phpBBとMariaDBのDeploymentの作成
以下のコマンドでphpBBとMariadbを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > phpbb-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: phpbb-mariadb-deployment
  labels:
    app: phpbb-mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: phpbb-mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: phpbb-mariadb
    spec:
      containers:
      - name: mariadb
        image: mariadb:10.7-focal
        env:
        - name: MARIADB_ROOT_PASSWORD
          value: phpbb
        - name: MARIADB_DATABASE
          value: phpbb
        - name: MARIADB_USER
          value: phpbb
        - name: MARIADB_PASSWORD
          value: phpbb
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      - name: pnpbb
        image: bitnami/phpbb:latest
        env:
        - name: PHPBB_DATABASE_USER
          value: phpbb
        - name: PHPBB_DATABASE_PASSWORD
          value: phpbb
        - name: PHPBB_DATABASE_NAME
          value: phpbb
        - name: PHPBB_DATABASE_HOST
          value: 127.0.0.1
        - name: PHPBB_FORUM_NAME
          value: サンプルフォーラム
        - name: PHPBB_FORUM_DESCRIPTION
          value: サンプルのフォーラムです
        - name: PHPBB_USERNAME
          value: admin
        - name: PHPBB_PASSWORD
          value: admin
        - name: PHPBB_EMAIL
          value: admin@localhost.localdomain
        ports:
        - containerPort: 8080
        volumeMounts:
        - name: phpbb-data
          mountPath: /bitnami
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
      - name: phpbb-data
        persistentVolumeClaim:
          claimName: local-phpbb-pvc
EOF

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

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

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

6. Port-Fowardingで外部からアクセスできるようにする
kubectl port-forward --address 0.0.0.0 service/phpbb-mariadb-service 8080:8080 3306:3306
ブラウザからhttp://<ホスト名:8080/ にアクセスします。
ユーザ名admin、パスワードadminでログインします。

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

2022年2月27日日曜日

Minikubeで同一ポッド内にMariaDBとMetabaseを配置する

Metabaseはオープンソースのデータ解析・可視化ツールです。Minikubeで同一ポッド内にMariaDBとMetabaseを配置するには、以下の手順を実行します。

実行手順

1. local永続ボリュームで使用するディレクトリの作成
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
minikube ssh

sudo mkdir -p /var/mymariadb

sudo mkdir -p /var/metabase

exit

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※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/mymariadb
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - minikube
EOF

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

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

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

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

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

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

4. MetabaseとMariaDBのDeploymentの作成
以下のコマンドでMetabaseとMariaDBを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > metabase-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: metabase-mariadb-deployment
  labels:
    app: metabase-mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: metabase-mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: metabase-mariadb
    spec:
      containers:
      - name: mymariadb
        image: mariadb:10.7-focal
        args: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mymariadb
        - name: MYSQL_DATABASE
          value: metabase
        - name: MYSQL_USER
          value: metabase
        - name: MYSQL_PASSWORD
          value: metabase
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      - name: metabase
        image: metabase/metabase
        env:
        - name: MB_DB_FILE
          value: /metabase-data/metabase.db
        - name: MB_DB_TYPE
          value: mysql
        - name: MB_DB_DBNAME
          value: metabase
        - name: MB_DB_PORT
          value: "3306"
        - name: MB_DB_USER
          value: metabase
        - name: MB_DB_PASS
          value: metabase
        - name: MB_DB_HOST
          value: 127.0.0.1
        ports:
        - containerPort: 3000
        volumeMounts:
        - name: metabase-data
          mountPath: /metabase-data
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
      - name: metabase-data
        persistentVolumeClaim:
          claimName: local-metabase-pvc
EOF

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

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

kubectl apply -f ./metabase-service.yml

6. Port-Fowardingで外部からアクセスできるようにする
kubectl port-forward --address 0.0.0.0 service/metabase-service 8080:8080 3306:3306
ブラウザからhttp://<ホスト名:8080 にアクセスします。

言語、ユーザアカウント情報を入力して、「3.データを追加する」で以下の様に入力します。
データベースのタイプ: MySQL
名前: mariadb
ホスト: localhost
ポート: 3306
データベース名: metabase
ユーザ: metabase
パスワード: metabase

〇Metabaseの画面

2022年2月23日水曜日

Minikubeで同一ポッド内にMariaDBとNextcloudを配置する

NextcloudはDropboxのようなファイルを共有できるサーバーアプリケーションです。Minikubeで同一ポッド内にMariaDBとNextcloudを配置するには、以下の手順を実行します。

〇Nextcloudの画面

実行手順

1. local永続ボリュームで使用するディレクトリの作成
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
minikube ssh

sudo mkdir -p /var/lib/mymariadb

sudo mkdir -p /var/nextcloud

exit

2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※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/lib/mymariadb
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - minikube
EOF

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

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

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

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

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

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

4. NextcloudとMariaDBのDeploymentの作成
以下のコマンドでNextcloudとMariaDBを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > nextcloud-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nextcloud-mariadb-deployment
  labels:
    app: nextcloud-mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nextcloud-mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nextcloud-mariadb
    spec:
      containers:
      - name: mymariadb
        image: mariadb:10.7-focal
        args: ["--innodb_strict_mode=OF", "--innodb_read_only_compressed=OFF", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mymariadb
        - name: MYSQL_DATABASE
          value: nextcloud
        - name: MYSQL_USER
          value: nextcloud
        - name: MYSQL_PASSWORD
          value: nextcloud
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
      - name: nextcloud
        image: nextcloud:23-apache
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nextcloud-data
          mountPath: /var/www/html
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: local-mariadb-pvc
      - name: nextcloud-data
        persistentVolumeClaim:
          claimName: local-nextcloud-pvc
EOF

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

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

kubectl apply -f ./nextcloud-service.yml

6. Port-Fowardingで外部からアクセスできるようにする
kubectl port-forward --address 0.0.0.0 service/nextcloud-service 8080:8080 3306:3306
ブラウザからhttp://<ホスト名:8080 にアクセスします。
初期設定画面で以下の項目を入力します
データベースの種類は「MySQL/MariaDB」をクリックして選択します。
データベースのユーザ名: nextcloud
データベースのパスワード: nextcloud
データベース名: nextcloud
データベースのホスト名: 127.0.0.1:3306

関連情報

・Nextcloudに関するほかの情報は以下のまとめ記事を参照してください。
Nextcloudのまとめ