私は、Spring Cloud Kubernetes の機能を使用してその場でシークレットをリロードすることにより、その機能を調査しています。しかし、私はまだこれを機能させませんでした。
ポッドにマウントされているシークレットの内容を出力するだけの単純な Spring Boot アプリケーションがあります。これがbootstrap.propertiesの構成です
spring.cloud.kubernetes.reload.enabled=true
spring.cloud.kubernetes.reload.monitoring-secrets=true
spring.cloud.kubernetes.secrets.enabled=true
spring.cloud.kubernetes.secrets.paths=/etc/secret-volume
management.endpoint.info.enabled=true
management.endpoint.health.enabled=true
management.endpoint.restart.enabled=true
application.propertiesで、シークレットの値を取得するプロパティを定義しました。
mysecret.password=${MY-PWD}
Spring Boot アプリケーションで、シークレットの値を格納する Bean を定義しました。
@Configuration
@ConfigurationProperties(prefix = "mysecret")
public class MySecret {
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
minikube でアプリケーションを実行すると、Spring が宣言されたシークレットを検出し、プロファイルをアクティブ化することがログに表示されます。
16:54:30.887 [main] INFO oscbcPropertySourceBootstrapConfiguration - 見つかったプロパティ ソース: [BootstrapPropertySource@1132379993 {name='bootstrapProperties-my-pwd', properties={MY-PWD=qwerty}}] 16:54:30.899 [main] INFO ccrReloadSecretsApplication - 次のプロファイルがアクティブです: kubernetes
しばらくすると、シークレットのウォッチャーが追加されたことを示す次のログが表示されます。
16:54:35.460 [OkHttp https://10.96.0.1/...] DEBUG ifkcdiWatchConnectionManager - WebSocket が正常に開かれました 16:54:35.460 [メイン] 情報 osckcrEventBasedConfigurationChangeDetector - 新しい Kubernetes ウォッチが追加されました: secrets-watch 16:54:35.460 [ main] INFO osckcrEventBasedConfigurationChangeDetector - Kubernetes イベントベースの構成変更検出器がアクティブ化されました
次に、シークレットを変更すると、リロードがトリガーされないことを示す次の行が表示されます。
11:20:15.963 [OkHttp https://10.96.0.1/...] 警告 osckcrEventBasedConfigurationChangeDetector - Confimap PropertySources の現在の数は、Kubernetes からロードされたものと一致しません - リロードは行われません
このトピックに関するドキュメントはほとんどありません。ここに不足している構成はありますか?
Spring Boot アプリケーションへのリンク: https://github.com/Azlop/spring-cloud-kubernetes-reload-secrets