この項では、サンプルまたは基本的なテスト目的に適したアプローチを使用して、Kubernetesクラスタで一時「Oracleデータベース」または「MySQLデータベース」を実行する方法について説明します。
NOTES:
データベースは一時ストレージで構成され、停止またはポッド失敗時にすべての情報が失われることを意味します。
Oracle Databaseイメージは、非本番での使用「のみ」でサポートされています。 詳細は、My Oracle Supportノートを参照してください: Docker 「ドキュメントID 2216342.1」で実行されているデータベースの場合は、Oracle Support。
次の例は、次の属性を使用して一時的なOracleデータベースを設定する方法を示しています:
属性 | 値 |
---|---|
Kubernetesネームスペース | default |
Kubernetesポッド | oracle-db |
Kubernetesサービス名 | oracle-db |
Kubernetesサービス・ポート | 1521 |
Kubernetesノード・ポート | 30011 |
イメージ | container-registry.oracle.com/database/enterprise:12.2.0.1-slim |
DBAユーザー(完全な権限あり) | sys as sysdba |
DBAパスワード | <password placeholder> |
データベース・ドメイン(WebLogicドメインと同じではない) | k8s |
データベースPDB | devpdb |
Kubernetesクラスタ内のデータベースURL (任意のネームスペースから) | oracle-db.default.svc.cluster.local:1521/devpdb.k8s |
Kubernetesクラスタ外のデータベースURL | dns-name-that-resolves-to-node-location:30011/devpdb.k8s |
オペレータ・ソースを取得し、/tmp/weblogic-kubernetes-operator
に配置します。
例えば:
$ cd /tmp
$ git clone --branch v4.2.8
https://github.com/oracle/weblogic-kubernetes-operator.git
ノート: オペレータ・ソース・ツリーの最上位ディレクトリを/tmp/weblogic-kubernetes-operator
と呼びますが、別のロケーションを使用できます。
オペレータ・ソースの取得の詳細は、「開発者ガイドの要件」を参照してください。
データベース・イメージにアクセスできることを確認します:
ブラウザを使用してhttps://container-registry.oracle.com
にログインし、Database -> enterprise
を選択してライセンス契約に同意します。
データベース・イメージを取得します:
docker login container-registry.oracle.com
です。docker pull container-registry.oracle.com/database/enterprise:12.2.0.1-slim
です。Kubernetesクラスタ・ノードがすべてローカル・キャッシュ内のデータベース・イメージへのアクセス権を持っていない場合、次のようになります:
container-registry.oracle.com
のログイン資格証明を使用して、Kubernetes docker secret
をデフォルト・ネームスペースにデプロイします:
kubectl create secret docker-registry docker-secret \
--docker-server=container-registry.oracle.com \
--docker-username=your.email@some.com \
--docker-password=your-password \
--docker-email=your.email@some.com \
-n default
-s your-image-pull-secret
を使用して、このシークレットの名前をパラメータとして次のステップのstart-db-service.sh
に渡します。警告: Oracle Databaseイメージは、本番以外の用途でのみサポートされています。 詳細は、My Oracle Supportノートを参照してください: Docker 「ドキュメントID 2216342.1」で実行されているデータベースの場合は、Oracle Support。
デフォルトのネームスペースにoracle-db-secret
という名前のシークレットを作成し、目的のOracle SYS DBAパスワードをそのpassword
キーに作成します。
$ kubectl -n default create secret generic oracle-db-secret \
--from-literal='password=<password placeholder>'
(<password placeholder>
を必要なパスワードに置き換えます。)データベース・イメージを使用してデプロイメントを作成します:
/tmp/weblogic-kubernetes-operator/kubernetes/samples/scripts/create-oracle-db-service
のサンプル・スクリプトを使用して、デプロイメントoracle-db
で実行されているOracleデータベースを作成します。
$ cd /tmp/weblogic-kubernetes-operator/kubernetes/samples/scripts/create-oracle-db-service
$ start-db-service.sh
ノート:
start-db-service.sh -h
をコールして、ネームスペース、ノード・ポート、シークレット名などをカスタマイズする方法を確認します。stop-db-service.sh
をコールして、oracle-db
デプロイメントを停止およびクリーンアップします。kubectl describe pod DB_POD_NAME
およびkubectl logs DB_POD_NAME
コマンドを使用します。次の例は、次の属性を使用して一時的なMySQLデータベースを設定する方法を示しています:
属性 | 値 |
---|---|
Kubernetesネームスペース | default |
Kubernetesポッド | mysql-db |
Kubernetesサービス名 | mysql-db |
Kubernetesサービス・ポート | 3306 |
イメージ | mysql:5.6 |
rootユーザー(完全な権限あり) | <user name placeholder> |
rootパスワード | <password placeholder> |
Kubernetesクラスタ内のデータベースURL (任意のネームスペースから) | jdbc:mysql://mysql-db.default.svc.cluster.local:3306/mysql |
次のYAMLをmysql.yaml
という名前のファイルにコピーします:
apiVersion: v1
kind: Pod
metadata:
name: mysql-db
namespace: default
labels:
app: mysql-db
spec:
terminationGracePeriodSeconds: 5
containers:
- image: mysql:5.6
name: mysql
env:
- name: MYSQL_ROOT_USER
valueFrom:
secretKeyRef:
name: mysql-secret
key: root-user
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: root-password
ports:
- containerPort: 3306
name: mysql
---
apiVersion: v1
kind: Service
metadata:
name: mysql-db
namespace: default
spec:
ports:
- port: 3306
selector:
app: mysql-db
clusterIP: None
---
apiVersion: v1
kind: Secret
metadata:
name: mysql-secret
namespace: default
data:
root-user: <user name placeholder>
root-password: <password placeholder>
ファイルmysql.yaml
で、<user name placeholder>
および<password placeholder>
をそれぞれ、base64を介してルート・ユーザー名とパスワードをパイプする出力に置き換えます:
echo -n <user name placeholder> | base64
echo -n <password placeholder> | base64
コマンドkubectl create -f mysql.yaml
を使用して、MySQLをデプロイします。
リソースを停止およびクリーンアップするには、kubectl delete -f mysql.yaml
を使用します。