21 |
404
22 |
23 |
Page not found :(
24 |
The requested page could not be found.
25 |
26 |
--------------------------------------------------------------------------------
/docs/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 | # Hello! This is where you manage which Jekyll version is used to run.
3 | # When you want to use a different version, change it below, save the
4 | # file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
5 | #
6 | # bundle exec jekyll serve
7 | #
8 | # This will help ensure the proper Jekyll version is running.
9 | # Happy Jekylling!
10 | gem "jekyll", "~> 4.2.2"
11 | # This is the default theme for new Jekyll sites. You may change this to anything you like.
12 | gem "minima", "~> 2.5"
13 | # If you want to use GitHub Pages, remove the "gem "jekyll"" above and
14 | # uncomment the line below. To upgrade, run `bundle update github-pages`.
15 | # gem "github-pages", group: :jekyll_plugins
16 | # If you have any plugins, put them here!
17 | group :jekyll_plugins do
18 | gem "jekyll-feed", "~> 0.12"
19 | end
20 |
21 | # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
22 | # and associated library.
23 | platforms :mingw, :x64_mingw, :mswin, :jruby do
24 | gem "tzinfo", "~> 1.2"
25 | gem "tzinfo-data"
26 | end
27 |
28 | # Performance-booster for watching directories on Windows
29 | gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
30 |
31 | # Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
32 | # do not have a Java counterpart.
33 | gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
34 |
35 | gem "just-the-docs", "0.4.0.rc4"
36 |
37 | gem "webrick", "~> 1.7"
38 |
--------------------------------------------------------------------------------
/docs/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | addressable (2.8.1)
5 | public_suffix (>= 2.0.2, < 6.0)
6 | colorator (1.1.0)
7 | concurrent-ruby (1.1.10)
8 | em-websocket (0.5.3)
9 | eventmachine (>= 0.12.9)
10 | http_parser.rb (~> 0)
11 | eventmachine (1.2.7)
12 | ffi (1.15.5)
13 | forwardable-extended (2.6.0)
14 | http_parser.rb (0.8.0)
15 | i18n (1.12.0)
16 | concurrent-ruby (~> 1.0)
17 | jekyll (4.2.2)
18 | addressable (~> 2.4)
19 | colorator (~> 1.0)
20 | em-websocket (~> 0.5)
21 | i18n (~> 1.0)
22 | jekyll-sass-converter (~> 2.0)
23 | jekyll-watch (~> 2.0)
24 | kramdown (~> 2.3)
25 | kramdown-parser-gfm (~> 1.0)
26 | liquid (~> 4.0)
27 | mercenary (~> 0.4.0)
28 | pathutil (~> 0.9)
29 | rouge (~> 3.0)
30 | safe_yaml (~> 1.0)
31 | terminal-table (~> 2.0)
32 | jekyll-feed (0.17.0)
33 | jekyll (>= 3.7, < 5.0)
34 | jekyll-sass-converter (2.2.0)
35 | sassc (> 2.0.1, < 3.0)
36 | jekyll-seo-tag (2.8.0)
37 | jekyll (>= 3.8, < 5.0)
38 | jekyll-watch (2.2.1)
39 | listen (~> 3.0)
40 | just-the-docs (0.4.0.rc4)
41 | jekyll (>= 3.8.5)
42 | jekyll-seo-tag (>= 2.0)
43 | rake (>= 12.3.1)
44 | kramdown (2.4.0)
45 | rexml
46 | kramdown-parser-gfm (1.1.0)
47 | kramdown (~> 2.0)
48 | liquid (4.0.3)
49 | listen (3.8.0)
50 | rb-fsevent (~> 0.10, >= 0.10.3)
51 | rb-inotify (~> 0.9, >= 0.9.10)
52 | mercenary (0.4.0)
53 | minima (2.5.1)
54 | jekyll (>= 3.5, < 5.0)
55 | jekyll-feed (~> 0.9)
56 | jekyll-seo-tag (~> 2.1)
57 | pathutil (0.16.2)
58 | forwardable-extended (~> 2.6)
59 | public_suffix (5.0.1)
60 | rake (13.0.6)
61 | rb-fsevent (0.11.2)
62 | rb-inotify (0.10.1)
63 | ffi (~> 1.0)
64 | rexml (3.2.5)
65 | rouge (3.30.0)
66 | safe_yaml (1.0.5)
67 | sassc (2.4.0)
68 | ffi (~> 1.9)
69 | terminal-table (2.0.0)
70 | unicode-display_width (~> 1.1, >= 1.1.1)
71 | unicode-display_width (1.8.0)
72 | webrick (1.7.0)
73 |
74 | PLATFORMS
75 | x86_64-linux
76 |
77 | DEPENDENCIES
78 | http_parser.rb (~> 0.6.0)
79 | jekyll (~> 4.2.2)
80 | jekyll-feed (~> 0.12)
81 | just-the-docs (= 0.4.0.rc4)
82 | minima (~> 2.5)
83 | tzinfo (~> 1.2)
84 | tzinfo-data
85 | wdm (~> 0.1.1)
86 | webrick (~> 1.7)
87 |
88 | BUNDLED WITH
89 | 2.4.3
90 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Java Dapr-AKS-ACA Workshop Documentation
2 |
3 | ## Generate locally
4 |
5 | To generate the documentation locally, [Ruby](https://www.ruby-lang.org/) and [Ruby Gems](https://rubygems.org/) are required.
6 |
7 | Jekyll and Bundler are required to generate the documentation locally. To [install](https://jekyllrb.com/docs/installation/) them, run the following commands:
8 |
9 | ```bash
10 | gem install jekyll bundler
11 | ```
12 |
13 | To run a local server, run the following command:
14 |
15 | ```bash
16 | bundle install
17 | bundle exec jekyll serve --config _config.local.yml
18 | ```
19 |
--------------------------------------------------------------------------------
/docs/SECURITY.markdown:
--------------------------------------------------------------------------------
1 | ---
2 | nav_exclude: true
3 | ---
4 |
5 |
6 |
7 | ## Security
8 |
9 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
10 |
11 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
12 |
13 | ## Reporting Security Issues
14 |
15 | **Please do not report security vulnerabilities through public GitHub issues.**
16 |
17 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
18 |
19 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
20 |
21 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
22 |
23 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
24 |
25 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
26 | * Full paths of source file(s) related to the manifestation of the issue
27 | * The location of the affected source code (tag/branch/commit or direct URL)
28 | * Any special configuration required to reproduce the issue
29 | * Step-by-step instructions to reproduce the issue
30 | * Proof-of-concept or exploit code (if possible)
31 | * Impact of the issue, including how an attacker might exploit the issue
32 |
33 | This information will help us triage your report more quickly.
34 |
35 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
36 |
37 | ## Preferred Languages
38 |
39 | We prefer all communications to be in English.
40 |
41 | ## Policy
42 |
43 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
44 |
45 |
--------------------------------------------------------------------------------
/docs/SUPPORT.md:
--------------------------------------------------------------------------------
1 | ---
2 | nav_exclude: true
3 | ---
4 |
5 | # Support
6 |
7 | ## How to file issues and get help
8 |
9 | This project uses GitHub Issues to track bugs and feature requests. Please search the existing
10 | issues before filing new issues to avoid duplicates. For new issues, file your bug or
11 | feature request as a new Issue.
12 |
13 | For help and questions about using this project, please **REPO MAINTAINER: INSERT INSTRUCTIONS HERE
14 | FOR HOW TO ENGAGE REPO OWNERS OR COMMUNITY FOR HELP. COULD BE A STACK OVERFLOW TAG OR OTHER
15 | CHANNEL. WHERE WILL YOU HELP PEOPLE?**.
16 |
17 | ## Microsoft Support Policy
18 |
19 | Support for this **PROJECT or PRODUCT** is limited to the resources listed above.
--------------------------------------------------------------------------------
/docs/_includes/00-intro/1-dapr-overview.md:
--------------------------------------------------------------------------------
1 | Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks.
2 |
3 | Dapr codifies the *best practices* for building microservice applications into open, independent, building blocks that enable you to build portable applications with the language and framework of your choice. Each building block is independent and you can use one, some, or all of them in your application.
4 |
5 | 
6 |
7 | ## How it works
8 |
9 | Dapr injects a side-car (container or process) to each compute unit. The side-car interacts with event triggers and communicates with the compute unit via standard HTTP or gRPC protocols. This enables Dapr to support all existing and future programming languages without requiring you to import frameworks or libraries.
10 |
11 | Dapr offers built-in state management, reliable messaging (at least once delivery), triggers and bindings through standard HTTP verbs or gRPC interfaces. This allows you to write stateless, stateful and actor-like services following the same programming paradigm. You can freely choose consistency model, threading model and message delivery patterns.
12 |
13 | Dapr runs natively on Kubernetes, as a self hosted binary on your machine, on an IoT device, or as a container that can be injected into any system, in the cloud or on-premises.
14 |
15 | Dapr uses pluggable component state stores and message buses such as Redis as well as gRPC to offer a wide range of communication methods, including direct dapr-to-dapr using gRPC and async Pub-Sub with guaranteed delivery and at-least-once semantics.
16 |
--------------------------------------------------------------------------------
/docs/_includes/05-assignment-5-aks-aca/02-aca/0-1-setup-application-insights.md:
--------------------------------------------------------------------------------
1 | 1. Create an Application Insights resource:
2 |
3 | ```bash
4 | az monitor app-insights component create --app appi-dapr-workshop-java --location eastus --kind web -g rg-dapr-workshop-java --application-type web
5 | ```
6 |
7 | You may receive a message to install the application-insights extension, if so please install the extension for this exercise.
8 |
9 | 1. Get the instrumentation key for the Application Insights and set it to the `INSTRUMENTATION_KEY` variable:
10 |
11 | - Linux/Unix shell:
12 |
13 | ```bash
14 | INSTRUMENTATION_KEY=$(az monitor app-insights component show --app appi-dapr-workshop-java -g rg-dapr-workshop-java --query instrumentationKey)
15 | echo $INSTRUMENTATION_KEY
16 | ```
17 |
18 | - PowerShell:
19 |
20 | ```powershell
21 | $INSTRUMENTATION_KEY = az monitor app-insights component show --app appi-dapr-workshop-java -g rg-dapr-workshop-java --query instrumentationKey
22 | $INSTRUMENTATION_KEY
23 | ```
24 |
--------------------------------------------------------------------------------
/docs/_includes/05-assignment-5-aks-aca/02-aca/0-2-setup-container-apps-env.md:
--------------------------------------------------------------------------------
1 |
3 | A [container apps environment](https://learn.microsoft.com/en-us/azure/container-apps/environment) acts as a secure boundary around our container apps. Containers deployed on the same environment use the same virtual network and write the log to the same logging destionation, in our case: Log Analytics workspace.
4 |
5 | {% if include.showObservability %}
6 |
7 | To create the container apps environment with Dapr service-to-service telemetry, you need to set `--dapr-instrumentation-key` parameter to the Application Insights instrumentation key. Use the following command to create the container apps environment:
8 |
9 | ```bash
10 | az containerapp env create \
11 | --resource-group rg-dapr-workshop-java \
12 | --location eastus \
13 | --name cae-dapr-workshop-java \
14 | --logs-workspace-id "$LOG_ANALYTICS_WORKSPACE_CUSTOMER_ID" \
15 | --logs-workspace-key "$LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET" \
16 | --dapr-instrumentation-key "$INSTRUMENTATION_KEY"
17 | ```
18 |
19 | {% else %}
20 |
21 | {: .important-title }
22 | > Dapr Telemetry
23 | >
24 | > If you want to enable Dapr telemetry, you need to create the container apps environment with Application Insights. You can follow these instructions instead of the instructions below: [(Optional) Observability with Dapr using Application Insights]({{ site.baseurl }}{% link modules/05-assignment-5-aks-aca/02-aca/2-observability.md %})
25 | >
26 |
27 | Create the container apps environment with the following command:
28 |
29 | ```bash
30 | az containerapp env create \
31 | --resource-group rg-dapr-workshop-java \
32 | --location eastus \
33 | --name cae-dapr-workshop-java \
34 | --logs-workspace-id "$LOG_ANALYTICS_WORKSPACE_CUSTOMER_ID" \
35 | --logs-workspace-key "$LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET"
36 | ```
37 |
38 | {% endif %}
39 |
40 | {: .note }
41 | > Some Azure CLI commands can take some time to execute. Don't hesitate to have a look at the next assignments / steps to know what you will have to do. And then, come back to this one when the command is done and execute the next one.
42 | >
43 |
--------------------------------------------------------------------------------
/docs/_includes/05-assignment-5-aks-aca/02-aca/2-1-dapr-component-service-bus.md:
--------------------------------------------------------------------------------
1 | {% if include.linkType == "aca-challenge" %}
2 |
3 | In [Assignment 3 - Using Dapr for pub/sub with Azure Service Bus]({{ site.baseurl }}{% link modules/11-aca-challenge/03-assignment-3-azure-pub-sub/index.md %}), you copied the file `dapr/azure-servicebus-pubsub.yaml` to `dapr/components` folder and updated the `connectionString` value. This file was used to deploy the `pubsub` Dapr component.
4 |
5 | {% else %}
6 |
7 | In [Assignment 3 - Using Dapr for pub/sub with Azure Service Bus]({{ site.baseurl }}{% link modules/03-assignment-3-azure-pub-sub/1-azure-service-bus.md %}), you copied the file `dapr/azure-servicebus-pubsub.yaml` to `dapr/components` folder and updated the `connectionString` value. This file was used to deploy the `pubsub` Dapr component.
8 |
9 | {% endif %}
10 |
11 | The [Dapr component schema for Azure Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/dapr-overview?tabs=bicep1%2Cyaml#component-schema) is different from the standard Dapr component yaml schema. It has been slightly simplified. Hence the need for a new component yaml file.
12 |
13 | 1. Open the file `dapr/aca-azure-servicebus-pubsub.yaml` in your code editor.
14 |
15 | ```yaml
16 | componentType: pubsub.azure.servicebus
17 | version: v1
18 | metadata:
19 | - name: connectionString
20 | value: "Endpoint=sb://{ServiceBusNamespace}.servicebus.windows.net/;SharedAccessKeyName={PolicyName};SharedAccessKey={Key};EntityPath={ServiceBus}"
21 | scopes:
22 | - traffic-control-service
23 | - fine-collection-service
24 | ```
25 |
26 | 2. **Copy or Move** this file `dapr/aca-servicebus-pubsub.yaml` to `dapr/components` folder.
27 |
28 | {% if include.linkType == "aca-challenge" %}
29 |
30 | 3. **Replace** the `connectionString` value with the value you set in `dapr/components/azure-servicebus-pubsub.yaml` in [Assignment 3 - Using Dapr for pub/sub with Azure Service Bus]({{ site.baseurl }}{% link modules/11-aca-challenge/03-assignment-3-azure-pub-sub/index.md %}).
31 |
32 | {% else %}
33 |
34 | 3. **Replace** the `connectionString` value with the value you set in `dapr/components/azure-servicebus-pubsub.yaml` in [Assignment 3 - Using Dapr for pub/sub with Azure Service Bus]({{ site.baseurl }}{% link modules/03-assignment-3-azure-pub-sub/1-azure-service-bus.md %}).
35 |
36 | {% endif %}
37 |
38 | 4. Go to the root folder of the repository.
39 |
40 | 5. Enter the following command to deploy the `pubsub` Dapr component:
41 |
42 | ```bash
43 | az containerapp env dapr-component set \
44 | --name cae-dapr-workshop-java \
45 | --resource-group rg-dapr-workshop-java \
46 | --dapr-component-name pubsub \
47 | --yaml ./dapr/components/aca-azure-servicebus-pubsub.yaml
48 | ```
49 |
--------------------------------------------------------------------------------
/docs/_includes/05-assignment-5-aks-aca/02-aca/4-observability.md:
--------------------------------------------------------------------------------
1 | ## Step {{stepNumber}}: View the telemetry in Application Insights
2 |
3 | 1. Open the Application Insights resource in the [Azure portal]([https](https://portal.azure.com/)).
4 |
5 | 1. Go to `Application Map`, you should see a diagram like the on below
6 |
7 | 
8 |
--------------------------------------------------------------------------------
/docs/_includes/09-bonus-assignments/01-service-invocation/1-use-dapr-to-invoke-vehicle-registration-service.md:
--------------------------------------------------------------------------------
1 |
3 | ## Step {{stepNumber}}: Use Dapr to invoke the Vehicle Registration Service from the Fine Collection Service
4 |
5 | With Dapr, services can invoke other services using their application id. This is done by using the Dapr client to make calls to the Dapr sidecar. The Vehicle Registration Service will be started with a Dapr sidecar.
6 |
7 | 1. Open the `FineCollectionService` project in your code editor and navigate to the `DaprVehicleRegistrationClient` class. This class implements the `VehicleRegistrationClient` interface and uses the Dapr client to invoke the Vehicle Registration Service. Inspect the implementation of this class.
8 |
9 | 2. Navigate to the `FineCollectionConfiguration` class to switch between the default and Dapr implementation of the `VehicleRegistrationClient`.
10 |
11 | 3. **Uncomment** following @Bean method:
12 |
13 | ```java
14 | // @Bean
15 | // public VehicleRegistrationClient vehicleRegistrationClient(final DaprClient daprClient) {
16 | // return new DaprVehicleRegistrationClient(daprClient);
17 | // }
18 | ```
19 |
20 | 4. **Uncomment** following @Bean method, if not already done:
21 |
22 | ```java
23 | // @Bean
24 | // public DaprClient daprClient() {
25 | // return new DaprClientBuilder().build();
26 | // }
27 | ```
28 |
29 | 5. **Comment out** following @Bean method:
30 |
31 | ```java
32 | @Bean
33 | public VehicleRegistrationClient vehicleRegistrationClient(final RestTemplate restTemplate) {
34 | return new DefaultVehicleRegistrationClient(restTemplate, vehicleInformationAddress);
35 | }
36 | ```
37 |
38 | 6. Check all your code-changes are correct by building the code. Execute the following command in the terminal window:
39 |
40 | ```bash
41 | mvn package
42 | ```
43 |
--------------------------------------------------------------------------------
/docs/_includes/09-bonus-assignments/02-state-store/1-1-create-cosmos-db.md:
--------------------------------------------------------------------------------
1 | 1. Open a terminal window.
2 |
3 | 1. Azure Cosmos DB account for SQL API is a globally distributed multi-model database service. This account needs to be globally unique. Use the following command to generate a unique name:
4 |
5 | - Linux/Unix shell:
6 |
7 | ```bash
8 | UNIQUE_IDENTIFIER=$(LC_ALL=C tr -dc a-z0-9 The name of the Cosmos DB account must be unique across all Azure Cosmos DB accounts in the world. If you get an error that the name is already taken, try a different name. In the following steps, please update the name of the Cosmos DB account accordingly.
30 |
31 | 1. Create a SQL API database:
32 |
33 | ```bash
34 | az cosmosdb sql database create --account-name $COSMOS_DB --resource-group rg-dapr-workshop-java --name dapr-workshop-java-database
35 | ```
36 |
37 | 1. Create a SQL API container:
38 |
39 | ```bash
40 | az cosmosdb sql container create --account-name $COSMOS_DB --resource-group rg-dapr-workshop-java --database-name dapr-workshop-java-database --name vehicle-state --partition-key-path /partitionKey --throughput 400
41 | ```
42 |
43 | {: .important }
44 | > The partition key path is `/partitionKey` as mentionned in [Dapr documentation](https://docs.dapr.io/reference/components-reference/supported-state-stores/setup-azure-cosmosdb/#setup-azure-cosmosdb).
45 | >
46 |
47 | 1. Get the Cosmos DB account URL and note it down. You will need it in the next step and to deploy it to Azure.
48 |
49 | ```bash
50 | az cosmosdb show --name $COSMOS_DB --resource-group rg-dapr-workshop-java --query documentEndpoint -o tsv
51 | ```
52 |
53 | 1. Get the master key and note it down. You will need it in the next step and to deploy it to Azure.
54 |
55 | ```bash
56 | az cosmosdb keys list --name $COSMOS_DB --resource-group rg-dapr-workshop-java --type keys --query primaryMasterKey -o tsv
57 | ```
--------------------------------------------------------------------------------
/docs/_includes/09-bonus-assignments/02-state-store/1-3-update-traffic-control-service.md:
--------------------------------------------------------------------------------
1 | 1. Open the `TrafficControlService` project in your code editor and navigate to the `DaprVehicleStateRepository` class. This class use the Dapr client to store and retrieve the state of a vehicle. Inspect the implementation of this class.
2 |
3 | 1. Navigate to the `TrafficControlConfiguration` class to swith from the `InMemoryVehicleStateRepository` to the `DaprVehicleStateRepository`.
4 |
5 | 1. **Update** @Bean method to instantiate `DaprVehicleStateRepository` instead of `InMemoryVehicleStateRepository`:
6 |
7 | ```java
8 | @Bean
9 | public VehicleStateRepository vehicleStateRepository(final DaprClient daprClient) {
10 | return new DaprVehicleStateRepository(daprClient);
11 | }
12 | ```
13 |
14 | 1. **Uncomment** following @Bean method if not already done:
15 |
16 | ```java
17 | // @Bean
18 | // public DaprClient daprClient() {
19 | // return new DaprClientBuilder()
20 | // .withObjectSerializer(new JsonObjectSerializer())
21 | // .build();
22 | // }
23 | ```
24 |
25 | 1. Check all your code-changes are correct by building the code. Execute the following command in the terminal window:
26 |
27 | ```bash
28 | mvn package
29 | ```
30 |
--------------------------------------------------------------------------------
/docs/_includes/09-bonus-assignments/02-state-store/3-deploy-to-aca.md:
--------------------------------------------------------------------------------
1 |
3 | ## Step {{stepNumber}}: Build and redeploy traffic control service
4 |
5 | In this step, you will rebuild and redeploy the `TrafficControlService` to use the Azure Cosmos DB state store instead of keeping the state in memory.
6 |
7 | 1. Delete the image from local docker:
8 |
9 | ```bash
10 | docker rmi traffic-control-service:1.0-SNAPSHOT
11 | ```
12 |
13 | 1. In the root folder of `TrafficControlService`, run the following command to build and push the image:
14 |
15 | ```bash
16 | mvn spring-boot:build-image
17 | docker tag traffic-control-service:1.0-SNAPSHOT "$CONTAINER_REGISTRY.azurecr.io/traffic-control-service:2.0"
18 | docker push "$CONTAINER_REGISTRY.azurecr.io/traffic-control-service:2.0"
19 | ```
20 |
21 | Where `$CONTAINER_REGISTRY` is the name of your Azure Container Registry.
22 |
23 | 1. Update `TrafficControlService` container with the new image:
24 |
25 | ```bash
26 | az containerapp update \
27 | --name ca-traffic-control-service \
28 | --resource-group rg-dapr-workshop-java \
29 | --image "$CONTAINER_REGISTRY.azurecr.io/traffic-control-service:2.0"
30 | ```
31 |
32 | Where `$CONTAINER_REGISTRY` is the name of your Azure Container Registry.
33 |
34 |
35 |
36 | {% assign stepNumber = stepNumber | plus: 1 %}
37 | {% include 05-assignment-5-aks-aca/02-aca/0-3-test-application.md %}
38 |
39 | Check Application Map of Application Insights in Azure Portal to see the connection between the `TrafficControlService` and the `aca-azure-cosmosdb-statestore`. Check in Azure Portal the data in Cosmos DB.
40 |
--------------------------------------------------------------------------------
/docs/_includes/09-bonus-assignments/03-secret-store/3-1-create-sb-connection-string-secret.md:
--------------------------------------------------------------------------------
1 | ## Step 1: Create a secret in the Azure Key Vault for the connetion string
2 |
3 | Azure Service Bus' connection string will be store as a string/literal secret:
4 |
5 | 1. Open a terminal window.
6 |
7 | 1. Create a secret in the Azure Key Vault for Azure Service Bus' connection string:
8 |
9 | ```bash
10 | az keyvault secret set --vault-name $KEY_VAULT --name azSericeBusconnectionString --value "