Skip to content

Commit bb30874

Browse files
committed
Merge branch 'main' into release-preview-sentinel-lake
2 parents 59f9abb + 0b3f744 commit bb30874

File tree

438 files changed

+1858
-1026
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

438 files changed

+1858
-1026
lines changed

articles/application-gateway/application-gateway-tls-version-retirement.md

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ services: application gateway
55
author: jaesoni
66
ms.service: azure-application-gateway
77
ms.topic: concept-article
8-
ms.date: 05/15/2025
8+
ms.date: 07/18/2025
99
ms.author: mbender
1010
ms.custom:
1111
- build-2025
@@ -84,7 +84,26 @@ You don't need to configure anything on your Application Gateway for the backend
8484
* For V2 SKUs: the connections to backend servers will always be with preferred TLS v1.3 and minimum up to TLS v1.2
8585
* For V1 SKUs: the connections to backend servers will always be with TLS v1.2
8686

87-
You must ensure that your servers in the backend pools are compatible with these updated protocol versions. This compatibility avoids any disruptions when establishing a TLS/HTTPS connection with those backend servers.
87+
You must ensure that your servers in the backend pools are compatible with these updated protocol versions. This compatibility avoids any disruptions when establishing an TLS/HTTPS connection with those backend servers.
88+
89+
## Identification methods
90+
91+
### Metrics
92+
To determine whether clients connecting to your Application Gateway resource are utilizing TLS 1.0 or 1.1, use the `Client TLS protocol` metric provided by Application Gateway. For more information, see the [metrics documentation](monitor-application-gateway-reference.md#metrics). You can view it from the Portal by following these steps.
93+
94+
1. Go to the Application Gateway resource in the Azure portal.
95+
2. In the left menu pane, open the "Metrics" blade in Monitoring section.
96+
3. Select metric as `Client TLS protocol` from the dropdown.
97+
4. To view granular protocol version information, select "Apply splitting" and choose "TLS protocol".
98+
99+
[![A diagram showing metrics page with TLS version split for application gateway traffic.](media/application-gateway-tls-version-retirement/metric-tls-version.png)](media/application-gateway-tls-version-retirement/metric-tls-version.png#lightbox)
100+
101+
### Logs
102+
You can also check the [Application Gateway Access logs](monitor-application-gateway-reference.md#access-log-category) to view this information in log format.
103+
104+
### Error information
105+
Once support for TLS versions 1.0 and 1.1 is discontinued, clients may encounter errors such as `curl: (35) error:0A000410:SSL routines::sslv3 alert handshake failure`. Depending on the browser being used, various messages indicating TLS handshake failures may be displayed.
106+
88107

89108
## Next steps
90109

137 KB
Loading

articles/azure-app-configuration/TOC.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,16 @@
8181
href: quickstart-go-console-app.md
8282
- name: Dynamic configuration
8383
href: enable-dynamic-configuration-go-console-app.md
84+
- name: Feature management
85+
href: quickstart-feature-flag-go-console.md
8486
- name: Go Gin
8587
items:
8688
- name: Configuration
8789
href: quickstart-go-web-app.md
8890
- name: Dynamic configuration
8991
href: enable-dynamic-configuration-gin-web-app.md
92+
- name: Feature management
93+
href: quickstart-feature-flag-go-gin.md
9094
- name: Azure Functions
9195
items:
9296
- name: Configuration
@@ -431,6 +435,10 @@
431435
items:
432436
- name: Feature reference
433437
href: ./feature-management-javascript-reference.md
438+
- name: Go
439+
items:
440+
- name: Feature reference
441+
href: https://pkg.go.dev/github.com/microsoft/Featuremanagement-Go/featuremanagement
434442
- name: Telemetry
435443
items:
436444
- name: Feature flag telemetry reference

articles/azure-app-configuration/concept-private-endpoint.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ Service account owners can manage consent requests and private endpoints through
4343

4444
When creating a private endpoint, you must specify the App Configuration store to which it connects. If you enable the geo-replication for an App Configuration store, you can connect to all replicas of the store using the same private endpoint. If you have multiple App Configuration stores, you need a separate private endpoint for each store.
4545

46+
### Considerations for geo-replicated App Configuration stores
47+
48+
When geo-replication is enabled for your App Configuration store, you can use a single private endpoint to connect to all replicas. However, since private endpoints are regional resources, this approach may not ensure connectivity in the event of a regional outage.
49+
50+
For enhanced resilience, consider creating private endpoints for each replica of your geo-replicated store, in addition to a private endpoint for the origin store. This ensures that if one region becomes unavailable, clients can access the store through private endpoints provisioned in the same region as a replica. Ensure the relevant [DNS changes](#dns-changes-for-private-endpoints) are made so the endpoint for each replica resolves to the relevant IP address for the private endpoint in the respective replica's region.
51+
4652
### Connecting to private endpoints
4753

4854
Azure relies upon DNS resolution to route connections from the VNet to the configuration store over a private link. You can quickly find connections strings in the Azure portal by selecting your App Configuration store, then selecting **Settings** > **Access Keys**.

articles/azure-app-configuration/index.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,10 @@ landingContent:
151151
url: quickstart-feature-flag-python.md
152152
- text: Node.js app
153153
url: quickstart-feature-flag-javascript.md
154+
- text: Go console app
155+
url: quickstart-feature-flag-go-console.md
156+
- text: Go Gin web app
157+
url: quickstart-feature-flag-go-gin.md
154158
- linkListType: tutorial
155159
links:
156160
- text: Enable conditional features with feature filters
@@ -179,6 +183,8 @@ landingContent:
179183
url: https://microsoft.github.io/FeatureManagement-Python/html/index.html
180184
- text: JavaScript feature management
181185
url: feature-management-javascript-reference.md
186+
- text: Go feature management
187+
url: https://pkg.go.dev/github.com/microsoft/Featuremanagement-Go/featuremanagement
182188

183189
- title: Client libraries and tools
184190
linkLists:
30 KB
Loading
27.4 KB
Loading
25.2 KB
Loading
Lines changed: 220 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,220 @@
1+
---
2+
title: Quickstart for adding feature flags to Go console apps
3+
titleSuffix: Azure App Configuration
4+
description: Learn to implement feature flags in your Go console application using feature management and Azure App Configuration. Dynamically manage feature rollouts and control feature visibility without redeploying the app.
5+
services: azure-app-configuration
6+
author: linglingye
7+
ms.service: azure-app-configuration
8+
ms.devlang: golang
9+
ms.topic: quickstart
10+
ms.custom: devx-track-go, mode-other
11+
ms.date: 07/03/2025
12+
ms.author: linglingye
13+
#Customer intent: As a Go developer, I want to use feature flags to control feature availability quickly and confidently.
14+
---
15+
16+
# Quickstart: Add feature flags to a Go console app
17+
18+
In this quickstart, you'll create a feature flag in Azure App Configuration and use it to dynamically control the availability of features in a Go console app.
19+
20+
The feature management support extends the dynamic configuration feature in App Configuration. This example demonstrates how to integrate feature flags into a Go console application with real-time monitoring capabilities.
21+
22+
## Prerequisites
23+
24+
- An Azure account with an active subscription. [Create one for free](https://azure.microsoft.com/free/).
25+
- An App Configuration store. [Create a store](./quickstart-azure-app-configuration-create.md#create-an-app-configuration-store).
26+
- Go 1.21 or later. For information on installing Go, see the [Go downloads page](https://golang.org/dl/).
27+
- [Azure App Configuration Go provider](https://pkg.go.dev/github.com/Azure/AppConfiguration-GoProvider/azureappconfiguration) v1.1.0-beta.1 or later.
28+
29+
## Create a feature flag
30+
31+
Add a feature flag called *Beta* to the App Configuration store and leave **Label** and **Description** with their default values. For more information about how to add feature flags to a store using the Azure portal or the CLI, go to [Create a feature flag](./manage-feature-flags.md#create-a-feature-flag).
32+
33+
:::image type="content" source="./media/add-beta-feature-flag.png" alt-text="Screenshot of creating a feature flag.":::
34+
35+
## Use a feature flag
36+
37+
1. Create a new directory for your Go project and navigate into it:
38+
39+
```console
40+
mkdir go-feature-flag-quickstart
41+
cd go-feature-flag-quickstart
42+
```
43+
44+
1. Initialize a new Go module:
45+
46+
```console
47+
go mod init go-feature-flag-quickstart
48+
```
49+
50+
1. Install the required Go packages for Azure App Configuration and feature management:
51+
52+
```console
53+
go get github.com/microsoft/Featuremanagement-Go/featuremanagement
54+
go get github.com/microsoft/Featuremanagement-Go/featuremanagement/providers/azappconfig
55+
```
56+
57+
1. Update the `options` to enable feature flags in [previous step](./quickstart-go-console-app.md#connect-to-app-configuration).
58+
59+
```golang
60+
options := &azureappconfiguration.Options{
61+
FeatureFlagOptions: azureappconfiguration.FeatureFlagOptions{
62+
Enabled: true,
63+
RefreshOptions: azureappconfiguration.RefreshOptions{
64+
Enabled: true,
65+
},
66+
},
67+
}
68+
```
69+
70+
> [!TIP]
71+
> When no selector is specified in `FeatureFlagOptions`, it loads *all* feature flags with *no label* in your App Configuration store. The default refresh interval of feature flags is 30 seconds. You can customize this behavior via the `RefreshOptions` parameter. For example, the following code snippet loads only feature flags that start with *TestApp:* in their *key name* and have the label *dev*. The code also changes the refresh interval time to 5 minutes. Note that this refresh interval time is separate from that for regular key-values.
72+
>
73+
> ```golang
74+
> FeatureFlagOptions{
75+
> Enabled: true,
76+
> Selectors: []azureappconfiguration.Selector{
77+
> {
78+
> KeyFilter: "TestApp:*",
79+
> LabelFilter: "dev",
80+
> },
81+
> },
82+
> RefreshOptions: azureappconfiguration.RefreshOptions{
83+
> Enabled: true,
84+
> Interval: 5 * time.Minute,
85+
> },
86+
> }
87+
> ```
88+
89+
1. Create the main application file `main.go`:
90+
91+
```golang
92+
package main
93+
94+
import (
95+
"context"
96+
"fmt"
97+
"log"
98+
"os"
99+
"time"
100+
101+
"github.com/microsoft/Featuremanagement-Go/featuremanagement"
102+
"github.com/microsoft/Featuremanagement-Go/featuremanagement/providers/azappconfig"
103+
)
104+
105+
func main() {
106+
ctx := context.Background()
107+
108+
// Load Azure App Configuration
109+
appConfig, err := loadAzureAppConfiguration(ctx)
110+
if err != nil {
111+
log.Fatalf("Error loading Azure App Configuration: %v", err)
112+
}
113+
114+
// Create feature flag provider
115+
featureFlagProvider, err := azappconfig.NewFeatureFlagProvider(appConfig)
116+
if err != nil {
117+
log.Fatalf("Error creating feature flag provider: %v", err)
118+
}
119+
120+
// Create feature manager
121+
featureManager, err := featuremanagement.NewFeatureManager(featureFlagProvider, nil)
122+
if err != nil {
123+
log.Fatalf("Error creating feature manager: %v", err)
124+
}
125+
126+
// Monitor the Beta feature flag
127+
fmt.Println("Monitoring 'Beta' feature flag (press Ctrl+C to exit):")
128+
fmt.Println("Toggle the Beta feature flag in Azure portal to see real-time updates...")
129+
fmt.Println()
130+
131+
ticker := time.NewTicker(5 * time.Second)
132+
defer ticker.Stop()
133+
134+
for {
135+
select {
136+
case <-ticker.C:
137+
// Refresh configuration to get latest feature flag settings
138+
if err := appConfig.Refresh(ctx); err != nil {
139+
log.Printf("Error refreshing configuration: %v", err)
140+
continue
141+
}
142+
143+
// Evaluate the Beta feature flag
144+
isEnabled, err := featureManager.IsEnabled("Beta")
145+
if err != nil {
146+
log.Printf("Error checking if Beta feature is enabled: %v", err)
147+
continue
148+
}
149+
150+
// Print timestamp and feature status
151+
timestamp := time.Now().Format("15:04:05")
152+
fmt.Printf("[%s] Beta is enabled: %t\n", timestamp, isEnabled)
153+
154+
case <-ctx.Done():
155+
fmt.Println("\nShutting down...")
156+
return
157+
}
158+
}
159+
}
160+
```
161+
162+
## Run the application
163+
164+
1. Run the application:
165+
166+
```console
167+
go run main.go
168+
```
169+
---
170+
171+
1. The application starts monitoring the *Beta* feature flag and displays its current state every 5 seconds:
172+
173+
```console
174+
Monitoring 'Beta' feature flag (press Ctrl+C to exit):
175+
Toggle the Beta feature flag in Azure portal to see real-time updates...
176+
177+
[14:30:15] Beta is enabled: false
178+
[14:30:20] Beta is enabled: false
179+
[14:30:25] Beta is enabled: false
180+
```
181+
182+
1. Sign in to the [Azure portal](https://portal.azure.com). Select **All resources**, and select the App Configuration store that you created previously.
183+
184+
1. Select **Feature manager** and locate the *Beta* feature flag. Enable the flag by selecting the checkbox under **Enabled**.
185+
186+
1. Return to your console application. After a few seconds, you should see the feature flag status change:
187+
188+
```console
189+
[14:30:30] Beta is enabled: false
190+
[14:30:35] Beta is enabled: true
191+
[14:30:40] Beta is enabled: true
192+
```
193+
194+
1. You can toggle the feature flag on and off in the Azure portal to see real-time updates in your console application without restarting it.
195+
196+
1. Press **Ctrl+C** to stop the application.
197+
198+
## Clean up resources
199+
200+
[!INCLUDE[Azure App Configuration cleanup](../../includes/azure-app-configuration-cleanup.md)]
201+
202+
## Next steps
203+
204+
In this quickstart, you created a feature flag in Azure App Configuration and used it in a Go console application. The [Feature Management Go library](https://github.com/microsoft/FeatureManagement-Go) provides rich feature flag capabilities that integrate seamlessly with Azure App Configuration. For more features, continue to the following document.
205+
206+
> [!div class="nextstepaction"]
207+
> [Go Feature Management reference](https://pkg.go.dev/github.com/microsoft/Featuremanagement-Go/featuremanagement)
208+
209+
While a feature flag allows you to activate or deactivate functionality in your app, you may want to customize a feature flag based on your app's logic. Feature filters allow you to enable a feature flag conditionally. For more information, continue to the following tutorial.
210+
211+
> [!div class="nextstepaction"]
212+
> [Enable conditional features with feature filters](./howto-feature-filters.md)
213+
214+
Azure App Configuration offers built-in feature filters that enable you to activate a feature flag only during a specific period or to a particular targeted audience of your app. For more information, continue to the following tutorial.
215+
216+
> [!div class="nextstepaction"]
217+
> [Enable features on a schedule](./howto-timewindow-filter.md)
218+
219+
> [!div class="nextstepaction"]
220+
> [Roll out features to targeted audiences](./howto-targetingfilter.md)

0 commit comments

Comments
 (0)