Aracılığıyla paylaş


Hızlı Başlangıç: Azure Uygulama Yapılandırması ile Go web uygulaması oluşturma

Bu hızlı başlangıçta, Gin çerçevesini ve Azure App Configuration Go sağlayıcısını kullanarak Go web uygulaması için uygulama ayarlarının depolamasını ve yönetimini merkezileştirmek için Azure Uygulama Yapılandırması'nı kullanacaksınız.

Go için Uygulama Yapılandırma sağlayıcısı, Azure Uygulama Yapılandırması'ndan Go uygulamasına anahtar değerleri uygulama çabasını basitleştirir. Go yapısına bağlama ayarlarını etkinleştirir. Birden fazla etiketten yapılandırma kombinasyonu, anahtar ön ekini kırpma, Key Vault referanslarının otomatik çözümü gibi özellikler ve çok daha fazlasını sunar.

Önkoşullar

Anahtar-değer ekleme

aşağıdaki anahtar değerlerini Uygulama Yapılandırması deposuna ekleyin ve Etiket ve İçerik Türü değerlerini varsayılan değerleriyle bırakın. Azure portalını veya CLI'yı kullanarak bir depoya anahtar-değer ekleme hakkında daha fazla bilgi için Anahtar-değer oluşturma bölümüne gidin.

Anahtar Değer
Yapılandırma.Mesaj Azure Uygulama Yapılandırması'ndan merhaba
Config.App.Name Gin Örnek Uygulaması
Config.App.Port 8080

Go web uygulaması oluşturma

  1. Web uygulamanız için yeni bir dizin oluşturun.

    mkdir app-configuration-web
    cd app-configuration-web
    
  2. Yeni bir Go modülü başlatın.

    go mod init app-configuration-web
    
  3. Gerekli bağımlılıkları ekleyin.

    go get github.com/Azure/AppConfiguration-GoProvider/azureappconfiguration
    go get github.com/gin-gonic/gin
    
  4. HTML şablonlarınız için bir şablon dizini oluşturun.

    mkdir templates
    
  5. Giriş sayfası için bir HTML şablonu oluşturun. Aşağıdaki içeriği templates/index.html içerisine ekleyin:

    <!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>
    

Uygulama Yapılandırması deposuna bağlanma

Aşağıdaki içeriğe sahip adlı appconfig.go bir dosya oluşturun. Microsoft Entra Id (önerilen) veya bağlantı dizesi kullanarak Uygulama Yapılandırması mağazanıza bağlanabilirsiniz.

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
}

Gin ile web uygulaması oluşturma

Aşağıdaki içeriğe sahip adlı main.go bir dosya oluşturun:

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)
	}
}

Web uygulamasını çalıştırma

  1. Kimlik doğrulaması için ortam değişkenini ayarlayın.

    AZURE_APPCONFIG_ENDPOINT adlı ortam değişkenini Azure portalındaki mağazanıza genel bakış bölümünde bulunan Uygulama Yapılandırma deponuzun uç noktasına ayarlayın.

    Windows komut istemini kullanıyorsanız, aşağıdaki komutu çalıştırın ve değişikliğin etkili olması için komut istemini yeniden başlatın:

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

    PowerShell kullanıyorsanız aşağıdaki komutu çalıştırın:

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

    macOS veya Linux kullanıyorsanız aşağıdaki komutu çalıştırın:

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

    Ayrıca Azure CLI ile oturum açtığınızdan veya Azure kimlik doğrulaması için ortam değişkenlerini kullandığınızdan emin olun:

    az login
    
  2. Uygulamayı çalıştırın.

    go mod tidy
    go run .
    

    Şuna benzer bir çıktı görmeniz gerekir:

    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. Bir web tarayıcısı açın ve http://localhost:8080adresine gidin. Web sayfası şöyle görünür:

    Tarayıcının ekran görüntüsü. Hızlı başlangıç uygulamasını yerel olarak başlatma.

Kaynakları temizle

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Bir kaynak grubunu silmek geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil seçeneğini seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki Adımlar

Bu hızlı başlangıçta Azure Uygulama Yapılandırması ile bir Go web uygulaması oluşturdunuz. Nasıl yapılacağını öğrendinsiniz:

  • Web uygulamasında Azure Uygulama Yapılandırması'ndan yapılandırmayı yükleme
  • Unmarshal ile kesin türemiş yapılandırma kullanma
  • Web uygulamanızı merkezi olarak depolanan ayarlara göre yapılandırma

Azure App Configuration Go Sağlayıcısı hakkında daha fazla bilgi edinmek için başvuru belgesine bakın.