Class: Kube::Cluster::Middleware::Labels
- Inherits:
-
Kube::Cluster::Middleware
- Object
- Kube::Cluster::Middleware
- Kube::Cluster::Middleware::Labels
- Defined in:
- lib/kube/cluster/middleware/labels.rb
Overview
Merges labels into metadata.labels on every resource. Existing labels are preserved; the supplied labels act as defaults that can be overridden per-resource.
stack do
use Middleware::Labels, app: "web-app", managed_by: "kube_cluster"
end
The keyword arguments are converted to standard label keys:
app: -> "app.kubernetes.io/name"
instance: -> "app.kubernetes.io/instance"
version: -> "app.kubernetes.io/version"
component: -> "app.kubernetes.io/component"
part_of: -> "app.kubernetes.io/part-of"
managed_by: -> "app.kubernetes.io/managed-by"
Any unrecognized keys are passed through as-is (string or symbol).
Constant Summary collapse
- STANDARD_KEYS =
{ app: :"app.kubernetes.io/name", instance: :"app.kubernetes.io/instance", version: :"app.kubernetes.io/version", component: :"app.kubernetes.io/component", part_of: :"app.kubernetes.io/part-of", managed_by: :"app.kubernetes.io/managed-by", }.freeze
Instance Method Summary collapse
- #call(manifest) ⇒ Object
-
#initialize(**labels) ⇒ Labels
constructor
A new instance of Labels.
Constructor Details
#initialize(**labels) ⇒ Labels
Returns a new instance of Labels.
35 36 37 |
# File 'lib/kube/cluster/middleware/labels.rb', line 35 def initialize(**labels) @labels = normalize(labels) end |
Instance Method Details
#call(manifest) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/kube/cluster/middleware/labels.rb', line 39 def call(manifest) manifest.resources.map! do |resource| h = resource.to_h h[:metadata] ||= {} h[:metadata][:labels] = @labels.merge(h[:metadata][:labels] || {}) resource.rebuild(h) end end |