發布時間: 2021-08-02 09:44:27
本文旨在幫助您了解Oracle云基礎設施 (OCI)的一些技術能力,以構建現代應用程序。通過學習這篇文章,您不僅可以使用Spring Boot和 Oracle自治數據庫創建應用程序,還可以將Spring Boot應用程序與OCI 服務原生集成,例如Oracle Kubernetes Engine (OKE)、OCI Container Registry和OCI Vault。
為什么選擇 Oracle 自治數據庫?
Oracle自治數據庫將基礎架構自動化與Oracle Exadata平臺相結合。
該數據庫使用機器學習來消除數十年來數據庫一直存在的基本問題,包括復雜的管理、安全漏洞、因打補丁或故障而導致的停機、性能瓶頸、配置不易變更和高成本。
自治數據庫具有以下特性和功能:
創建 Exadata云基礎架構、RAC和橫向擴展數據庫以及Active Data Guard
在線安全更新,防止管理員使用Database Vault窺探數據,并加密所有數據
在線修補所有軟件、調整設置、執行所有操作系統和SYSDBA 操作并診斷錯誤
支持自動備份、恢復和集群內或異地的應用程序透明故障轉移
計算和存儲的即時、自動和在線彈性擴展,可實現真正的按使用付費
自動優化每個工作負載的數據格式、索引、并行度和執行計劃
Spring Boot 2.4.0發布后,官方增加了對 Oracle UCP的支持!特別是,我們可以將Spring Boot 與 Oracle自治數據庫順利集成。所以,我們可以主要依靠 Spring Boot配置屬性來配置 Oracle UCP連接池。
使用OCI Vault保護您的憑據
OCI Vault是一個集中的、由客戶控制的密鑰管理服務,它具有以下特點:
集成到許多OCI 服務:Oracle自治數據庫、對象存儲等
完全托管
高可用服務:99.9% SLAs和99.99% SLOs
合規性:符合PCI DSS并通過 HSM FIPS 140-2 級別3認證,用于加密處理
OCI Vault和Spring Boot應用程序的集成


OCI Vault、Spring Boot和 Oracle自治數據庫之間的集成
在Spring Boot應用程序的啟動過程中,我們使用oci-java-sdk-secrets將數據庫用戶名和密碼注入到SpringDataSourceProperties Bean中。
示例應用程序說明
以下示例應用程序處理用戶實體并公開CRUD REST端點。我們使用Swagger 和OpenAPI,它們為消費者提供了一種簡單的方式來描述API的契約,并可用于共享文檔。您可以使用OCI API網關安全地為合作伙伴公開此API。以下示例代碼顯示了如何實現此檢索,與自治數據庫和OCI Vault的集成使用的依賴項。
從集成開發環境運行示例應用程序
先決條件
在 Oracle Cloud上配置自治數據庫。如果您沒有自治數據庫的現有實例,請按照以下步驟操作。
應用配置
將您的數據庫用戶名和密碼秘密存儲在OCI Vault中。然后用您自己的配置替換以下屬性:
oci.tenant.region=your region
oci.tenant.vault.db-username-ocid=yourusername vault secret ocid
oci.tenant.vault.db-password-ocid=yourpasswod vault secret ocid
運行應用程序
使用類HelloAutonomousdbApplication運行應用程序。然后,通過訪問 URL http://localhost:8080來測試應用程序是否已正確部署。
當您看到swagger-ui頁面時,您可以測試不同的公開 REST API:

構建示例應用程序
選項 1:帶有 Maven 的可執行 JAR
要創建可執行 jar,請運行以下命令:
mvn clean package
要在本地測試可執行 JAR,您可以運行以下命令:
java -jartarget/hello-autonomousdb-0.0.1-SNAPSHOT.jar--spring.config.location=/path/configuration/properties/
選項 2:構建 OCI 映像
我們可以使用Cloud Native Buildpacks從可執行 jar 文件創建 OCI 映像。您可以使用build-image目標構建鏡像。Docker 映像部署到Container Registry。要創建 OCI docker 映像,請運行以下命令:
mvn clean spring-boot:build-image
選項 3:使用 GraalVM 和Spring Native 構建原生鏡像
這一步基于Spring Native和GraalVM。為了創建原生鏡像,該項目依賴于 Spring Native項目和Cloud Native Buildpacks。Docker映像部署到Container Registry。
運行以下命令:
mvn -Pnative-image cleanspring-boot:build-image
在您的 Oracle 云租戶中部署示例應用程序
先決條件
已安裝 kubectl
已安裝 Docker CLI
已安裝 Terraform 0.12.16+
已安裝 OCI CLI
已安裝 Maven 3
使用 Terraform 配置基礎設施
所有 Terraform 腳本都位于terraform文件夾中。這些腳本創建虛擬云網絡 (VCN)、子網、安全列表、OKE、自治事務處理和OCI Vault。文件variables.tf中提供了以下變量的示例值。
然后使用Terraform腳本創建您的基礎設施。您可以運行以下命令或使用OCI 資源管理器來創建您的基礎設施:
terraform init
terraform plan
terraform apply
使用 buildpacks將應用程序部署到Kubernetes
所有部署腳本都在文件夾deployment中可用。這些腳本允許您完成以下步驟:
下載數據庫錢包并創建一個包含自治數據庫錢包的Kubernetes(OKE) Secret
創建 OCI容器注冊表密鑰,以便OKE可以拉取示例應用程序容器映像的最新版本
創建一個包含Spring Boot應用程序*.yml 配置的配置映射
將Spring Boot應用程序部署到Kubernetes集群
結 論
我們相信本指南可以幫助您簡化和增強在Spring Boot應用程序中處理自治數據庫憑據的方式。OCI Vault的亮點加強了內置于Oracle云基礎設施中的增強安全機制。
上一篇: 什么是畢昇編譯器
下一篇: 華為hcip認證書有用嗎