全部課程
發(fā)布時(shí)間: 2021-08-02 09:44:27
本文旨在幫助您了解Oracle云基礎(chǔ)設(shè)施 (OCI)的一些技術(shù)能力,以構(gòu)建現(xiàn)代應(yīng)用程序。通過(guò)學(xué)習(xí)這篇文章,您不僅可以使用Spring Boot和 Oracle自治數(shù)據(jù)庫(kù)創(chuàng)建應(yīng)用程序,還可以將Spring Boot應(yīng)用程序與OCI 服務(wù)原生集成,例如Oracle Kubernetes Engine (OKE)、OCI Container Registry和OCI Vault。
為什么選擇 Oracle 自治數(shù)據(jù)庫(kù)?
Oracle自治數(shù)據(jù)庫(kù)將基礎(chǔ)架構(gòu)自動(dòng)化與Oracle Exadata平臺(tái)相結(jié)合。
該數(shù)據(jù)庫(kù)使用機(jī)器學(xué)習(xí)來(lái)消除數(shù)十年來(lái)數(shù)據(jù)庫(kù)一直存在的基本問(wèn)題,包括復(fù)雜的管理、安全漏洞、因打補(bǔ)丁或故障而導(dǎo)致的停機(jī)、性能瓶頸、配置不易變更和高成本。
自治數(shù)據(jù)庫(kù)具有以下特性和功能:
創(chuàng)建 Exadata云基礎(chǔ)架構(gòu)、RAC和橫向擴(kuò)展數(shù)據(jù)庫(kù)以及Active Data Guard
在線(xiàn)安全更新,防止管理員使用Database Vault窺探數(shù)據(jù),并加密所有數(shù)據(jù)
在線(xiàn)修補(bǔ)所有軟件、調(diào)整設(shè)置、執(zhí)行所有操作系統(tǒng)和SYSDBA 操作并診斷錯(cuò)誤
支持自動(dòng)備份、恢復(fù)和集群內(nèi)或異地的應(yīng)用程序透明故障轉(zhuǎn)移
計(jì)算和存儲(chǔ)的即時(shí)、自動(dòng)和在線(xiàn)彈性擴(kuò)展,可實(shí)現(xiàn)真正的按使用付費(fèi)
自動(dòng)優(yōu)化每個(gè)工作負(fù)載的數(shù)據(jù)格式、索引、并行度和執(zhí)行計(jì)劃
Spring Boot 2.4.0發(fā)布后,官方增加了對(duì) Oracle UCP的支持!特別是,我們可以將Spring Boot 與 Oracle自治數(shù)據(jù)庫(kù)順利集成。所以,我們可以主要依靠 Spring Boot配置屬性來(lái)配置 Oracle UCP連接池。
使用OCI Vault保護(hù)您的憑據(jù)
OCI Vault是一個(gè)集中的、由客戶(hù)控制的密鑰管理服務(wù),它具有以下特點(diǎn):
集成到許多OCI 服務(wù):Oracle自治數(shù)據(jù)庫(kù)、對(duì)象存儲(chǔ)等
完全托管
高可用服務(wù):99.9% SLAs和99.99% SLOs
合規(guī)性:符合PCI DSS并通過(guò) HSM FIPS 140-2 級(jí)別3認(rèn)證,用于加密處理
OCI Vault和Spring Boot應(yīng)用程序的集成
OCI Vault、Spring Boot和 Oracle自治數(shù)據(jù)庫(kù)之間的集成
在Spring Boot應(yīng)用程序的啟動(dòng)過(guò)程中,我們使用oci-java-sdk-secrets將數(shù)據(jù)庫(kù)用戶(hù)名和密碼注入到SpringDataSourceProperties Bean中。
示例應(yīng)用程序說(shuō)明
以下示例應(yīng)用程序處理用戶(hù)實(shí)體并公開(kāi)CRUD REST端點(diǎn)。我們使用Swagger 和OpenAPI,它們?yōu)橄M(fèi)者提供了一種簡(jiǎn)單的方式來(lái)描述API的契約,并可用于共享文檔。您可以使用OCI API網(wǎng)關(guān)安全地為合作伙伴公開(kāi)此API。以下示例代碼顯示了如何實(shí)現(xiàn)此檢索,與自治數(shù)據(jù)庫(kù)和OCI Vault的集成使用的依賴(lài)項(xiàng)。
從集成開(kāi)發(fā)環(huán)境運(yùn)行示例應(yīng)用程序
先決條件
在 Oracle Cloud上配置自治數(shù)據(jù)庫(kù)。如果您沒(méi)有自治數(shù)據(jù)庫(kù)的現(xiàn)有實(shí)例,請(qǐng)按照以下步驟操作。
應(yīng)用配置
將您的數(shù)據(jù)庫(kù)用戶(hù)名和密碼秘密存儲(chǔ)在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
運(yùn)行應(yīng)用程序
使用類(lèi)HelloAutonomousdbApplication運(yùn)行應(yīng)用程序。然后,通過(guò)訪問(wèn) URL http://localhost:8080來(lái)測(cè)試應(yīng)用程序是否已正確部署。
當(dāng)您看到swagger-ui頁(yè)面時(shí),您可以測(cè)試不同的公開(kāi) REST API:
構(gòu)建示例應(yīng)用程序
選項(xiàng) 1:帶有 Maven 的可執(zhí)行 JAR
要?jiǎng)?chuàng)建可執(zhí)行 jar,請(qǐng)運(yùn)行以下命令:
mvn clean package
要在本地測(cè)試可執(zhí)行 JAR,您可以運(yùn)行以下命令:
java -jartarget/hello-autonomousdb-0.0.1-SNAPSHOT.jar--spring.config.location=/path/configuration/properties/
選項(xiàng) 2:構(gòu)建 OCI 映像
我們可以使用Cloud Native Buildpacks從可執(zhí)行 jar 文件創(chuàng)建 OCI 映像。您可以使用build-image目標(biāo)構(gòu)建鏡像。Docker 映像部署到Container Registry。要?jiǎng)?chuàng)建 OCI docker 映像,請(qǐng)運(yùn)行以下命令:
mvn clean spring-boot:build-image
選項(xiàng) 3:使用 GraalVM 和Spring Native 構(gòu)建原生鏡像
這一步基于Spring Native和GraalVM。為了創(chuàng)建原生鏡像,該項(xiàng)目依賴(lài)于 Spring Native項(xiàng)目和Cloud Native Buildpacks。Docker映像部署到Container Registry。
運(yùn)行以下命令:
mvn -Pnative-image cleanspring-boot:build-image
在您的 Oracle 云租戶(hù)中部署示例應(yīng)用程序
先決條件
已安裝 kubectl
已安裝 Docker CLI
已安裝 Terraform 0.12.16+
已安裝 OCI CLI
已安裝 Maven 3
使用 Terraform 配置基礎(chǔ)設(shè)施
所有 Terraform 腳本都位于terraform文件夾中。這些腳本創(chuàng)建虛擬云網(wǎng)絡(luò) (VCN)、子網(wǎng)、安全列表、OKE、自治事務(wù)處理和OCI Vault。文件variables.tf中提供了以下變量的示例值。
然后使用Terraform腳本創(chuàng)建您的基礎(chǔ)設(shè)施。您可以運(yùn)行以下命令或使用OCI 資源管理器來(lái)創(chuàng)建您的基礎(chǔ)設(shè)施:
terraform init
terraform plan
terraform apply
使用 buildpacks將應(yīng)用程序部署到Kubernetes
所有部署腳本都在文件夾deployment中可用。這些腳本允許您完成以下步驟:
下載數(shù)據(jù)庫(kù)錢(qián)包并創(chuàng)建一個(gè)包含自治數(shù)據(jù)庫(kù)錢(qián)包的Kubernetes(OKE) Secret
創(chuàng)建 OCI容器注冊(cè)表密鑰,以便OKE可以拉取示例應(yīng)用程序容器映像的最新版本
創(chuàng)建一個(gè)包含Spring Boot應(yīng)用程序*.yml 配置的配置映射
將Spring Boot應(yīng)用程序部署到Kubernetes集群
結(jié) 論
我們相信本指南可以幫助您簡(jiǎn)化和增強(qiáng)在Spring Boot應(yīng)用程序中處理自治數(shù)據(jù)庫(kù)憑據(jù)的方式。OCI Vault的亮點(diǎn)加強(qiáng)了內(nèi)置于Oracle云基礎(chǔ)設(shè)施中的增強(qiáng)安全機(jī)制。
上一篇: 什么是畢昇編譯器