Secret を使用してセンシティブ データを保存
Secret を使用して、パスワードやアクセスキーなどの機密性の高い構成情報を GKE クラスタに保存できます。このページでは、Google Cloud リソースを構成するときに、Config Connector が Secret 値を使用する方法について説明します。
概要
このセクションでは、Config Connector で Secret を使用する方法の概要を示します。
リソースを作成するときに Secret を使用する
リソースの作成時に Secret 内のデータを使用できます。Secret をリソースに渡すでは、パスワードを含む Secret を作成し、Cloud SQL データベース上のユーザーの Secret を参照します。
Secret の更新
Secret に更新を適用すると、Config Connector は次に目的の状態を調整するときにリソースを更新します。たとえば、SQLUser
のパスワードとして参照される Secret を更新すると、Config Connector はユーザーのパスワードを更新します。
Secret を削除する
リソースで使用されている Secret を削除しても、Config Connector はリソースの Secret への参照を削除しません。たとえば、Secret を参照するパスワードで SQLUser を作成し、その Secret を削除した場合、そのパスワードは SQLUser に残ります。
トラブルシューティング
存在しない Secret を参照するリソースを作成すると、Config Connector は DependencyNotFound
または DependencyInvalid
イベントを作成します。
Secret と Kubernetes 名前空間
Kubernetes では Namespace 全体の Secret へのアクセスが許可されていないため、異なる Namespace のリソースに同じ Secret 値を使用する場合は、すべての Namespace に Secret を適用する必要があります。
リソースに Secret を渡す
このセクションでは、Cloud SQL サーバーを作成し、Secret を使用してデフォルトのユーザーのパスワードを設定します。
準備
これらの手順を完了するには、次のものが必要です。
- Kubernetes クラスタにインストールされた Config Connector
プロジェクトで Cloud SQL Admin API が有効になっていること。この API が有効になっていることを確認するには、次の
gcloud
コマンドを実行します。gcloud services list --filter=sqladmin.googleapis.com
コマンドが
Listed 0 items.
を出力する場合は、API を有効にする必要があります。この API は、Config Connector と Resource Manager API、またはgcloud
コマンドで有効にできます。
Service Usage API
- Config Connector は、Service Usage API を使用してサービス API を有効にします。これらの手順を実行するには、Service Usage API を有効にする必要があります。この API は、Google Cloud CLI を使用して有効にできます。
gcloud services enable serviceusage.googleapis.com
次の YAML を
enable-sql.yaml
という名前のファイルにコピーします。apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sqladmin.googleapis.com
kubectl
を使用してクラスタにenable-sql.yaml
を適用します。kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACE
CC_NAMESPACE
は、リソースを管理するNamespace Config Connector に置き換えます。
gcloud
Google Cloud CLI で SQL Admin API を有効にするには、次のコマンドを実行します。
gcloud services enable sqladmin.googleapis.com
Cloud SQL サーバーの作成
以下の YAML を
sql-server-example.yaml
という名前のファイルにコピーします。これにより、sqlserver-1
という名前の Cloud SQL サーバーとsqluser-sample
という名前のユーザーが作成されます。sqluser-sample
のパスワードは、リソース参照によってsecret-1
という名前の Secret に設定されています。apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLInstance metadata: labels: label-one: "sql-server-example" name: sqlserver-1 spec: region: us-central1 databaseVersion: MYSQL_5_7 settings: tier: db-g1-small --- apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLUser metadata: name: sqluser-sample spec: instanceRef: name: sqlserver-1 host: "%" password: valueFrom: secretKeyRef: name: secret-1 # Name of the Secret object to extract a value from key: password # Key that identifies the value to be extracted
以下の YAML を
example-secret.yaml
という名前のファイルにコピーします。保存する前に、password
の値を編集します。これは、前のセクションで参照されているsecret-1
を宣言します。apiVersion: v1 kind: Secret metadata: name: secret-1 stringData: password: PASSWORD
この構成をクラスタに適用します。
kubectl apply -n CC_NAMESPACE -f example-secret.yaml
kubectl apply -n CC_NAMESPACE -f sql-server-example.yaml
CC_NAMESPACE
は、リソースを管理するNamespace Config Connector に置き換えます。Config Connector は、指定したパスワードを使用して Cloud SQL インスタンスとユーザーを作成します。これには数分かかることがあります。
数分待ってから、インスタンスが使用できることを確認してください。
gcloud sql instances list --filter="name=sqlserver-1"
出力には、
STATUS
がRUNNABLE
のサーバーが含まれているはずです。SQL インスタンスに接続できることを確認します。
gcloud sql connect sqlserver-1 --user=sqluser-sample
パスワードの入力を求めるプロンプトが表示されます。
クリーンアップ
インスタンスを保持しない場合は、kubectl
を使用して Cloud SQL インスタンス、ユーザー、Secret を削除します。
kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
kubectl delete -n CC_NAMESPACE -f example-secret.yaml
CC_NAMESPACE
は、リソースを管理するNamespace Config Connector に置き換えます。
次のステップ
Config Connector リソース間のリソース参照を指定する方法を学習します。
Kubernetes Secret を詳しく学びます。