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.
104 lines
2.3 KiB
104 lines
2.3 KiB
3 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
|
||
|
|
||
|
// inject a logger to debug
|
||
|
func WithLogger(logger log.Logger) 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
|
||
|
```
|