发布时间: 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认证书有用吗