Skip to content

Commit

Permalink
Warn about kubernetes minimum version (#237)
Browse files Browse the repository at this point in the history
*Warning if attempting to deploy to a cluster with kubectl version less than 1.6
  • Loading branch information
Fattouche committed Jan 16, 2018
1 parent 8f3c768 commit ef200ee
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 3 deletions.
1 change: 1 addition & 0 deletions lib/kubernetes-deploy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@
require 'kubernetes-deploy/duration_parser'

module KubernetesDeploy
MIN_KUBE_VERSION = '1.6.0'
KubernetesDeploy::StatsD.build
end
3 changes: 3 additions & 0 deletions lib/kubernetes-deploy/deploy_task.rb
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,9 @@ def confirm_cluster_reachable
end
end
raise FatalDeploymentError, "Failed to reach server for #{@context}" unless success
if kubectl.server_version < Gem::Version.new(MIN_KUBE_VERSION)
@logger.warn(KubernetesDeploy::Errors.server_version_warning(server_version))
end
end

def confirm_namespace_exists
Expand Down
7 changes: 7 additions & 0 deletions lib/kubernetes-deploy/errors.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,11 @@ def initialize(name, context)
super("Namespace `#{name}` not found in context `#{context}`")
end
end
module Errors
extend self
def server_version_warning(server_version)
"Minimum cluster version requirement of #{MIN_KUBE_VERSION} not met. "\
"Using #{server_version} could result in unexpected behavior as it is no longer tested against"
end
end
end
9 changes: 8 additions & 1 deletion lib/kubernetes-deploy/restart_task.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# frozen_string_literal: true
require 'kubernetes-deploy/kubeclient_builder'
require 'kubernetes-deploy/resource_watcher'
require 'kubernetes-deploy/kubectl'

module KubernetesDeploy
class RestartTask
Expand Down Expand Up @@ -32,7 +33,9 @@ def perform(deployments_names = nil)
@logger.phase_heading("Initializing restart")
verify_namespace
deployments = identify_target_deployments(deployments_names)

if kubectl.server_version < Gem::Version.new(MIN_KUBE_VERSION)
@logger.warn(KubernetesDeploy::Errors.server_version_warning(kubectl.server_version))
end
@logger.phase_heading("Triggering restart by touching ENV[RESTARTED_AT]")
patch_kubeclient_deployments(deployments)

Expand Down Expand Up @@ -153,6 +156,10 @@ def kubeclient
@kubeclient ||= build_v1_kubeclient(@context)
end

def kubectl
@kubectl ||= Kubectl.new(namespace: @namespace, context: @context, logger: @logger, log_failure_by_default: true)
end

def v1beta1_kubeclient
@v1beta1_kubeclient ||= build_v1beta1_kubeclient(@context)
end
Expand Down
9 changes: 7 additions & 2 deletions lib/kubernetes-deploy/runner_task.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ def run!(task_template:, entrypoint:, args:, env_vars: [])
@logger.reset
@logger.phase_heading("Validating configuration")
validate_configuration(task_template, args)

if kubectl.server_version < Gem::Version.new(MIN_KUBE_VERSION)
@logger.warn(KubernetesDeploy::Errors.server_version_warning(kubectl.server_version))
end
@logger.phase_heading("Fetching task template")
raw_template = get_template(task_template)

Expand Down Expand Up @@ -127,14 +129,17 @@ def validate_pod_spec(pod)
f.write recursive_to_h(pod).to_json
f.close

kubectl = Kubectl.new(namespace: @namespace, context: @context, logger: @logger, log_failure_by_default: true)
_out, err, status = kubectl.run("apply", "--dry-run", "-f", f.path)

unless status.success?
raise FatalTaskRunError, "Invalid pod spec: #{err}"
end
end

def kubectl
@kubectl ||= Kubectl.new(namespace: @namespace, context: @context, logger: @logger, log_failure_by_default: true)
end

def recursive_to_h(struct)
if struct.is_a?(Array)
return struct.map { |v| v.is_a?(OpenStruct) || v.is_a?(Array) || v.is_a?(Hash) ? recursive_to_h(v) : v }
Expand Down

0 comments on commit ef200ee

Please sign in to comment.