Sha256: 39c20a5561bed4fc3e3d4ba55a489c09a593e8311124f1220c3953c0b6028e90

Contents?: true

Size: 1.7 KB

Versions: 23

Compression:

Stored size: 1.7 KB

Contents

# typed: true
require 'kube-dsl'

module Kuby
  module Plugins
    class NginxIngress < ::Kuby::Plugin
      class Config
        extend ::KubeDSL::ValueFields

        value_fields :provider
      end

      VERSION = '0.27.1'.freeze
      DEFAULT_PROVIDER = 'cloud-generic'.freeze
      NAMESPACE = 'ingress-nginx'.freeze
      SERVICE_NAME = 'ingress-nginx'.freeze

      SETUP_RESOURCES = [
        "https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-#{VERSION}/deploy/static/mandatory.yaml",
        "https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-#{VERSION}/deploy/static/provider/%{provider}.yaml"
      ].freeze

      def configure(&block)
        @config.instance_eval(&block) if block
      end

      def setup
        Kuby.logger.info('Deploying nginx ingress resources')

        if already_deployed?
          Kuby.logger.info('Nginx ingress already deployed, skipping')
          return
        end

        SETUP_RESOURCES.each do |uri|
          uri = uri % { provider: @config.provider || DEFAULT_PROVIDER }
          kubernetes_cli.apply_uri(uri)
        end

        Kuby.logger.info('Nginx ingress resources deployed!')
      rescue => e
        Kuby.logger.fatal(e.message)
        raise
      end

      def namespace
        NAMESPACE
      end

      def service_name
        SERVICE_NAME
      end

      private

      def already_deployed?
        kubernetes_cli.get_object('Service', 'ingress-nginx', 'ingress-nginx')
        true
      rescue KubernetesCLI::GetResourceError
        return false
      end

      def after_initialize
        @config = Config.new
      end

      def kubernetes_cli
        environment.kubernetes.provider.kubernetes_cli
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
kuby-core-0.17.0 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.16.1 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.16.0 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.15.0 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.14.0 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.13.0 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.12.0 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.16 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.15 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.14 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.13 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.12 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.11 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.10 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.9 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.8 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.7 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.6 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.4 lib/kuby/plugins/nginx_ingress.rb
kuby-core-0.11.3 lib/kuby/plugins/nginx_ingress.rb