Megosztás a következőn keresztül:


Rövid útmutató: Go-webalkalmazás létrehozása az Azure App Configuration használatával

Ebben a rövid útmutatóban az Azure App Configuration használatával központosíthatja a Go-webalkalmazások alkalmazásbeállításainak tárolását és kezelését a Gin-keretrendszer és az Azure App Configuration Go-szolgáltató használatával.

A Go alkalmazáskonfigurációs szolgáltatója egyszerűbben alkalmazhat kulcsértékeket az Azure App Configurationból a Go-alkalmazásba. Lehetővé teszi a kötési beállítások Go struct-nak való megadását. Olyan funkciókat kínál, mint a több címke konfigurációjának összeállítása, a kulcselőtagok vágása, a Key Vault-hivatkozások automatikus feloldása és még sok más.

Előfeltételek

Kulcsértékek hozzáadása

Adja hozzá az alábbi kulcsértékeket az Alkalmazáskonfigurációs áruházhoz, és hagyja meg a címke és a tartalomtípus alapértelmezett értékeit. Ha többet szeretne tudni arról, hogyan adhat hozzá kulcsértékeket egy áruházhoz az Azure Portal vagy a parancssori felület használatával, lépjen a Kulcs-érték létrehozása elemre.

Kulcs Érték
Konfig.Üzenet Hello az Azure App Configuration-ból
Config.App.Name Gin mintaalkalmazás
Config.App.Port 8080

Go-webalkalmazás létrehozása

  1. Hozzon létre egy új könyvtárat a webalkalmazáshoz.

    mkdir app-configuration-web
    cd app-configuration-web
    
  2. Inicializáljon egy új Go-modult.

    go mod init app-configuration-web
    
  3. Adja hozzá a szükséges függőségeket.

    go get github.com/Azure/AppConfiguration-GoProvider/azureappconfiguration
    go get github.com/gin-gonic/gin
    
  4. Hozzon létre egy sablonkönyvtárat a HTML-sablonokhoz.

    mkdir templates
    
  5. Hozzon létre egy HTML-sablont a kezdőlaphoz. Adja hozzá a következő tartalmat ide: templates/index.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>{{.Title}}</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                margin: 0;
                padding: 0;
                background-color: #f5f5f5;
            }
            .container {
                margin: 50px auto;
                max-width: 800px;
                text-align: center;
                background-color: white;
                padding: 30px;
                border-radius: 8px;
                box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
            }
            h1 {
                color: #333;
            }
            p {
                color: #666;
                font-size: 18px;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <h1>{{.Message}}</h1>
            <p>{{.App}}</p>
        </div>
    </body>
    </html>
    

Csatlakozás alkalmazáskonfigurációs áruházhoz

Hozzon létre egy fájlt appconfig.go az alábbi tartalommal. Az alkalmazáskonfigurációs áruházhoz a Microsoft Entra-azonosító (ajánlott) vagy egy kapcsolati sztring használatával csatlakozhat.

package main

import (
	"context"
	"log"
	"os"

	"github.com/Azure/AppConfiguration-GoProvider/azureappconfiguration"
	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)

func loadAzureAppConfiguration(ctx context.Context) (*azureappconfiguration.AzureAppConfiguration, error) {
	// Get the endpoint from environment variable
	endpoint := os.Getenv("AZURE_APPCONFIG_ENDPOINT")
	if endpoint == "" {
		log.Fatal("AZURE_APPCONFIG_ENDPOINT environment variable is not set")
	}

	// Create a credential using DefaultAzureCredential
	credential, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		log.Fatalf("Failed to create credential: %v", err)
	}

	// Set up authentication options with endpoint and credential
	authOptions := azureappconfiguration.AuthenticationOptions{
		Endpoint:   endpoint,
		Credential: credential,
	}

	// Configure which keys to load and trimming options
	options := &azureappconfiguration.Options{
		Selectors: []azureappconfiguration.Selector{
			{
				KeyFilter:   "Config.*",
				LabelFilter: "",
			},
		},
		TrimKeyPrefixes: []string{"Config."},
	}

	// Load configuration from Azure App Configuration
	appConfig, err := azureappconfiguration.Load(ctx, authOptions, options)
	if err != nil {
		log.Fatalf("Failed to load configuration: %v", err)
	}

	return appConfig, nil
}

Webalkalmazás létrehozása a Gin használatával

Hozzon létre egy fájlt main.go a következő tartalommal:

package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/gin-gonic/gin"
)

type Config struct {
	App     App
	Message string
}

type App struct {
	Name      string
	Port      int
}

func main() {
	// Create a context with timeout
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()

	// Load configuration from Azure App Configuration
	provider, err := loadAzureAppConfiguration(ctx)
	if err != nil {
		log.Fatalf("Error loading configuration: %v", err)
	}

	// Unmarshal the configuration into the application-specific struct
	var config Config
	if err := provider.Unmarshal(&config, nil); err != nil {
		log.Fatalf("Failed to unmarshal configuration: %v", err)
	}

	// Initialize Gin router
	r := gin.Default()

	// Load HTML templates
	r.LoadHTMLGlob("templates/*")

	// Define a route for the homepage
	r.GET("/", func(c *gin.Context) {
		c.HTML(200, "index.html", gin.H{
			"Title":   "Home",
			"Message": config.Message,
			"App":     config.App.Name,
		})
	})

	// Use the port from configuration
	portStr:= fmt.Sprintf(":%d", config.App.Port)
	
	// Start the server on configured port
	log.Printf("Starting %s on http://localhost%s", config.App.Name, portStr)
	if err := r.Run(portStr); err != nil {
		log.Fatalf("Error starting server: %v", err)
	}
}

A webalkalmazás futtatása

  1. Állítsa be a környezeti változót a hitelesítéshez.

    Állítsa a AZURE_APPCONFIG_ENDPOINT nevű környezeti változót az Alkalmazáskonfigurációs áruház végpontjára, amely az Azure Portalon található áruház áttekintésében található.

    Ha a Windows parancssorát használja, futtassa a következő parancsot, és indítsa újra a parancssort a módosítás érvénybe lépésének engedélyezéséhez:

    setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"
    

    Ha a PowerShellt használja, futtassa a következő parancsot:

    $Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
    

    MacOS vagy Linux használata esetén futtassa a következő parancsot:

    export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    

    Emellett győződjön meg arról, hogy bejelentkezett az Azure CLI-vel, vagy környezeti változókat használ az Azure-hitelesítéshez:

    az login
    
  2. Indítsa el az alkalmazást.

    go mod tidy
    go run .
    

    A következőhöz hasonló kimenetnek kell megjelennie:

    Running in DEBUG mode
    Starting Gin Web App on http://localhost:8080
    [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
    [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
    - using env:	export GIN_MODE=release
    - using code:	gin.SetMode(gin.ReleaseMode)
    [GIN-debug] Loading templates from ./templates/*
    [GIN-debug] GET    /                         --> main.main.func1 (3 handlers)
    [GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
    Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
    [GIN-debug] Listening and serving HTTP on :8080
    
  3. Nyisson meg egy webböngészőt, majd navigáljon a következő helyre: http://localhost:8080. A weblap a következőképpen néz ki:

    Képernyőkép a böngészőről. Gyorsútmutató-alkalmazás helyi indítása.

Erőforrások tisztítása

Ha nem szeretné folytatni a cikkben létrehozott erőforrások használatát, törölje az itt létrehozott erőforráscsoportot a díjak elkerülése érdekében.

Fontos

Egy erőforráscsoport törlése visszafordíthatatlan. Az erőforráscsoport és a benne lévő összes erőforrás véglegesen törlődik. Győződjön meg arról, hogy nem véletlenül törli a rossz erőforráscsoportot vagy erőforrásokat. Ha a cikk erőforrásait olyan erőforráscsoporton belül hozta létre, amely más megtartani kívánt erőforrásokat tartalmaz, törölje az egyes erőforrásokat a megfelelő panelről az erőforráscsoport törlése helyett.

  1. Jelentkezzen be az Azure Portalra, és válassza ki az Erőforráscsoportokat.
  2. A Szűrés név szerint mezőbe írja be az erőforráscsoport nevét.
  3. Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
  4. Válassza az Erőforráscsoport törlése lehetőséget.
  5. A rendszer az erőforráscsoport törlésének megerősítését kéri. Adja meg a megerősítéshez az erőforráscsoport nevét, és válassza a Törlés lehetőséget.

Néhány pillanat múlva az erőforráscsoport és annak összes erőforrása törlődik.

Következő lépések

Ebben a rövid útmutatóban létrehozott egy Go-webalkalmazást az Azure App Configuration használatával. Megtanulta végrehajtani az alábbi műveleteket:

  • Konfiguráció betöltése az Azure App Configuration szolgáltatásból egy webalkalmazásban
  • Erősen gépelt konfiguráció használata „Unmarshal” segítségével
  • A webalkalmazás konfigurálása központilag tárolt beállítások alapján

Az Azure App Configuration Go Provider szolgáltatással kapcsolatos további információkért tekintse meg a referencia-dokumentumot.