From 0b5689f3e0dbe3d4d7472934602430d2cc41a149 Mon Sep 17 00:00:00 2001 From: abushwang Date: Mon, 9 Dec 2024 17:13:31 +0800 Subject: [PATCH] fusemanager: resolve review comments Signed-off-by: abushwang --- cmd/containerd-stargz-grpc/fsopts/fsopts.go | 4 ++-- cmd/containerd-stargz-grpc/main.go | 19 +++++++----------- .../fusemanager/service.go | 20 +++++++++---------- fs/fs.go | 2 +- .../keychain/keychainconfig/keychainconfig.go | 9 ++++----- 5 files changed, 24 insertions(+), 30 deletions(-) diff --git a/cmd/containerd-stargz-grpc/fsopts/fsopts.go b/cmd/containerd-stargz-grpc/fsopts/fsopts.go index e678f52bb..269ad3cec 100644 --- a/cmd/containerd-stargz-grpc/fsopts/fsopts.go +++ b/cmd/containerd-stargz-grpc/fsopts/fsopts.go @@ -37,8 +37,8 @@ type Config struct { } const ( - memoryMetadataType = "memory" - dbMetadataType = "db" + memoryMetadataType = "memory" + dbMetadataType = "db" ) func ConfigFsOpts(ctx context.Context, rootDir string, config *Config) ([]fs.Option, error) { diff --git a/cmd/containerd-stargz-grpc/main.go b/cmd/containerd-stargz-grpc/main.go index 596002730..21c572bb7 100644 --- a/cmd/containerd-stargz-grpc/main.go +++ b/cmd/containerd-stargz-grpc/main.go @@ -46,7 +46,6 @@ import ( "github.com/pelletier/go-toml" "golang.org/x/sys/unix" "google.golang.org/grpc" - runtime "k8s.io/cri-api/pkg/apis/runtime/v1" ) const ( @@ -55,10 +54,10 @@ const ( defaultLogLevel = log.InfoLevel defaultRootDir = "/var/lib/containerd-stargz-grpc" defaultImageServiceAddress = "/run/containerd/containerd.sock" - defaultFuseManagerAddress = "/run/containerd-stargz-grpc/fuse-namanger.sock" + defaultFuseManagerAddress = "/run/containerd-stargz-grpc/fuse-manager.sock" fuseManagerBin = "stargz-fuse-manager" - fuseManagerAddress = "fuse-mananger.sock" + fuseManagerAddress = "fuse-manager.sock" ) var ( @@ -148,15 +147,6 @@ func main() { ImageServicePath: config.CRIKeychainConfig.ImageServicePath, } - credsFuncs, criServer, err := keychainconfig.ConfigKeychain(ctx, &keyChainConfig) - if err != nil { - log.G(ctx).WithError(err).Fatalf("failed to configure keychain") - } - - if config.Config.CRIKeychainConfig.EnableKeychain { - runtime.RegisterImageServiceServer(rpc, criServer) - } - var rs snapshots.Snapshotter if *detachFuseManager { fmPath := config.FuseManagerPath @@ -197,6 +187,11 @@ func main() { } log.G(ctx).Infof("Start snapshotter with fusemanager mode") } else { + credsFuncs, err := keychainconfig.ConfigKeychain(ctx, rpc, &keyChainConfig) + if err != nil { + log.G(ctx).WithError(err).Fatalf("failed to configure keychain") + } + fsConfig := fsopts.Config{ EnableIpfs: config.IPFS, MetadataStore: config.MetadataStore, diff --git a/cmd/stargz-fuse-manager/fusemanager/service.go b/cmd/stargz-fuse-manager/fusemanager/service.go index 9c8fc145a..e2a1fb7a2 100644 --- a/cmd/stargz-fuse-manager/fusemanager/service.go +++ b/cmd/stargz-fuse-manager/fusemanager/service.go @@ -47,9 +47,9 @@ const ( ) type Config struct { - Config *service.Config - IPFS bool - MetadataStore string + Config *service.Config + IPFS bool + MetadataStore string DefaultImageServiceAddress string } @@ -87,12 +87,12 @@ func NewFuseManager(ctx context.Context, listener net.Listener, server *grpc.Ser } fm := &Server{ - status: FuseManagerWaitInit, - lock: sync.RWMutex{}, - fsMap: sync.Map{}, - ms: db, - listener: listener, - server: server, + status: FuseManagerWaitInit, + lock: sync.RWMutex{}, + fsMap: sync.Map{}, + ms: db, + listener: listener, + server: server, fuseStoreAddr: fuseStoreAddr, } @@ -136,7 +136,7 @@ func (fm *Server) Init(ctx context.Context, req *pb.InitRequest) (*pb.Response, ImageServicePath: config.Config.CRIKeychainConfig.ImageServicePath, } - credsFuncs, _, err := keychainconfig.ConfigKeychain(ctx, &keyChainConfig) + credsFuncs, err := keychainconfig.ConfigKeychain(ctx, fm.server, &keyChainConfig) if err != nil { log.G(ctx).WithError(err).Fatalf("failed to configure keychain") } diff --git a/fs/fs.go b/fs/fs.go index 35e7e20bc..4547ae32e 100644 --- a/fs/fs.go +++ b/fs/fs.go @@ -176,7 +176,7 @@ func NewFilesystem(root string, cfg config.Config, opts ...Option) (_ snapshot.F logLevel = *fsOpts.metricsLogLevel } commonmetrics.Register(logLevel) // Register common metrics. This will happen only once. - metrics.Register(ns) // Register layer metrics. + metrics.Register(ns) // Register layer metrics. } if metricsCtr == nil { metricsCtr = layermetrics.NewLayerMetrics(ns) diff --git a/service/keychain/keychainconfig/keychainconfig.go b/service/keychain/keychainconfig/keychainconfig.go index c28c23983..3cf973a1f 100644 --- a/service/keychain/keychainconfig/keychainconfig.go +++ b/service/keychain/keychainconfig/keychainconfig.go @@ -40,9 +40,8 @@ type Config struct { ImageServicePath string } -func ConfigKeychain(ctx context.Context, config *Config) ([]resolver.Credential, runtime.ImageServiceServer, error) { +func ConfigKeychain(ctx context.Context, rpc *grpc.Server, config *Config) ([]resolver.Credential, error) { credsFuncs := []resolver.Credential{dockerconfig.NewDockerconfigKeychain(ctx)} - var criServer runtime.ImageServiceServer if config.EnableKubeKeychain { var opts []kubeconfig.Option if kcp := config.KubeconfigPath; kcp != "" { @@ -63,12 +62,12 @@ func ConfigKeychain(ctx context.Context, config *Config) ([]resolver.Credential, } return runtime.NewImageServiceClient(conn), nil } - f, server := cri.NewCRIKeychain(ctx, connectCRI) + f, criServer := cri.NewCRIKeychain(ctx, connectCRI) + runtime.RegisterImageServiceServer(rpc, criServer) credsFuncs = append(credsFuncs, f) - criServer = server } - return credsFuncs, criServer, nil + return credsFuncs, nil } func newCRIConn(criAddr string) (*grpc.ClientConn, error) {