Skip to content

Commit d20db08

Browse files
authored
refactor(config): extract secret manager configuration (#133)
Signed-off-by: Miguel Martinez Trivino <miguel@chainloop.dev>
1 parent 4f95fab commit d20db08

File tree

19 files changed

+2095
-2091
lines changed

19 files changed

+2095
-2091
lines changed

Makefile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,17 @@ api:
2222
make -C ./app/cli api
2323
make -C ./app/artifact-cas api
2424

25+
.PHONY: config
26+
# generate config proto
27+
config:
28+
cd ./internal/credentials/api && buf generate
29+
make -C ./app/controlplane config
30+
make -C ./app/artifact-cas config
31+
2532
.PHONY: generate
2633

2734
# generate
28-
generate:
35+
generate: config api
2936
go generate ./...
3037

3138
.PHONY: all

app/artifact-cas/cmd/main.go

Lines changed: 2 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,11 @@
1616
package main
1717

1818
import (
19-
"errors"
2019
"flag"
21-
"fmt"
2220
"os"
2321
"time"
2422

25-
"github.com/chainloop-dev/chainloop/internal/credentials"
26-
awssecrets "github.com/chainloop-dev/chainloop/internal/credentials/aws"
27-
"github.com/chainloop-dev/chainloop/internal/credentials/gcp"
28-
"github.com/chainloop-dev/chainloop/internal/credentials/vault"
23+
credsConfig "github.com/chainloop-dev/chainloop/internal/credentials/api/credentials/v1"
2924
"github.com/getsentry/sentry-go"
3025

3126
"github.com/chainloop-dev/chainloop/app/artifact-cas/internal/conf"
@@ -108,7 +103,7 @@ func main() {
108103
panic(err)
109104
}
110105

111-
credentialsReader, err := newCredentialsReader(bc.GetCredentialsService(), logger)
106+
credentialsReader, err := credsConfig.NewFromConfig(bc.GetCredentialsService(), logger)
112107
if err != nil {
113108
panic(err)
114109
}
@@ -125,83 +120,6 @@ func main() {
125120
}
126121
}
127122

128-
func newCredentialsReader(conf *conf.Credentials, l log.Logger) (credentials.Reader, error) {
129-
awsc, vaultc, gcpc := conf.GetAwsSecretManager(), conf.GetVault(), conf.GetGcpSecretManager()
130-
if awsc == nil && vaultc == nil && gcpc == nil {
131-
return nil, errors.New("no credentials manager configuration found")
132-
}
133-
134-
if awsc != nil {
135-
return newAWSCredentialsManager(awsc, l)
136-
}
137-
138-
if gcpc != nil {
139-
return newGCPCredentialsManager(gcpc, l)
140-
}
141-
142-
return newVaultCredentialsManager(vaultc, l)
143-
}
144-
145-
func newAWSCredentialsManager(conf *conf.Credentials_AWSSecretManager, l log.Logger) (*awssecrets.Manager, error) {
146-
if conf == nil {
147-
return nil, errors.New("incompleted configuration for AWS secret manager")
148-
}
149-
150-
opts := &awssecrets.NewManagerOpts{
151-
Region: conf.Region,
152-
AccessKey: conf.GetCreds().GetAccessKey(), SecretKey: conf.GetCreds().GetSecretKey(),
153-
Logger: l,
154-
}
155-
156-
m, err := awssecrets.NewManager(opts)
157-
if err != nil {
158-
return nil, fmt.Errorf("configuring the secrets manager: %w", err)
159-
}
160-
161-
_ = l.Log(log.LevelInfo, "msg", "secrets manager configured", "backend", "AWS secret manager")
162-
163-
return m, nil
164-
}
165-
166-
func newVaultCredentialsManager(conf *conf.Credentials_Vault, l log.Logger) (*vault.Manager, error) {
167-
if conf == nil {
168-
return nil, errors.New("incompleted configuration for vault credentials manager")
169-
}
170-
171-
opts := &vault.NewManagerOpts{
172-
AuthToken: conf.Token, Address: conf.Address,
173-
MountPath: conf.MountPath, Logger: l,
174-
}
175-
176-
m, err := vault.NewManager(opts)
177-
if err != nil {
178-
return nil, fmt.Errorf("configuring vault: %w", err)
179-
}
180-
181-
_ = l.Log(log.LevelInfo, "msg", "secrets manager configured", "backend", "Vault")
182-
183-
return m, nil
184-
}
185-
186-
func newGCPCredentialsManager(conf *conf.Credentials_GCPSecretManager, l log.Logger) (*gcp.Manager, error) {
187-
if conf == nil {
188-
return nil, errors.New("uncompleted configuration for GCP secret manager")
189-
}
190-
191-
opts := &gcp.NewManagerOpts{
192-
ProjectID: conf.ProjectId,
193-
ServiceAccountKey: conf.ServiceAccountKey,
194-
Logger: l,
195-
}
196-
197-
m, err := gcp.NewManager(opts)
198-
if err != nil {
199-
return nil, fmt.Errorf("configuring the GCP secret manager: %w", err)
200-
}
201-
202-
return m, nil
203-
}
204-
205123
func initSentry(c *conf.Bootstrap, logger log.Logger) (cleanupFunc func(), err error) {
206124
cleanupFunc = func() {
207125
sentry.Flush(2 * time.Second)
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
# Generated by buf. DO NOT EDIT.
22
version: v1
33
deps:
4+
- remote: buf.build
5+
owner: envoyproxy
6+
repository: protoc-gen-validate
7+
commit: 45685e052c7e406b9fbd441fc7a568a5
48
- remote: buf.build
59
owner: googleapis
610
repository: googleapis
7-
commit: 75b4300737fb4efca0831636be94e517
11+
commit: cc916c31859748a68fd229a3c8d7a2e8

app/artifact-cas/internal/conf/buf.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ breaking:
44
- FILE
55
deps:
66
- buf.build/googleapis/googleapis
7+
- buf.build/envoyproxy/protoc-gen-validate:45685e052c7e406b9fbd441fc7a568a5
78
lint:
89
use:
910
- DEFAULT

0 commit comments

Comments
 (0)