From 98a4f14317a1c33cc16611844823e24deddc21f4 Mon Sep 17 00:00:00 2001 From: Tycen Hopkins Date: Wed, 12 Feb 2025 15:39:53 -0800 Subject: [PATCH 1/3] Clean up README, fix lab titles, and remove Microservices from app names --- README.md | 132 +----------------- _config.yml | 6 +- docs/01_lab_plan/0101.md | 2 +- docs/01_lab_plan/0102.md | 2 +- docs/01_lab_plan/01_openlab_plan.md | 4 +- docs/02_lab_launch/0204.md | 2 +- docs/02_lab_launch/0209.md | 2 +- docs/02_lab_launch/02_openlab_setup_aca.md | 2 +- docs/03_lab_monitor/0306.md | 2 +- docs/04_lab_secrets/0404.md | 2 +- docs/04_lab_secrets/04_openlab_secrets_aca.md | 2 +- docs/05_lab_openai/0504.md | 2 +- docs/05_lab_openai/05_openai.md | 8 +- docs/05_lab_openai/05_openlab_openai_aca.md | 2 +- index.md | 4 +- install.md | 2 +- src/README.md | 4 +- 17 files changed, 29 insertions(+), 151 deletions(-) diff --git a/README.md b/README.md index 5b762318..0050fb2c 100644 --- a/README.md +++ b/README.md @@ -1,138 +1,16 @@ -# Deploying and running Java Applications with AI in Azure Container Apps +# Java and AI [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/Azure-Samples/java-on-aca) [![Open in Dev Containers](https://img.shields.io/static/v1?style=for-the-badge&label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/azure-samples/java-on-aca) -This project shows how to deploy the [Spring Petclinic Microservices](https://github.com/Azure-Samples/java-on-aca/tree/main/src) application with OpenAI to [Azure Container Apps](https://learn.microsoft.com/azure/container-apps/overview) and integrate it with additional Azure services, also some samples for Azure Container Apps features. +This repository supports the [Java and AI](https://azure-samples.github.io/java-on-aca/) lab series. In these labs, you'll walk through deploying the sample [Spring Petclinic](https://github.com/Azure-Samples/java-on-aca/tree/main/src) application to an [Azure Container Apps](https://learn.microsoft.com/azure/container-apps/overview) environment while also integrating additional Azure services, such as [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview). -[Features](#features) • [Gettting Started](#getting-started) • [Guidance](#guidance) +Please visit the [**Java and AI lab series documentation**](https://azure-samples.github.io/java-on-aca/) for information on lab requirements, how to prepare your development environment, and instruction on running these labs. ![main page](./images/api-gateway-main.png) ## Important Security Notice -This template, the application code and configuration it contains, has been built to showcase Microsoft Azure specific services and tools. We strongly advise our customers not to make this code part of their production environments without implementing or enabling additional security features. +The application code and configuration files contained in this repo are for educational purposes, and were built specifically to showcase specific Microsoft Azure services and tools. You should not use this code in your production environments without thoroughly reviewing it and implementing or enabling additional security features. -For a more comprehensive list of best practices and security recommendations for Intelligent Applications, visit [Azure security best practices and patterns](https://learn.microsoft.com/en-us/azure/security/fundamentals/best-practices-and-patterns), [Azure security baseline for Intelligent Recommendations](https://learn.microsoft.com/en-us/security/benchmark/azure/baselines/intelligent-recommendations-security-baseline) - -## Features - -The following technologies are part of the project: - -* Java 17 -* Maven -* [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/) -* [Azure Developer CLI (azd)](https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/) - -This project provides the following features: - -* A [Spring Petclinic Microservices](https://github.com/Azure-Samples/java-on-aca/tree/main/src) deployment on Azure Container Apps with AI chat agent. -* Azure Container Apps java components ([eureka server](https://learn.microsoft.com/en-us/azure/container-apps/java-eureka-server-usage) /[config server](https://learn.microsoft.com/en-us/azure/container-apps/java-config-server-usage) / [spring boot admin](https://learn.microsoft.com/en-us/azure/container-apps/java-admin-for-spring-usage)) support. -* [Bicep files](https://docs.microsoft.com/azure/azure-resource-manager/bicep/) for provisioning Azure resources, including Azure OpenAI, Azure Container Apps, Azure Database for MySQL - Flexible Server, Azure Container Registry, Azure Log Analytics, Azure Application Insights and RBAC roles. See [Deploy to Azure automatically](https://azure-samples.github.io/java-on-aca/docs/06_lab_automation/06_openlab_automation.html). -* Best practices to build [more secure](https://azure-samples.github.io/java-on-aca/docs/07_lab_security/07_openlab_security_aca.html), [more reliable](https://azure-samples.github.io/java-on-aca/docs/10_lab_reliable_application/10_reliable_java_aca.html) and [more flexible](https://azure-samples.github.io/java-on-aca/docs/11_lab_scale/11_openlab_scale_aca.html) java apps on Azure Container Apps. -* AI chat agent to take advantage of large-scale, generative AI models with deep understandings of language and code to enable new reasoning and comprehension capabilities. See [Integrate with Azure OpenAI](https://azure-samples.github.io/java-on-aca/docs/05_lab_openai/05_openlab_openai_aca.html) - -![Screenshot of the chat app](./images/acalab-ai-chat.png) - -### Architecture Diagram - -![Architecture Diagram](./images/acalab6.png) - -## Getting Started - -You have a few options for getting started with this template. - -* [GitHub codespace](#github-codespaces) -* [Visual Studio Code with remote containers option](#vs-code-dev-containers) -* [Local Development](#local-environment) - -All the steps of this lab have been tested in the GitHub CodeSpace. This is the preferred option for running this lab! - -### GitHub Codespaces - -* Prepare the environment following the steps in [Using a GitHub codespace](https://azure-samples.github.io/java-on-aca/install.html#using-a-github-codespace) -* Continue with [deploying steps](#deploying) - -### VS Code Dev Containers - -* Prepare the environment following the steps in [Using Visual Studio Code with remote containers](https://azure-samples.github.io/java-on-aca/install.html#using-a-github-codespace) -* Continue with [deploying steps](#deploying) - -### Local Environment - -* Prepare the environment following the steps in [Install all the tools on your local machine](https://azure-samples.github.io/java-on-aca/install.html#install-all-the-tools-on-your-local-machine) -* Continue with [deploying steps](#deploying) - -### Deploying - -Once you've opened the project in [Codespaces](#github-codespaces), in [Dev Containers](#vs-code-dev-containers), or [locally](#local-environment), you can deploy it to Azure. - -* Your Azure account must have `Microsoft.Authorization/roleAssignments/write` permissions, such as [Role Based Access Control Administrator](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#role-based-access-control-administrator-preview), [User Access Administrator](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#user-access-administrator), or [Owner](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#owner). If you don't have subscription-level permissions, you must be granted [RBAC](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#role-based-access-control-administrator-preview) for an existing resource group and [deploy to that existing group](./docs/06_lab_automation/0604.md). -* Your Azure account also needs `Microsoft.Resources/deployments/write` permissions on the subscription level. - -Suggested: Both **Contributor** and **User Access Administrator** roles on the subscription. - -1. Login to Azure - - `azd auth login` - - `az login` - -1. Provision and deploy all the resources: - - `azd up` - - It will prompt you to provide an `azd` environment name (like "java-ai"), select a subscription from your Azure account, and select a [location where OpenAI is available](#region-availability) (like "eastus2"). Then it will provision the resources in your account and deploy the latest code. If you get an error or timeout with deployment, changing the location can help, as there may be availability constraints for the OpenAI resource. - -1. When azd has finished deploying, visit the api-gateway url and begin your experience on AI java apps. - - ```text - INFO: Deploy finish succeed! - INFO: Api Gateway App url: https://api-gateway...azurecontainerapps.io - INFO: Spring Boot Admin url: https://springbootadmin-azure-java.ext...azurecontainerapps.io - ``` - -1. When you've made any changes to the app code, you can just run: - - - `azd deploy` for all services - - - `azd deploy -n ` for single service - - - -## Guidance - -### Prerequisites - -For running this lab you will need: - -* A GitHub account -* An Azure Subscription - -### Region Availability - -1. This template uses [Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) deployment mododules **gpt-4o** and **text-embedding-ada-002** which may not be available in all Azure regions. Check for [up-to-date region availability](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#standard-deployment-model-availability) and select a region during deployment accordingly - -1. The template uses [Azure Database for MySQL - Flexible Server](https://learn.microsoft.com/en-us/azure/mysql/flexible-server/overview) version 8.0 to store data. You may select a region suite for this service. Or create a database instance manually then [Reuse existing service](https://azure-samples.github.io/java-on-aca/docs/06_lab_automation/0604.html). - - * We recommend using **East US**, **East US 2**, **North Central US**, **Sweden Central**. - -### Costs - -You can estimate the cost of this project's architecture with [Azure's pricing calculator](https://azure.microsoft.com/pricing/calculator/) - -* Azure Container Apps - [Consumption](https://azure.microsoft.com/en-us/pricing/details/container-apps/) -* Azure Database for MySQL - [Flexible Server](https://azure.microsoft.com/en-us/pricing/details/mysql/) -* Azure OpenAI Service - [Standard](https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/) -* Azure Monitor - [Analytics Logs](https://azure.microsoft.com/en-us/pricing/details/monitor/) - -### Security - -This template has [Managed Identity](https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/overview) built in to eliminate the need for developers to manage these credentials. - -Applications can use managed identities to obtain Microsoft Entra tokens without having to manage any credentials. Additionally, we have added a [GitHub Action tool](https://github.com/microsoft/security-devops-action) that scans the infrastructure-as-code files and generates a report containing any detected issues. To ensure best practices in your repo we recommend anyone creating solutions based on our templates ensure that the [Github secret scanning](https://docs.github.com/code-security/secret-scanning/about-secret-scanning) setting is enabled in your repos. - -## Resources - -* Go to the lab for more details [Deploying and running Java Applications with AI in Azure Container Apps](https://azure-samples.github.io/java-on-aca/) -* Full installation guidance and options for running this lab can be found in the [Installation instructions](install.md). \ No newline at end of file +For a more comprehensive list of best practices and security recommendations for building intelligent applications on Azure, review the [Azure security best practices and patterns](https://learn.microsoft.com/en-us/azure/security/fundamentals/best-practices-and-patterns) and [Azure security baseline for Intelligent Recommendations](https://learn.microsoft.com/en-us/security/benchmark/azure/baselines/intelligent-recommendations-security-baseline) guides. diff --git a/_config.yml b/_config.yml index ca4b6d4e..166dfa7e 100644 --- a/_config.yml +++ b/_config.yml @@ -1,11 +1,11 @@ -title: Java on ACA -description: This lab walks you through the creation of a Java application on Azure Container Apps integrated with multiple Azure services +title: Java and AI +description: This lab walks you through the creation of an intelligent Java application on Azure Container Apps integrated with multiple Azure services. theme: just-the-docs # url: https://Azure-Samples.github.io/java-on-aca aux_links: - "Java on ACA lab on GitHub": + "Java and AI lab on GitHub": - "https://github.com/Azure-Samples/java-on-aca" diff --git a/docs/01_lab_plan/0101.md b/docs/01_lab_plan/0101.md index 8b6a384c..7d954fbd 100644 --- a/docs/01_lab_plan/0101.md +++ b/docs/01_lab_plan/0101.md @@ -11,7 +11,7 @@ Your first step is to familiarize yourself with the existing [Spring Petclinic M ## Step-by-step guidance -To start, you’ll learn about the Spring Petclinic Microservices workload. +To start, you’ll learn about the Spring Petclinic workload. 1. On your lab computer, open a web browser, go to [GitHub](https://github.com), and sign in to your GitHub account. If you don’t have a GitHub account, create one (go to [Join GitHub](https://github.com/join), and follow the instructions at [Signing up for a new GitHub account](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account)). 1. Go to the [source folder of this lab’s GitHub repo](https://github.com/Azure-Samples/java-on-aca/tree/main/src), and review the **README.md file**. diff --git a/docs/01_lab_plan/0102.md b/docs/01_lab_plan/0102.md index 7b575cc1..9147ae69 100644 --- a/docs/01_lab_plan/0102.md +++ b/docs/01_lab_plan/0102.md @@ -7,7 +7,7 @@ parent: 'Lab 1: Plan your application deployment' # Understand the Azure resources that you’ll use -Now that you’ve familiarized yourself with the example Spring Petclinic Microservices workload that you’ll be deploying, you can explore the Azure services that you’ll use to host it. +Now that you’ve familiarized yourself with the example Spring Petclinic workload that you’ll be deploying, you can explore the Azure services that you’ll use to host it. ## Azure Container Apps diff --git a/docs/01_lab_plan/01_openlab_plan.md b/docs/01_lab_plan/01_openlab_plan.md index 1244c9a6..bae4708b 100644 --- a/docs/01_lab_plan/01_openlab_plan.md +++ b/docs/01_lab_plan/01_openlab_plan.md @@ -9,9 +9,9 @@ has_children: true ## Introduction -Before you can deploy the example Spring Petclinic Microservices workload to Azure, you need to determine what application components need to run on Azure, which Azure resources you’ll use to host these components, and what tools you’ll need to perform the deployment. +Before you can deploy the example Spring Petclinic workload to Azure, you need to determine what application components need to run on Azure, which Azure resources you’ll use to host these components, and what tools you’ll need to perform the deployment. -In this first lab session, you’ll explore the sample application code and configure your development environment. You’ll also evaluate the application’s technical and operational requirements to determine the best hosting, storage, and organizational approach for moving the Spring Petclinic Microservices workload to Azure. +In this first lab session, you’ll explore the sample application code and configure your development environment. You’ll also evaluate the application’s technical and operational requirements to determine the best hosting, storage, and organizational approach for moving the Spring Petclinic workload to Azure. ## What you’ll cover diff --git a/docs/02_lab_launch/0204.md b/docs/02_lab_launch/0204.md index 7ad31d9d..2a5b35e1 100644 --- a/docs/02_lab_launch/0204.md +++ b/docs/02_lab_launch/0204.md @@ -9,7 +9,7 @@ parent: 'Lab 2: Deploy applications to Azure Container Apps' You’ve set up the compute and database services that will host your applications and store your application data. The next step is to set up the application configuration settings that allow your Spring Boot application to connect with the database you just created. -The example Spring Petclinic Microservices workload includes a config server that the workload’s various component applications will all use for this purpose. In Azure Container Apps, we can also make use of the built-in config server component, which you will use in one of the following modules. +The example Spring Petclinic workload includes a config server that the workload’s various component applications will all use for this purpose. In Azure Container Apps, we can also make use of the built-in config server component, which you will use in one of the following modules. ## Step-by-step guidance diff --git a/docs/02_lab_launch/0209.md b/docs/02_lab_launch/0209.md index d5f58cf2..2e71bf7e 100644 --- a/docs/02_lab_launch/0209.md +++ b/docs/02_lab_launch/0209.md @@ -7,7 +7,7 @@ parent: 'Lab 2: Deploy applications to Azure Container Apps' # Review -In this lab, you deployed the Spring Petclinic Microservices workload to Azure. +In this lab, you deployed the Spring Petclinic workload to Azure. The following image should reflect your application architecture after a successful deployment. diff --git a/docs/02_lab_launch/02_openlab_setup_aca.md b/docs/02_lab_launch/02_openlab_setup_aca.md index fb4731da..2b38355c 100644 --- a/docs/02_lab_launch/02_openlab_setup_aca.md +++ b/docs/02_lab_launch/02_openlab_setup_aca.md @@ -9,7 +9,7 @@ has_children: true ## Introduction -In the previous lab, you reviewed the sample Spring Petclinic Microservices workload that you’ll deploy, examined the Azure services that the component Spring applications will rely on, and made sure that the necessary tooling is configured and ready in your development environment. Now it’s time to deploy the workload to an Azure Container Apps instance. +In the previous lab, you reviewed the sample Spring Petclinic workload that you’ll deploy, examined the Azure services that the component Spring applications will rely on, and made sure that the necessary tooling is configured and ready in your development environment. Now it’s time to deploy the workload to an Azure Container Apps instance. ## What you’ll cover diff --git a/docs/03_lab_monitor/0306.md b/docs/03_lab_monitor/0306.md index 0eea2000..ca8e9d05 100644 --- a/docs/03_lab_monitor/0306.md +++ b/docs/03_lab_monitor/0306.md @@ -7,7 +7,7 @@ parent: 'Lab 3: Enable monitoring' # Review -In this lab, you added monitoring to the example Spring Petclinic Microservices workload that you deployed in the previous lab. +In this lab, you added monitoring to the example Spring Petclinic workload that you deployed in the previous lab. As part of this process, you: diff --git a/docs/04_lab_secrets/0404.md b/docs/04_lab_secrets/0404.md index e8356364..ddf3e1d8 100644 --- a/docs/04_lab_secrets/0404.md +++ b/docs/04_lab_secrets/0404.md @@ -7,7 +7,7 @@ parent: 'Lab 4: Connect to a database with managed identity' # Review -In this lab, you secured your database connection secrets for your Spring Petclinic Microservices workload, without needing to make application code changes, by using Azure Service Connector and managed identities. +In this lab, you secured your database connection secrets for your Spring Petclinic workload, without needing to make application code changes, by using Azure Service Connector and managed identities. As part of this process, you: diff --git a/docs/04_lab_secrets/04_openlab_secrets_aca.md b/docs/04_lab_secrets/04_openlab_secrets_aca.md index 8f38028f..ca91e83a 100644 --- a/docs/04_lab_secrets/04_openlab_secrets_aca.md +++ b/docs/04_lab_secrets/04_openlab_secrets_aca.md @@ -9,7 +9,7 @@ has_children: true ## Introduction -You now have your copy of the Spring Petclinic Microservices workload running in Azure. However, your applications use secrets, such as your database connection string, which depend on passwords that are stored in your configuration repository. +You now have your copy of the Spring Petclinic workload running in Azure. However, your applications use secrets, such as your database connection string, which depend on passwords that are stored in your configuration repository. Passwords are insecure. They can be stolen, guessed, or found via brute force attacks, so protecting your passwords can be a major challenge. You want to find a way to connect to your database without having to deal with this potential vulnerability. diff --git a/docs/05_lab_openai/0504.md b/docs/05_lab_openai/0504.md index 2295975f..093c2527 100644 --- a/docs/05_lab_openai/0504.md +++ b/docs/05_lab_openai/0504.md @@ -7,7 +7,7 @@ parent: 'Lab 5: Integrate Azure OpenAI Service with your apps' # Review -In this lab, you learned how to build a Spring application-based chat service powered by Azure OpenAI, and you learned how to integrate it into the sample Spring Petclinic Microservices workload. +In this lab, you learned how to build a Spring application-based chat service powered by Azure OpenAI, and you learned how to integrate it into the sample Spring Petclinic workload. The following diagram should reflect the current state of the deployed application. diff --git a/docs/05_lab_openai/05_openai.md b/docs/05_lab_openai/05_openai.md index a66e28c5..8d611f5c 100644 --- a/docs/05_lab_openai/05_openai.md +++ b/docs/05_lab_openai/05_openai.md @@ -7,9 +7,9 @@ parent: 'Lab 5: Integrate Azure OpenAI Service with your apps' # Create an AI application from scratch for the Petclinic workload -In this section, you’ll learn how to create an AI-enabled Java application using Azure OpenAI and Spring AI. You’ll then configure this application to answer questions about the sample Spring Petclinic Microservices application that you’ve deployed and configured in previous labs. +In this section, you’ll learn how to create an AI-enabled Java application using Azure OpenAI and Spring AI. You’ll then configure this application to answer questions about the sample Spring Petclinic application that you’ve deployed and configured in previous labs. -You’ll start by creating a new Spring Boot service application that connects with your Azure OpenAI instance. Then you'll use this application to implement a simple chatbot that takes advantage of the Azure OpenAI GPT-4o model, learning how to seamlessly integrate AI into your existing Spring Petclinic Microservices application as you go. +You’ll start by creating a new Spring Boot service application that connects with your Azure OpenAI instance. Then you'll use this application to implement a simple chatbot that takes advantage of the Azure OpenAI GPT-4o model, learning how to seamlessly integrate AI into your existing Spring Petclinic application as you go. ## Prerequisites: @@ -32,7 +32,7 @@ Your first step in this process is to create a new Spring Boot application: - **Lombok** (`lombok`). A Java annotation library, which helps to reduce boilerplate code. - **Azure OpenAI** (`spring-ai-azure-openai`). Spring AI support for Azure OpenAI. - You’ll also need to provide additional settings, such as project type, Java code details, and naming to match the structure of the existing Spring Petclinic Microservices application. + You’ll also need to provide additional settings, such as project type, Java code details, and naming to match the structure of the existing Spring Petclinic application. To create the new Spring Boot application using these settings, in your command-line window, go to the `src` folder of your local code repo and run the following command: @@ -146,7 +146,7 @@ Now that your project is updated with the Copilot-generated code, you’re ready ### Deploy your new `chat-service` to your Container Apps environment -With your `chat-service` app built and working, you’re ready to deploy it to your Container Apps environment alongside the other components of the Spring Petclinic Microservices application. +With your `chat-service` app built and working, you’re ready to deploy it to your Container Apps environment alongside the other components of the Spring Petclinic application. 1. In your command-line environment, run the following command to deploy the app: diff --git a/docs/05_lab_openai/05_openlab_openai_aca.md b/docs/05_lab_openai/05_openlab_openai_aca.md index 9f8a97a3..bab94da6 100644 --- a/docs/05_lab_openai/05_openlab_openai_aca.md +++ b/docs/05_lab_openai/05_openlab_openai_aca.md @@ -11,7 +11,7 @@ has_children: true [Azure OpenAI Service](https://learn.microsoft.com/azure/ai-services/openai/overview) is a cloud-based service that provides access to the powerful AI models of OpenAI. With Azure OpenAI, you can easily add large-scale, generative AI capabilities to your applications, integrating powerful interactive reasoning, natural language processing, and code generation capabilities with minimal additional effort. -In this lab, you’ll extend the Spring Petclinic Microservices application that you deployed in our previous sessions by building and integrating an intelligent chat agent application powered by Azure OpenAI. +In this lab, you’ll extend the Spring Petclinic application that you deployed in our previous sessions by building and integrating an intelligent chat agent application powered by Azure OpenAI. ## What you’ll cover diff --git a/index.md b/index.md index c31dc1a3..adaa03cb 100644 --- a/index.md +++ b/index.md @@ -4,9 +4,9 @@ layout: home nav_order: 1 --- -# Lab: Deploy and run Java applications on Azure Container Apps +# Lab: Java and AI -In this lab, you’ll learn how to deploy Java applications to [Azure Container Apps](https://learn.microsoft.com/azure/container-apps/overview) and integrate them with additional Azure services. You’ll also deploy a copy of the Spring Petclinic Microservices sample workload to find out how Azure Container Apps supports Azure Spring Apps that use managed components. +In this lab, you’ll learn how to deploy intelligent Java applications to [Azure Container Apps](https://learn.microsoft.com/azure/container-apps/overview) and integrate them with additional Azure services. You’ll also deploy a copy of the Spring Petclinic sample workload to find out how Azure Container Apps supports Azure Spring Apps that use managed components. ## What you’ll cover diff --git a/install.md b/install.md index 4b648a32..46f98ae9 100644 --- a/install.md +++ b/install.md @@ -8,7 +8,7 @@ nav_order: 2 {: .no_toc } -Before you begin working through the lab, you’ll need to make sure that you have all the required tools installed and configured in your development environment. Additionally, in this same environment, before you start the process of deploying to Azure, you’ll need to have cloned a copy of the example Spring Petclinic Microservices workload code from the GitHub repo. +Before you begin working through the lab, you’ll need to make sure that you have all the required tools installed and configured in your development environment. Additionally, in this same environment, before you start the process of deploying to Azure, you’ll need to have cloned a copy of the example Spring Petclinic workload code from the GitHub repo. There are three options for setting up your development environment. Choose *only one* of the following: diff --git a/src/README.md b/src/README.md index 025a7c85..01cdb94d 100644 --- a/src/README.md +++ b/src/README.md @@ -52,12 +52,12 @@ Each of the java based applications is started with the `chaos-monkey` profile i You can then access petclinic here: http://localhost:8080/ -![Spring Petclinic Microservices screenshot](docs/application-screenshot.png) +![Spring Petclinic screenshot](docs/application-screenshot.png) **Architecture diagram of the Spring Petclinic Microservices** -![Spring Petclinic Microservices architecture](docs/microservices-architecture-diagram.jpg) +![Spring Petclinic architecture](docs/microservices-architecture-diagram.jpg) ## In case you find a bug/suggested improvement for Spring Petclinic Microservices From 07f56395e170984ca1a8f038991c35614047d497 Mon Sep 17 00:00:00 2001 From: Tycen Hopkins Date: Wed, 12 Feb 2025 16:03:34 -0800 Subject: [PATCH 2/3] Additional "Microservices" reference cleanup in md files. --- docs/01_lab_plan/0101.md | 2 +- docs/01_lab_plan/0102.md | 2 +- index.md | 2 +- src/README.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/01_lab_plan/0101.md b/docs/01_lab_plan/0101.md index 7d954fbd..54eeba22 100644 --- a/docs/01_lab_plan/0101.md +++ b/docs/01_lab_plan/0101.md @@ -7,7 +7,7 @@ parent: 'Lab 1: Plan your application deployment' # Examine the application components based on the GitHub repository information -Your first step is to familiarize yourself with the existing [Spring Petclinic Microservices](https://github.com/spring-petclinic/spring-petclinic-microservices) workload, its components, and the GitHub repository where its source code is located. +Your first step is to familiarize yourself with the existing [Spring Petclinic](https://github.com/spring-petclinic/spring-petclinic-microservices) workload, its components, and the GitHub repository where its source code is located. ## Step-by-step guidance diff --git a/docs/01_lab_plan/0102.md b/docs/01_lab_plan/0102.md index 9147ae69..2be788b4 100644 --- a/docs/01_lab_plan/0102.md +++ b/docs/01_lab_plan/0102.md @@ -11,7 +11,7 @@ Now that you’ve familiarized yourself with the example Spring Petclinic worklo ## Azure Container Apps -For this deployment, we’re going to use [Azure Container Apps](https://learn.microsoft.com/azure/container-apps/overview) to run the [Spring Petclinic Microservices](https://github.com/spring-petclinic/spring-petclinic-microservices) application. Azure Container Apps is a good choice in this scenario because: +For this deployment, we’re going to use [Azure Container Apps](https://learn.microsoft.com/azure/container-apps/overview) to run the [Spring Petclinic](https://github.com/spring-petclinic/spring-petclinic-microservices) application. Azure Container Apps is a good choice in this scenario because: - It’s a serverless hosting platform that allows you to maintain less infrastructure and save costs while running containerized applications. This means that instead of worrying about server configuration, container orchestration, and deployment details, Container Apps provides all the up-to-date server resources required to keep your applications stable and secure. - It supports native Spring Boot applications and Spring Boot–managed components that we’ll use in our app, like [Eureka Server](https://learn.microsoft.com/azure/container-apps/java-eureka-server?tabs=azure-cli), [Config Server](https://learn.microsoft.com/azure/container-apps/java-config-server?tabs=azure-cli), and [Spring Boot Admin](https://learn.microsoft.com/azure/container-apps/java-admin?tabs=azure-cli). diff --git a/index.md b/index.md index adaa03cb..d331d6be 100644 --- a/index.md +++ b/index.md @@ -13,7 +13,7 @@ In this lab, you’ll learn how to deploy intelligent Java applications to [Azur As you work through the lab modules, you’ll explore the following: * A general introduction to the sample workload, the Spring applications that it’s composed of, and the related Azure services and resources you’ll use to deploy it -* A walk-through on how to deploy the [Spring Petclinic Microservices](https://github.com/spring-petclinic/spring-petclinic-microservices) workload to Azure Container Apps +* A walk-through on how to deploy the [Spring Petclinic](https://github.com/spring-petclinic/spring-petclinic-microservices) workload to Azure Container Apps * Detailed steps on enabling monitoring, end-to-end tracing, and Grafana dashboards for the deployed sample application * Instructions on how to securely connect applications and services by using managed identities * A walk-through on how to build intelligent Azure Spring Apps with Azure OpenAI Service diff --git a/src/README.md b/src/README.md index 01cdb94d..95cb40f9 100644 --- a/src/README.md +++ b/src/README.md @@ -55,12 +55,12 @@ You can then access petclinic here: http://localhost:8080/ ![Spring Petclinic screenshot](docs/application-screenshot.png) -**Architecture diagram of the Spring Petclinic Microservices** +**Architecture diagram of the Spring Petclinic** ![Spring Petclinic architecture](docs/microservices-architecture-diagram.jpg) -## In case you find a bug/suggested improvement for Spring Petclinic Microservices +## In case you find a bug/suggested improvement for Spring Petclinic Our issue tracker is available here: https://github.com/spring-petclinic/spring-petclinic-microservices/issues From b3b03adf55a89edc8411952e250902c7d1298d51 Mon Sep 17 00:00:00 2001 From: Tycen Hopkins Date: Wed, 12 Feb 2025 17:44:54 -0800 Subject: [PATCH 3/3] Remove hidden .md files from Jekyll search. --- docs/05_lab_openai/0502.md | 1 + docs/05_lab_openai/05_openai_existing.md | 1 + docs/06_lab_automation/0601.md | 1 + docs/06_lab_automation/0602.md | 1 + docs/06_lab_automation/0603.md | 1 + docs/06_lab_automation/0604.md | 1 + docs/06_lab_automation/0605.md | 1 + docs/06_lab_automation/06_openlab_automation.md | 1 + docs/07_lab_security/0701.md | 1 + docs/07_lab_security/0702.md | 1 + docs/07_lab_security/0703.md | 1 + docs/07_lab_security/0704.md | 1 + docs/07_lab_security/0705.md | 1 + docs/07_lab_security/0706.md | 1 + docs/07_lab_security/0707.md | 1 + docs/07_lab_security/0708.md | 1 + docs/07_lab_security/07_openlab_security_aca.md | 2 ++ docs/08_lab_private/0801.md | 1 + docs/08_lab_private/0802.md | 1 + docs/08_lab_private/0803.md | 1 + docs/08_lab_private/0804.md | 1 + docs/08_lab_private/08_openlab_private_endpoints_aca.md | 1 + docs/09_lab_messaging/0901.md | 1 + docs/09_lab_messaging/0902.md | 1 + docs/09_lab_messaging/0903.md | 1 + docs/09_lab_messaging/0904.md | 1 + docs/09_lab_messaging/0905.md | 1 + docs/09_lab_messaging/09_openlab_messaging_aca.md | 1 + docs/10_lab_reliable_application/1001.md | 1 + docs/10_lab_reliable_application/1002.md | 1 + docs/10_lab_reliable_application/1003.md | 1 + docs/10_lab_reliable_application/10_reliable_java_aca.md | 1 + docs/11_lab_scale/1101.md | 1 + docs/11_lab_scale/1102.md | 1 + docs/11_lab_scale/1103.md | 1 + docs/11_lab_scale/11_openlab_scale_aca.md | 1 + more.md | 1 + 37 files changed, 38 insertions(+) diff --git a/docs/05_lab_openai/0502.md b/docs/05_lab_openai/0502.md index 9d03078c..c66d82ae 100644 --- a/docs/05_lab_openai/0502.md +++ b/docs/05_lab_openai/0502.md @@ -3,6 +3,7 @@ title: '2. Deploy sample AI application chat-agent' layout: default nav_order: 2 nav_exclude: true +search_exclude: true parent: 'Lab 5: Integrate with Azure OpenAI' --- diff --git a/docs/05_lab_openai/05_openai_existing.md b/docs/05_lab_openai/05_openai_existing.md index 38ae5e12..9ba7c3a5 100644 --- a/docs/05_lab_openai/05_openai_existing.md +++ b/docs/05_lab_openai/05_openai_existing.md @@ -3,6 +3,7 @@ title: 'Integrate AI to existing project' layout: default nav_order: 4 nav_exclude: true +search_exclude: true parent: 'Lab 5: Integrate with Azure OpenAI' --- diff --git a/docs/06_lab_automation/0601.md b/docs/06_lab_automation/0601.md index d2a97b67..650f119d 100644 --- a/docs/06_lab_automation/0601.md +++ b/docs/06_lab_automation/0601.md @@ -3,6 +3,7 @@ title: '1. Prepare the environment' layout: default nav_order: 1 parent: 'Deploy to Azure automatically' +search_exclude: true --- # 1. Prepare the environment diff --git a/docs/06_lab_automation/0602.md b/docs/06_lab_automation/0602.md index 4587c5ca..fb0ab077 100644 --- a/docs/06_lab_automation/0602.md +++ b/docs/06_lab_automation/0602.md @@ -3,6 +3,7 @@ title: '2. Run Azd' layout: default nav_order: 2 parent: 'Deploy to Azure automatically' +search_exclude: true --- # 2. Run Azd Command to deploy diff --git a/docs/06_lab_automation/0603.md b/docs/06_lab_automation/0603.md index 2c794c84..4d4897a7 100644 --- a/docs/06_lab_automation/0603.md +++ b/docs/06_lab_automation/0603.md @@ -3,6 +3,7 @@ title: '3. Triage the issues' layout: default nav_order: 3 parent: 'Deploy to Azure automatically' +search_exclude: true --- # 3. Triage the issues diff --git a/docs/06_lab_automation/0604.md b/docs/06_lab_automation/0604.md index 17481d58..1ba52e01 100644 --- a/docs/06_lab_automation/0604.md +++ b/docs/06_lab_automation/0604.md @@ -3,6 +3,7 @@ title: '4. Reuse existing resource' layout: default nav_order: 4 parent: 'Deploy to Azure automatically' +search_exclude: true --- # 4. Reuse existing resource diff --git a/docs/06_lab_automation/0605.md b/docs/06_lab_automation/0605.md index 566654da..26da8f89 100644 --- a/docs/06_lab_automation/0605.md +++ b/docs/06_lab_automation/0605.md @@ -3,6 +3,7 @@ title: '5. Cleanup lab environment' layout: default nav_order: 5 parent: 'Deploy to Azure automatically' +search_exclude: true --- # 5. Cleanup lab environment diff --git a/docs/06_lab_automation/06_openlab_automation.md b/docs/06_lab_automation/06_openlab_automation.md index e2833650..811ebea0 100644 --- a/docs/06_lab_automation/06_openlab_automation.md +++ b/docs/06_lab_automation/06_openlab_automation.md @@ -4,6 +4,7 @@ layout: default parent: 'More topics' nav_order: 10 has_children: true +search_exclude: true --- # Deploy to Azure automatically diff --git a/docs/07_lab_security/0701.md b/docs/07_lab_security/0701.md index 58d4101b..faa3ac96 100644 --- a/docs/07_lab_security/0701.md +++ b/docs/07_lab_security/0701.md @@ -3,6 +3,7 @@ title: '1. Networking resources' layout: default nav_order: 1 parent: 'Lab 7: Protect endpoints using Web Application Firewalls' +search_exclude: true --- # Create additional networking resources diff --git a/docs/07_lab_security/0702.md b/docs/07_lab_security/0702.md index 4e655cc1..56b7a184 100644 --- a/docs/07_lab_security/0702.md +++ b/docs/07_lab_security/0702.md @@ -3,6 +3,7 @@ title: '2. Create Key Vault' layout: default nav_order: 2 parent: 'Lab 7: Protect endpoints using Web Application Firewalls' +search_exclude: true --- # Create an Azure Key Vault service diff --git a/docs/07_lab_security/0703.md b/docs/07_lab_security/0703.md index 5f4e332a..b6dc6b3f 100644 --- a/docs/07_lab_security/0703.md +++ b/docs/07_lab_security/0703.md @@ -3,6 +3,7 @@ title: '3. Certificate' layout: default nav_order: 3 parent: 'Lab 7: Protect endpoints using Web Application Firewalls' +search_exclude: true --- # Acquire a certificate and add it to Key Vault diff --git a/docs/07_lab_security/0704.md b/docs/07_lab_security/0704.md index fea63840..c200a07a 100644 --- a/docs/07_lab_security/0704.md +++ b/docs/07_lab_security/0704.md @@ -3,6 +3,7 @@ title: '4. Internal Azure Container Environment' layout: default nav_order: 4 parent: 'Lab 7: Protect endpoints using Web Application Firewalls' +search_exclude: true --- # Redeploy your Azure Container Apps environment with internal networking diff --git a/docs/07_lab_security/0705.md b/docs/07_lab_security/0705.md index 7b98b275..11547a00 100644 --- a/docs/07_lab_security/0705.md +++ b/docs/07_lab_security/0705.md @@ -3,6 +3,7 @@ title: '5. Application Gateway' layout: default nav_order: 5 parent: 'Lab 7: Protect endpoints using Web Application Firewalls' +search_exclude: true --- # Create the Application Gateway resource diff --git a/docs/07_lab_security/0706.md b/docs/07_lab_security/0706.md index 7815764a..105816cf 100644 --- a/docs/07_lab_security/0706.md +++ b/docs/07_lab_security/0706.md @@ -3,6 +3,7 @@ title: '6. Access your app' layout: default nav_order: 6 parent: 'Lab 7: Protect endpoints using Web Application Firewalls' +search_exclude: true --- # Access the application by DNS name diff --git a/docs/07_lab_security/0707.md b/docs/07_lab_security/0707.md index 5d6760f5..418a3e0d 100644 --- a/docs/07_lab_security/0707.md +++ b/docs/07_lab_security/0707.md @@ -3,6 +3,7 @@ title: '7. WAF policy' layout: default nav_order: 7 parent: 'Lab 7: Protect endpoints using Web Application Firewalls' +search_exclude: true --- # Enable the WAF policy diff --git a/docs/07_lab_security/0708.md b/docs/07_lab_security/0708.md index f800e59e..db3ae41c 100644 --- a/docs/07_lab_security/0708.md +++ b/docs/07_lab_security/0708.md @@ -3,6 +3,7 @@ title: '8. Review' layout: default nav_order: 8 parent: 'Lab 7: Protect endpoints using Web Application Firewalls' +search_exclude: true --- # Review diff --git a/docs/07_lab_security/07_openlab_security_aca.md b/docs/07_lab_security/07_openlab_security_aca.md index 5db2b019..240d43d3 100644 --- a/docs/07_lab_security/07_openlab_security_aca.md +++ b/docs/07_lab_security/07_openlab_security_aca.md @@ -3,7 +3,9 @@ title: 'Lab 7: Protect endpoints using Web Application Firewalls' layout: default nav_order: 9 nav_exclude: true +search_exclude: true has_children: true +search_exclude: true --- # Lab 7: Protect endpoints using Web Application Firewall diff --git a/docs/08_lab_private/0801.md b/docs/08_lab_private/0801.md index 1ea7c3c5..03590649 100644 --- a/docs/08_lab_private/0801.md +++ b/docs/08_lab_private/0801.md @@ -3,6 +3,7 @@ title: '1. MySQL' layout: default nav_order: 1 parent: 'Lab 8: Secure MySQL database and Key Vault using a Private Endpoint' +search_exclude: true --- # Lock down the Azure Database for MySQL Flexible Server instance by using a private endpoint diff --git a/docs/08_lab_private/0802.md b/docs/08_lab_private/0802.md index 0f6ebfcf..68395baa 100644 --- a/docs/08_lab_private/0802.md +++ b/docs/08_lab_private/0802.md @@ -3,6 +3,7 @@ title: '2. Key Vault' layout: default nav_order: 2 parent: 'Lab 8: Secure MySQL database and Key Vault using a Private Endpoint' +search_exclude: true --- # Lock down the Key Vault instance by using a private endpoint diff --git a/docs/08_lab_private/0803.md b/docs/08_lab_private/0803.md index d59ad1a7..9b21ad04 100644 --- a/docs/08_lab_private/0803.md +++ b/docs/08_lab_private/0803.md @@ -3,6 +3,7 @@ title: '3. Test' layout: default nav_order: 3 parent: 'Lab 8: Secure MySQL database and Key Vault using a Private Endpoint' +search_exclude: true --- # Test your setup diff --git a/docs/08_lab_private/0804.md b/docs/08_lab_private/0804.md index b1b27f3d..8d19232e 100644 --- a/docs/08_lab_private/0804.md +++ b/docs/08_lab_private/0804.md @@ -3,6 +3,7 @@ title: '4. Review' layout: default nav_order: 4 parent: 'Lab 8: Secure MySQL database and Key Vault using a Private Endpoint' +search_exclude: true --- # Review diff --git a/docs/08_lab_private/08_openlab_private_endpoints_aca.md b/docs/08_lab_private/08_openlab_private_endpoints_aca.md index b1e1f297..220d377f 100644 --- a/docs/08_lab_private/08_openlab_private_endpoints_aca.md +++ b/docs/08_lab_private/08_openlab_private_endpoints_aca.md @@ -3,6 +3,7 @@ title: 'Lab 8: Secure MySQL database and Key Vault using a Private Endpoint' layout: default nav_order: 10 nav_exclude: true +search_exclude: true has_children: true --- diff --git a/docs/09_lab_messaging/0901.md b/docs/09_lab_messaging/0901.md index e4ccc51a..babf8606 100644 --- a/docs/09_lab_messaging/0901.md +++ b/docs/09_lab_messaging/0901.md @@ -3,6 +3,7 @@ title: '1. Create Service Bus' layout: default nav_order: 1 parent: 'Lab 9: Send messages between microservices' +search_exclude: true --- # Create an Azure Service Bus resource diff --git a/docs/09_lab_messaging/0902.md b/docs/09_lab_messaging/0902.md index ebd7c44d..287f6c6a 100644 --- a/docs/09_lab_messaging/0902.md +++ b/docs/09_lab_messaging/0902.md @@ -3,6 +3,7 @@ title: '2. Send messages' layout: default nav_order: 2 parent: 'Lab 9: Send messages between microservices' +search_exclude: true --- # Try out an existing microservice diff --git a/docs/09_lab_messaging/0903.md b/docs/09_lab_messaging/0903.md index fc461aaa..a10f034c 100644 --- a/docs/09_lab_messaging/0903.md +++ b/docs/09_lab_messaging/0903.md @@ -3,6 +3,7 @@ title: '3. Add dependencies' layout: default nav_order: 3 parent: 'Lab 9: Send messages between microservices' +search_exclude: true --- # Update an existing microservice to use the queues diff --git a/docs/09_lab_messaging/0904.md b/docs/09_lab_messaging/0904.md index e4843a39..713e0646 100644 --- a/docs/09_lab_messaging/0904.md +++ b/docs/09_lab_messaging/0904.md @@ -3,6 +3,7 @@ title: '4. Producers and listeners' layout: default nav_order: 4 parent: 'Lab 9: Send messages between microservices' +search_exclude: true --- # Add the message producers and listeners diff --git a/docs/09_lab_messaging/0905.md b/docs/09_lab_messaging/0905.md index 3cb56f92..30093dc1 100644 --- a/docs/09_lab_messaging/0905.md +++ b/docs/09_lab_messaging/0905.md @@ -3,6 +3,7 @@ title: '5. Review' layout: default nav_order: 5 parent: 'Lab 9: Send messages between microservices' +search_exclude: true --- # Review diff --git a/docs/09_lab_messaging/09_openlab_messaging_aca.md b/docs/09_lab_messaging/09_openlab_messaging_aca.md index 5b7a5995..87b81935 100644 --- a/docs/09_lab_messaging/09_openlab_messaging_aca.md +++ b/docs/09_lab_messaging/09_openlab_messaging_aca.md @@ -3,6 +3,7 @@ title: 'Lab 9: Send messages between microservices' layout: default nav_order: 11 nav_exclude: true +search_exclude: true has_children: true --- diff --git a/docs/10_lab_reliable_application/1001.md b/docs/10_lab_reliable_application/1001.md index 057a8120..c9f186a5 100644 --- a/docs/10_lab_reliable_application/1001.md +++ b/docs/10_lab_reliable_application/1001.md @@ -3,6 +3,7 @@ title: '1. Add shutdown hook to a Java application' layout: default nav_order: 1 parent: 'Build reliable Java application' +search_exclude: true --- # Graceful shutdown on Java Container Apps diff --git a/docs/10_lab_reliable_application/1002.md b/docs/10_lab_reliable_application/1002.md index 0c0f3a79..6b4ff5c3 100644 --- a/docs/10_lab_reliable_application/1002.md +++ b/docs/10_lab_reliable_application/1002.md @@ -3,6 +3,7 @@ title: '2. Config health probes for a Java Application' layout: default nav_order: 2 parent: 'Build reliable Java application' +search_exclude: true --- # Config health probes for a Java Application diff --git a/docs/10_lab_reliable_application/1003.md b/docs/10_lab_reliable_application/1003.md index 3ac391b5..f1b93c5b 100644 --- a/docs/10_lab_reliable_application/1003.md +++ b/docs/10_lab_reliable_application/1003.md @@ -3,6 +3,7 @@ title: '3. Review' layout: default nav_order: 3 parent: 'Build reliable Java application' +search_exclude: true --- # Review diff --git a/docs/10_lab_reliable_application/10_reliable_java_aca.md b/docs/10_lab_reliable_application/10_reliable_java_aca.md index 65fcafdb..d87d66ed 100644 --- a/docs/10_lab_reliable_application/10_reliable_java_aca.md +++ b/docs/10_lab_reliable_application/10_reliable_java_aca.md @@ -4,6 +4,7 @@ layout: default parent: 'More topics' nav_order: 12 has_children: true +search_exclude: true --- # Build reliable Java application on Azure Container Apps diff --git a/docs/11_lab_scale/1101.md b/docs/11_lab_scale/1101.md index f6f26fbc..3948e3c9 100644 --- a/docs/11_lab_scale/1101.md +++ b/docs/11_lab_scale/1101.md @@ -3,6 +3,7 @@ title: '1. Set up an HTTP scaling rule' layout: default nav_order: 1 parent: 'Set up autoscaling for microservices' +search_exclude: true --- # Set up an HTTP scaling rule diff --git a/docs/11_lab_scale/1102.md b/docs/11_lab_scale/1102.md index 62830e50..e5fcc555 100644 --- a/docs/11_lab_scale/1102.md +++ b/docs/11_lab_scale/1102.md @@ -3,6 +3,7 @@ title: '2. Set up a custom scaling rule' layout: default nav_order: 1 parent: 'Set up autoscaling for microservices' +search_exclude: true --- # Set up a custom scaling rule diff --git a/docs/11_lab_scale/1103.md b/docs/11_lab_scale/1103.md index 0a3260b4..8147edbf 100644 --- a/docs/11_lab_scale/1103.md +++ b/docs/11_lab_scale/1103.md @@ -3,6 +3,7 @@ title: '3. Review' layout: default nav_order: 1 parent: 'Set up autoscaling for microservices' +search_exclude: true --- # Review diff --git a/docs/11_lab_scale/11_openlab_scale_aca.md b/docs/11_lab_scale/11_openlab_scale_aca.md index 64eeb6f0..1433a19c 100644 --- a/docs/11_lab_scale/11_openlab_scale_aca.md +++ b/docs/11_lab_scale/11_openlab_scale_aca.md @@ -4,6 +4,7 @@ layout: default nav_order: 13 nav_exclude: true has_children: true +search_exclude: true --- # Set up autoscaling for microservices diff --git a/more.md b/more.md index cef31938..59f34086 100644 --- a/more.md +++ b/more.md @@ -4,6 +4,7 @@ layout: home nav_order: 95 nav_exclude: true has_children: true +search_exclude: true --- # More topics