Menu Close
11.2.3. Secret の設定
このクイックスタートの Kubernetes Secret は、必要な 1 つの追加ステップ以外は標準の方法でセットアップされています。追加ステップとして、Spring Cloud Kubernetes プラグインを Secret のマウントパスで設定し、起動時に Secret が読み取れるようにする必要があります。Secret を設定するには、以下を行います。
- サンプル Secret オブジェクトの作成
- Secret のボリュームマウントの設定
- Secret プロパティーを読み取るため spring-cloud-kubernetes を設定
サンプル Secret オブジェクト
クイックスタートプロジェクトによって、以下のようなサンプル Secret sample-secret.yml
が提供されます。Secret オブジェクトのプロパティー値は常に base64 でエンコードされます (base64
コマンドラインユーティリティーを使用)。Secret が Pod のファイルシステムにマウントされると、値は自動的に元のプレーンテキストにデコードされます。
sample-secret.yml ファイル
apiVersion: v1 kind: Secret metadata: 1 name: camel-config type: Opaque data: # The username is 'myuser' quickstart.queue-username: bXl1c2VyCg== 2 quickstart.queue-password: MWYyZDFlMmU2N2Rm 3
- 1
- metadata.name: Secret を識別します。OpenShift システムの他の部分はこの識別子を使用して Secret を参照します。
- 2
- quickstart.queue-username:
quickstartConfiguration
Bean のqueueUsername
プロパティーにインジェクトすることを目的とします。値は base64 でエンコードする 必要 があります。 - 3
- quickstart.queue-password:
quickstartConfiguration
Bean のqueuePassword
プロパティーにインジェクトすることを目的とします。値は base64 でエンコードする 必要 があります。
Kubernetes では、プロパティー名を CamelCase で定義できません (プロパティー名をすべて小文字にする必要があります)。この制限を回避するには、ハイフンを使用した形式 queue-username
を使用します。Spring はこれを queueUsername
と一致します。これは、外部化設定に対して Spring Boot の リラックスバインディングルールを利用します。
Secret のボリュームマウントの設定
Secret をボリュームマウントとして設定し、起動時に Secret がロードされるようにアプリケーションを設定する必要があります。アプリケーションの起動後、Secret プロパティーはファイルシステムの指定の場所で利用可能になります。アプリケーションの deployment.yml
ファイルは、Secret のボリュームマウントを定義する src/main/fabric8/
ディレクトリー下にあります。
deployment.yml ファイル
spec: template: spec: serviceAccountName: "qs-camel-config" volumes: 1 - name: "camel-config" secret: # The secret must be created before deploying this application secretName: "camel-config" containers: - volumeMounts: 2 - name: "camel-config" readOnly: true # Mount the secret where spring-cloud-kubernetes is configured to read it # see src/main/resources/bootstrap.yml mountPath: "/etc/secrets/camel-config" resources: # requests: # cpu: "0.2" # memory: 256Mi # limits: # cpu: "1.0" # memory: 256Mi env: - name: SPRING_APPLICATION_JSON value: '{"server":{"undertow":{"io-threads":1, "worker-threads":2 }}}'
Secret プロパティーを読み取るため spring-cloud-kubernetes を設定
Secret を Spring Boot の外部化設定と統合するには、Spring Cloud Kubernetes プラグインを Secret のマウントパスで設定する必要があります。Spring Cloud Kubernetes は指定の場所から Secret を読み取り、Spring Boot はそれをプロパティーソースとして利用できるようになります。Spring Cloud Kubernetes プラグインを設定するには、クイックスタートプロジェクトの src/main/resources
下にある bootstrap.yml
ファイルを設定します。
bootstrap.yml ファイル
# Startup configuration of Spring-cloud-kubernetes spring: application: name: camel-config cloud: kubernetes: reload: # Enable live reload on ConfigMap change (disabled for Secrets by default) enabled: true secrets: paths: /etc/secrets/camel-config
spring.cloud.kubernetes.secrets.paths
プロパティーは、Pod の Secret ボリュームマウントのパスリストを指定します。
bootstrap.properties
ファイル (または bootstrap.yml
ファイル) は、application.properties
ファイルと同様に動作しますが、アプリケーションの起動時により前の段階でロードされます。bootstrap.properties
ファイルの Spring Cloud Kubernetes プラグインに関連するプロパティーを設定した方が信頼性が高くなります。