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.

102 lines
2.2 KiB

2 years ago
## Apollo config centry
This module implements the `config.Source` interface in kratos based apollo config management center.
[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/github.com/go-kratos/kratos/contrib/config/apollo/v2)
### Quick start
```go
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.
```go
// 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***
```json
{
"http": {
"address": ":8080",
"tls": {
"enable": false,
"cert_file": "",
"key_file": ""
}
}
}
```
you got them in kratos config instance maybe look like:
```go
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
```