You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
otto 3e6487c1d2 first commit 2 years ago
..
README.md first commit 2 years ago
apollo.go first commit 2 years ago
go.mod first commit 2 years ago
go.sum first commit 2 years ago
parser.go first commit 2 years ago
watcher.go first commit 2 years ago

README.md

Apollo config centry

This module implements the config.Source interface in kratos based apollo config management center.

go.dev reference

Quick start

import (
	"fmt"
	"log"

	"github.com/go-kratos/kratos/contrib/config/apollo/v2"
	"github.com/go-kratos/kratos/v2/config"
)

func main() {
	c := config.New(
		config.WithSource(
			apollo.NewSource(
				apollo.WithAppID("kratos"),
				apollo.WithCluster("dev"),
				apollo.WithEndpoint("http://localhost:8080"),
				apollo.WithNamespace("application,event.yaml,demo.json"),
				apollo.WithEnableBackup(),
				apollo.WithSecret("ad75b33c77ae4b9c9626d969c44f41ee"),
			),
		),
	)
	var bc bootstrap
	if err := c.Load(); err != nil {
		panic(err)
	}
	
	// use value and watch operations,help yourself. 
}

Options list

You get what you see.

// specify the app id
func WithAppID(appID string) Option
// specify the cluster of application
func WithCluster(cluster string) Option

// enable backup or not, and where to back up them.
func WithBackupPath(backupPath string) Option
func WithDisableBackup() Option
func WithEnableBackup() Option

// specify apollo endpoint, such as http://localhost:8080
func WithEndpoint(endpoint string) Option

// namespaces to load, comma to separate. 
func WithNamespace(name string) Option

// secret is the apollo secret key to access application config.
func WithSecret(secret string) Option

Notice

apollo config center use Namespace to be part of the key. For example:

application.json

{
  "http": {
    "address": ":8080",
    "tls": {
      "enable": false,
      "cert_file": "",
      "key_file": ""
    }
  }
}

you got them in kratos config instance maybe look like:

config := map[string]interface{}{
	// application be part of the key path.
	"application": map[string]interface{}{
        "http": map[string]interface{}{
            "address": ":8080",
            "tls": map[string]interface{}{
                "enable": false,
                "cert_file": "",
                "key_file": ""
            }
        }
    }
}
_ = config