Metadata Management

Tagger

Declarative label and annotation management for Kubernetes resources at scale. Automate cost allocation, enforce governance, and maintain consistent metadata across your entire cluster.

Tagger wireframe
01

Overview

Tagger is a Kubernetes Operator for OpenShift that solves the challenge of maintaining consistent, declarative metadata across heterogeneous resources at scale. Manual label management is error-prone, unsustainable, and doesn't scale in large clusters. Tagger transforms metadata management from a manual chore into a policy-driven, automated system that ensures your labels and annotations are always correct.

Define TaggingPolicy custom resources that specify which resources to target, what labels and annotations to apply, and where those values come from. Tagger supports static values, namespace inheritance, ConfigMap references, HTTP endpoints with full authentication support, and Go templates with custom functions. Whether you need cost-center labels for FinOps, team ownership annotations for incident response, or compliance metadata for governance, Tagger ensures your metadata is consistent and continuously enforced.

02

Features

Dual Enforcement Modes

Choose continuous reconciliation to ensure labels persist even when manually modified, or creation-only mode via mutating webhook to apply immutable metadata at resource creation time. Each mode optimized for different use cases.

Dynamic Value Sources

Pull tag values from static definitions, namespace labels and annotations, ConfigMaps, HTTP endpoints with JSONPath extraction, or Go templates. Supports complex value derivation including regex extraction and string manipulation.

HTTP Integration with Auth

Query external systems like Jira, ServiceNow, cost platforms, or CMDBs. Supports Bearer, Basic, API Key, and mTLS authentication. Response caching reduces API load while keeping values fresh.

Namespace Inheritance

Automatically propagate labels and annotations from namespaces to child resources. Filter by prefix to inherit only specific metadata like cost-center, team, or compliance labels. Automatic re-reconciliation when namespace labels change.

Priority-Based Conflict Resolution

When multiple policies target the same resource, higher priority policies take precedence. Combine with selective overwrite settings to respect manual overrides or preserve labels from other controllers.

OpenShift Console Plugin

Native OpenShift console integration with PatternFly UI. Browse, create, and manage TaggingPolicies with real-time statistics, condition monitoring, and editing directly from the OpenShift web console.

03

Use Cases

04

Custom Resources

05

Example Workflow

This example demonstrates applying cost allocation labels to all Deployments in namespaces labeled with a cost-center. Labels are inherited from the namespace and applied continuously to ensure consistency.

# 1. Label your namespace with cost metadata
oc label namespace production cost-center=engineering project=platform-core

# 2. Create a TaggingPolicy to propagate cost labels
cat <<EOF | oc apply -f -
apiVersion: tagger.cosmosdevops.co.uk/v1alpha1
kind: TaggingPolicy
metadata:
  name: cost-allocation-deployments
  namespace: tagger-system
spec:
  enforcementMode: continuous
  targets:
    - apiGroups: ["apps"]
      kinds: ["Deployment"]
  namespaceSelector:
    matchExpressions:
      - key: cost-center
        operator: Exists
  inheritFromNamespace:
    enabled: true
    labelPrefixes: ["cost-center", "project"]
  priority: 100
EOF

# 3. Verify the policy is active
oc get taggingpolicy -n tagger-system

# 4. Check that Deployments now have cost labels
oc get deployment -n production --show-labels

Automate Your Metadata Strategy

Stop manually managing labels across thousands of resources. Tagger brings declarative, policy-driven metadata management to your Kubernetes cluster. Enable FinOps, improve incident response, and enforce governance with a single operator.