【参考】MySQLの導入

HULFT10 for Container Platformをご使用いただくには、HULFT10 for Container Platformで利用するデータ情報を格納するためのデータベースが必要です。

既存のデータベースを使用することもできます。

ここでは、新規にMySQLを導入する手順の一例を説明します。

= 備考 =

本手順は導入例です。

MySQLを導入する場合の詳細な手順については、MySQLのヘルプを参照してください。

HULFTを導入するプロジェクトに移動

HULFT10 for Container Platformを導入するプロジェクトに移動します。

 

Red Hat OpenShift CLIで、HULFT10 for Container Platformを導入するプロジェクトに移動するには以下のコマンドを実行します。

oc project <HULFTを導入するプロジェクトの名前>

設定例

oc project hulft-project

MySQL Operatorの導入

MySQL Operatorを導入するために、InnoDB ClusterのCRDを作成します。

 

InnoDB ClusterのCRDを作成するには、以下のコマンドを実行します。

oc apply -f https://raw.githubusercontent.com/mysql/mysql-operator/8.0.40-2.0.16/deploy/deploy-crds.yaml

MySQL Operatorのデプロイ

MySQL Operatorをデプロイする手順を、MySQL Operator for Kubernetes 8.0.40-2.0.16を使用した例で説明します。

  1. MySQL Operatorをデプロイするために、以下のマニフェストファイルをローカルにダウンロードします。

    https://raw.githubusercontent.com/mysql/mysql-operator/8.0.40-2.0.16/deploy/deploy-operator.yaml

  2. ダウンロードしたマニフェストのDeploymentの内容を変更します。

    以下は、MySQL Operatorをデプロイする際のサンプルです。このサンプルを参考に環境に合わせて変更してください。

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mysql-operator
      namespace: mysql-operator
      labels:
        version: "1.0"
        app.kubernetes.io/name: mysql-operator
        app.kubernetes.io/instance: mysql-operator
        app.kubernetes.io/version: 8.0.40-2.0.16
        app.kubernetes.io/component: controller
        app.kubernetes.io/managed-by: mysql-operator
        app.kubernetes.io/created-by: mysql-operator
    spec:
      replicas: 1
      selector:
        matchLabels:
          name: mysql-operator
      template:
        metadata:
          labels:
            name: mysql-operator
        spec:
          containers:
            - name: mysql-operator
              image: container-registry.oracle.com/mysql/community-operator:8.4
              imagePullPolicy: IfNotPresent
              args:
                [
                  "mysqlsh",
                  "--log-level=@INFO",
                  "--pym",
                  "mysqloperator",
                  "operator",
                ]
              env:
                - name: MYSQLSH_USER_CONFIG_HOME
                  value: /mysqlsh
                - name: MYSQL_OPERATOR_K8S_CLUSTER_DOMAIN
                  value: "cluster.local"
                - name: MYSQLSH_CREDENTIAL_STORE_SAVE_PASSWORDS
                  value: never
              readinessProbe:
                exec:
                  command:
                  - cat
                  - /tmp/mysql-operator-ready
                initialDelaySeconds: 1
                periodSeconds: 3
              volumeMounts:
                - name: mysqlsh-home
                  mountPath: /mysqlsh
                - name: tmpdir
                  mountPath: /tmp
              securityContext:
                allowPrivilegeEscalation: false
                privileged: false
                readOnlyRootFilesystem: true
                runAsNonRoot: true
                capabilities:
                  drop:
                  - ALL
                seccompProfile:
                  type: RuntimeDefault
          volumes:
            - name: mysqlsh-home
              emptyDir: {}
            - name: tmpdir
              emptyDir: {}
          serviceAccountName: mysql-operator-sa
    
    

  3. MySQL Operatorをデプロイするには、作成したマニフェストを引数にして以下のコマンドを実行します。

    oc apply -f deploy-operator.yaml

  4. デプロイが成功したかを確認するには、以下のコマンドを実行します。

    oc get deployment -n mysql-operator

     

    デプロイが成功した場合は、以下のとおりREADYの値は“1/1”となっています。

    NAME             READY   UP-TO-DATE   AVAILABLE   AGE
    mysql-operator   1/1     1            1           1d2h
    

MySQLの導入

MySQLの認証情報を登録するために、シークレットを作成します。

 

以下のマニフェストファイルをローカルに作成します。

mysql-password.yaml

kind: Secret
apiVersion: v1
metadata:
  name: <作成するSecretリソースの名前>
  namespace: <HULFTを導入するプロジェクトの名前>
stringData:
  rootUser: <MySQLにログインするユーザー名>
  rootPassword: <MySQLにログインするパスワード>
  rootHost: "%"
type: Opaque

設定例

kind: Secret
apiVersion: v1
metadata:
  name: mysql-password
  namespace: hulft-project
stringData:
  rootUser: username
  rootPassword: password
  rootHost: "%"
type: Opaque

 

MySQLの認証情報を適用するには、以下のコマンドを実行します。

oc apply -f mysql-password.yaml

 

適用に成功すると以下が表示されます。

secret/mysql-password created

永続ボリュームの作成

Red Hat OpenShift上にあるデータベースを保持するために永続ボリュームが必要です。

NFSに永続ボリュームを作成する例を説明します。

 

NFSをマウントするための以下のマニフェストファイルを、ローカルに作成します。

mysql-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: <任意の永続ボリューム名>
  namespace: <HULFTを導入するプロジェクトの名前>
spec:
  capacity:
    storage: <任意のストレージサイズ>
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: <マウントするNFSのホスト名>
    path: <マウントするNFSのパス>
  storageClassName: <永続ボリュームのストレージクラス名>

設定例

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv-volume
  namespace: hulft-project
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: xxx.xxx.com
    path: /
  storageClassName: mysql-pv

 

永続ボリュームを適用するには、以下のコマンドを実行します。

oc apply -f mysql-pv.yaml

 

適用に成功すると以下が表示されます。

persistentvolume/mysql-pv-volume created

MySQLリソースの作成

MySQLクラスターを作成する手順を説明します。

  1. MySQLリソースを作成する以下のマニフェストファイルを、ローカルに作成します。

    mysql-cluster.yaml

    apiVersion: mysql.oracle.com/v2
    kind: InnoDBCluster
    metadata:
      name: <任意のMySQLクラスター名>
      namespace: <HULFTを導入するプロジェクトの名前>
    spec:
      secretName: <MySQLの認証情報を登録したシークレット名>
      tlsUseSelfSigned: true
      instances: 1
      router:
        instances: 1
      datadirVolumeClaimTemplate:
        accessModes:
          - ReadWriteMany
        storageClassName: <永続ボリュームのストレージクラス名>
    

    設定例

    apiVersion: mysql.oracle.com/v2
    kind: InnoDBCluster
    metadata:
      name: mysql-cluster
      namespace: hulft-project
    spec:
      secretName: mysql-password
      tlsUseSelfSigned: true
      instances: 1
      router:
        instances: 1
      datadirVolumeClaimTemplate:
        accessModes:
          - ReadWriteMany
        storageClassName: mysql-pv
    

  2. MySQLリソースを実行するために必要な権限を、MySQLクラスターを実行するサービスアカウントに付与します。

    以下のコマンドを実行します。

    oc adm policy add-scc-to-user privileged -z <MySQLクラスター名>-sidecar-sa

    設定例

    oc adm policy add-scc-to-user privileged -z mysql-cluster-sidecar-sa

  3. MySQLリソースをデプロイするには、以下のコマンドを実行します。

    oc apply -f mysql-cluster.yaml

  4. デプロイが成功したかを確認するには、以下のコマンドを実行します。

    oc get InnoDBCluster <MySQLクラスター名>

    設定例

    oc get InnoDBCluster mysql-cluster

    デプロイの完了には、5分から10分程度の時間を要します。

     

    デプロイが完了すると、以下のとおり「STATUS」の値が“ONLINE”となります。

    NAME              STATUS    ONLINE   INSTANCES   ROUTERS   AGE
    mysql-cluster     ONLINE     1        1           1        1d2h
    

 

以上で、MySQLのデータベースを導入できました。

以降の手順は、「事前準備」の「データベースの作成」を参照してください。