Class: Kube::Cluster::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/kube/cluster/middleware.rb,
lib/kube/cluster/middleware/stack.rb,
lib/kube/cluster/middleware/labels.rb,
lib/kube/cluster/middleware/namespace.rb,
lib/kube/cluster/middleware/annotations.rb,
lib/kube/cluster/middleware/resource_preset.rb,
lib/kube/cluster/middleware/security_context.rb,
lib/kube/cluster/middleware/pod_anti_affinity.rb,
lib/kube/cluster/middleware/hpa_for_deployment.rb,
lib/kube/cluster/middleware/ingress_for_service.rb,
lib/kube/cluster/middleware/service_for_deployment.rb

Overview

Base class for manifest middleware.

Middleware receives the full manifest and mutates it in place. Each middleware is responsible for iterating resources as needed.

Transform example:

class AddTeamLabel < Middleware
  def call(manifest)
    manifest.resources.map! do |resource|
      h = resource.to_h
      h[:metadata][:labels][:"app.kubernetes.io/team"] = "platform"
      resource.rebuild(h)
    end
  end
end

Generative example:

class ServiceForDeployment < Middleware
  def call(manifest)
    generated = []
    manifest.resources.each do |resource|
      next unless resource.pod_bearing?
      generated << build_service_from(resource)
    end
    manifest.resources.concat(generated)
  end
end

Defined Under Namespace

Classes: Annotations, HPAForDeployment, IngressForService, Labels, Namespace, PodAntiAffinity, ResourcePreset, SecurityContext, ServiceForDeployment, Stack

Instance Method Summary collapse

Constructor Details

#initialize(**opts) ⇒ Middleware

Returns a new instance of Middleware.



47
48
49
# File 'lib/kube/cluster/middleware.rb', line 47

def initialize(**opts)
  @opts = opts
end

Instance Method Details

#call(manifest) ⇒ Object

Override in subclasses. Receives the full manifest, mutates it in place.



53
54
# File 'lib/kube/cluster/middleware.rb', line 53

def call(manifest)
end