diff --git a/pkg/cri/labels/labels.go b/pkg/cri/labels/labels.go index 45cdb038e..80fc8a3d8 100644 --- a/pkg/cri/labels/labels.go +++ b/pkg/cri/labels/labels.go @@ -27,4 +27,12 @@ const ( PinnedImageLabelKey = criContainerdPrefix + ".pinned" // PinnedImageLabelValue is the label value indicating the image is pinned. PinnedImageLabelValue = "pinned" + // ContainerKindLabel is a label key indicating container is sandbox container or application container + ContainerKindLabel = criContainerdPrefix + ".kind" + // ContainerKindSandbox is a label value indicating container is sandbox container + ContainerKindSandbox = "sandbox" + // ContainerKindContainer is a label value indicating container is application container + ContainerKindContainer = "container" + // ContainerMetadataExtension is an extension name that identify metadata of container in CreateContainerRequest + ContainerMetadataExtension = criContainerdPrefix + ".container.metadata" ) diff --git a/pkg/cri/server/container_create.go b/pkg/cri/server/container_create.go index ae62b58b7..a0bd37ba9 100644 --- a/pkg/cri/server/container_create.go +++ b/pkg/cri/server/container_create.go @@ -40,6 +40,7 @@ import ( "github.com/containerd/containerd/v2/pkg/cri/annotations" criconfig "github.com/containerd/containerd/v2/pkg/cri/config" cio "github.com/containerd/containerd/v2/pkg/cri/io" + crilabels "github.com/containerd/containerd/v2/pkg/cri/labels" customopts "github.com/containerd/containerd/v2/pkg/cri/opts" containerstore "github.com/containerd/containerd/v2/pkg/cri/store/container" "github.com/containerd/containerd/v2/pkg/cri/util" @@ -260,7 +261,7 @@ func (c *criService) CreateContainer(ctx context.Context, r *runtime.CreateConta return nil, fmt.Errorf("failed to get container spec opts: %w", err) } - containerLabels := buildLabels(config.Labels, image.ImageSpec.Config.Labels, containerKindContainer) + containerLabels := buildLabels(config.Labels, image.ImageSpec.Config.Labels, crilabels.ContainerKindContainer) sandboxInfo, err := c.client.SandboxStore().Get(ctx, sandboxID) if err != nil { @@ -271,7 +272,7 @@ func (c *criService) CreateContainer(ctx context.Context, r *runtime.CreateConta containerd.WithSpec(spec, specOpts...), containerd.WithRuntime(sandboxInfo.Runtime.Name, sandboxInfo.Runtime.Options), containerd.WithContainerLabels(containerLabels), - containerd.WithContainerExtension(containerMetadataExtension, &meta), + containerd.WithContainerExtension(crilabels.ContainerMetadataExtension, &meta), ) opts = append(opts, containerd.WithSandbox(sandboxID)) diff --git a/pkg/cri/server/helpers.go b/pkg/cri/server/helpers.go index 45c127929..b17fcd2eb 100644 --- a/pkg/cri/server/helpers.go +++ b/pkg/cri/server/helpers.go @@ -38,6 +38,7 @@ import ( "github.com/containerd/containerd/v2/errdefs" clabels "github.com/containerd/containerd/v2/labels" criconfig "github.com/containerd/containerd/v2/pkg/cri/config" + crilabels "github.com/containerd/containerd/v2/pkg/cri/labels" containerstore "github.com/containerd/containerd/v2/pkg/cri/store/container" imagestore "github.com/containerd/containerd/v2/pkg/cri/store/image" runtimeoptions "github.com/containerd/containerd/v2/pkg/runtimeoptions/v1" @@ -71,18 +72,6 @@ const ( // Delimiter used to construct container/sandbox names. nameDelimiter = "_" - // criContainerdPrefix is common prefix for cri-containerd - criContainerdPrefix = "io.cri-containerd" - // containerKindLabel is a label key indicating container is sandbox container or application container - containerKindLabel = criContainerdPrefix + ".kind" - // containerKindSandbox is a label value indicating container is sandbox container - containerKindSandbox = "sandbox" - // containerKindContainer is a label value indicating container is application container - containerKindContainer = "container" - - // containerMetadataExtension is an extension name that identify metadata of container in CreateContainerRequest - containerMetadataExtension = criContainerdPrefix + ".container.metadata" - // defaultIfName is the default network interface for the pods defaultIfName = "eth0" @@ -257,7 +246,7 @@ func buildLabels(configLabels, imageConfigLabels map[string]string, containerTyp for k, v := range configLabels { labels[k] = v } - labels[containerKindLabel] = containerType + labels[crilabels.ContainerKindLabel] = containerType return labels } diff --git a/pkg/cri/server/nri.go b/pkg/cri/server/nri.go index 42253a91d..58ac0798e 100644 --- a/pkg/cri/server/nri.go +++ b/pkg/cri/server/nri.go @@ -18,6 +18,7 @@ package server import ( criconfig "github.com/containerd/containerd/v2/pkg/cri/config" + crilabels "github.com/containerd/containerd/v2/pkg/cri/labels" cstore "github.com/containerd/containerd/v2/pkg/cri/store/container" sstore "github.com/containerd/containerd/v2/pkg/cri/store/sandbox" ) @@ -39,5 +40,5 @@ func (i *criImplementation) ContainerStore() *cstore.Store { } func (i *criImplementation) ContainerMetadataExtensionKey() string { - return containerMetadataExtension + return crilabels.ContainerMetadataExtension } diff --git a/pkg/cri/server/restart.go b/pkg/cri/server/restart.go index 2f4202441..fb4ac5377 100644 --- a/pkg/cri/server/restart.go +++ b/pkg/cri/server/restart.go @@ -29,6 +29,7 @@ import ( "github.com/containerd/containerd/v2/errdefs" containerdimages "github.com/containerd/containerd/v2/images" criconfig "github.com/containerd/containerd/v2/pkg/cri/config" + crilabels "github.com/containerd/containerd/v2/pkg/cri/labels" "github.com/containerd/containerd/v2/pkg/cri/server/podsandbox" "github.com/containerd/containerd/v2/pkg/netns" "github.com/containerd/containerd/v2/platforms" @@ -55,7 +56,7 @@ import ( // recover recovers system state from containerd and status checkpoint. func (c *criService) recover(ctx context.Context) error { // Recover all sandboxes. - sandboxes, err := c.client.Containers(ctx, filterLabel(containerKindLabel, containerKindSandbox)) + sandboxes, err := c.client.Containers(ctx, filterLabel(crilabels.ContainerKindLabel, crilabels.ContainerKindSandbox)) if err != nil { return fmt.Errorf("failed to list sandbox containers: %w", err) } @@ -146,7 +147,7 @@ func (c *criService) recover(ctx context.Context) error { } // Recover all containers. - containers, err := c.client.Containers(ctx, filterLabel(containerKindLabel, containerKindContainer)) + containers, err := c.client.Containers(ctx, filterLabel(crilabels.ContainerKindLabel, crilabels.ContainerKindContainer)) if err != nil { return fmt.Errorf("failed to list containers: %w", err) } @@ -248,9 +249,9 @@ func (c *criService) loadContainer(ctx context.Context, cntr containerd.Containe if err != nil { return container, fmt.Errorf("failed to get container extensions: %w", err) } - ext, ok := exts[containerMetadataExtension] + ext, ok := exts[crilabels.ContainerMetadataExtension] if !ok { - return container, fmt.Errorf("metadata extension %q not found", containerMetadataExtension) + return container, fmt.Errorf("metadata extension %q not found", crilabels.ContainerMetadataExtension) } data, err := typeurl.UnmarshalAny(ext) if err != nil {