簡體   English   中英

如何在 Spring Boot 中使用秘密管理器對部署在 gcp 上的項目進行身份驗證

[英]how to authenticate project that is deployed on gcp with secret manager in spring boot

我決定在 gcp 中使用秘密管理器來獲取來自某些外部 API 的憑據,所以我在本地測試東西是 gcloud auth application-default login,在此之前我在本地下載了 gcp cli。 在部署應用程序時,我的應用程序上下文沒有加載。 這是 build 的一部分: 在此處輸入圖像描述

這是測試一些基本的上下文負載:

@SpringBootTest
class FlightApiApplicationTests {

    @Test
    void contextLoads() {
    }

}

這是我的碼頭文件:

FROM gradle:7.4.1-jdk17-alpine AS TEMP_BUILD_IMAGE
ENV APP_HOME=/usr/app/
WORKDIR $APP_HOME
COPY build.gradle settings.gradle $APP_HOME

COPY gradle $APP_HOME/gradle
COPY --chown=gradle:gradle . /home/gradle/src
USER root
RUN chown -R gradle /home/gradle/src

RUN gradle build || return 0
COPY . .
RUN gradle clean build
FROM openjdk:17
ENV ARTIFACT_NAME=FlightApi-0.0.1-SNAPSHOT.jar
ENV APP_HOME=/usr/app/

WORKDIR $APP_HOME
COPY --from=TEMP_BUILD_IMAGE $APP_HOME/build/libs/$ARTIFACT_NAME .

EXPOSE 8080
ENTRYPOINT exec java -jar ${ARTIFACT_NAME}

我也會在 gradle 中添加一些依賴項:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation "org.springframework.boot:spring-boot-starter-actuator"

    //amadeus implementation
    implementation 'com.google.code.gson:gson:2.9.0'
    implementation "com.amadeus:amadeus-java:5.9.0"

    implementation 'com.google.cloud:spring-cloud-gcp-starter-secretmanager:3.3.0'

    implementation platform('com.google.cloud:libraries-bom:25.3.0')

    implementation 'com.google.cloud:google-cloud-storage'


    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    //Junit
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
}

問題是我應該以某種方式在 dockerfile 中導出這個谷歌默認憑據嗎? 或者也許我應該為使用 gcp 驗證 oauth 提供一些服務? 它不應該自動找到,因為我在 gcp 構建服務中構建它。 我對任何想法持開放態度,那些 gcp 文檔對我來說是完全無法理解的,或者只是關於任何事情的信息太多。 我正在使用jdk17這個項目。

最后我找到了示例,在我的 gcp build 中,我遇到了 google 憑據默認值的問題,所以在我不需要秘密管理器的測試中,我使用了這個標志:

@SpringBootTest(properties = {"spring.cloud.gcp.secretmanager.enabled=false"})

所以它對我有用,構建變綠了! 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM