【参考】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を使用した例で説明します。
-
MySQL Operatorをデプロイするために、以下のマニフェストファイルをローカルにダウンロードします。
https://raw.githubusercontent.com/mysql/mysql-operator/8.0.40-2.0.16/deploy/deploy-operator.yaml
-
ダウンロードしたマニフェストの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
-
MySQL Operatorをデプロイするには、作成したマニフェストを引数にして以下のコマンドを実行します。
oc apply -f deploy-operator.yaml
-
デプロイが成功したかを確認するには、以下のコマンドを実行します。
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クラスターを作成する手順を説明します。
-
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
-
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
-
MySQLリソースをデプロイするには、以下のコマンドを実行します。
oc apply -f mysql-cluster.yaml
-
デプロイが成功したかを確認するには、以下のコマンドを実行します。
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のデータベースを導入できました。
以降の手順は、「事前準備」の「データベースの作成」を参照してください。