1

私は、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

4

1 に答える 1