kontena / mortar

The manifest shooter for Kubernetes
Apache License 2.0
145 stars 14 forks source link

binary install: Tried to load unspecified class: Time (Psych::DisallowedClass) #93

Closed matti closed 5 years ago

matti commented 5 years ago

with https://github.com/kontena/mortar/releases/download/v0.3.2/mortar-darwin-amd64-0.3.2

$ mortar fire --var name=aa webdriver.yaml aa
/__enclose_io_memfs__/lib/ruby/2.4.0/psych/class_loader.rb:97:in `find': Tried to load unspecified class: Time (Psych::DisallowedClass)
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/class_loader.rb:28:in `load'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/scalar_scanner.rb:124:in `parse_time'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/scalar_scanner.rb:63:in `tokenize'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:60:in `deserialize'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:123:in `visit_Psych_Nodes_Scalar'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:16:in `visit'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:6:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:32:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:338:in `block in revive_hash'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `each'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `each_slice'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:162:in `visit_Psych_Nodes_Mapping'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:16:in `visit'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:6:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:32:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:338:in `block in revive_hash'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `each'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `each_slice'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:162:in `visit_Psych_Nodes_Mapping'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:16:in `visit'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:6:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:32:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:338:in `block in revive_hash'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `each'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `each_slice'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:162:in `visit_Psych_Nodes_Mapping'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:16:in `visit'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:6:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:32:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:338:in `block in revive_hash'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `each'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `each_slice'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:162:in `visit_Psych_Nodes_Mapping'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:16:in `visit'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:6:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:32:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:330:in `block in register_empty'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:330:in `each'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:330:in `register_empty'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:141:in `visit_Psych_Nodes_Sequence'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:16:in `visit'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:6:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:32:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:338:in `block in revive_hash'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `each'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `each_slice'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:162:in `visit_Psych_Nodes_Mapping'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:16:in `visit'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:6:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:32:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:311:in `visit_Psych_Nodes_Document'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:16:in `visit'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/visitor.rb:6:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych/visitors/to_ruby.rb:32:in `accept'
    from /__enclose_io_memfs__/lib/ruby/2.4.0/psych.rb:302:in `safe_load'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/gems/k8s-client-0.8.1/lib/k8s/config.rb:106:in `load_file'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/gems/kontena-mortar-0.3.2/lib/mortar/mixins/client_helper.rb:14:in `create_client'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/gems/kontena-mortar-0.3.2/lib/mortar/mixins/client_helper.rb:7:in `client'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/gems/kontena-mortar-0.3.2/lib/mortar/fire_command.rb:64:in `execute'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/gems/clamp-1.3.0/lib/clamp/command.rb:66:in `run'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/gems/clamp-1.3.0/lib/clamp/subcommand/execution.rb:18:in `execute'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/gems/clamp-1.3.0/lib/clamp/command.rb:66:in `run'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/gems/clamp-1.3.0/lib/clamp/command.rb:140:in `run'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/gems/kontena-mortar-0.3.2/bin/mortar:13:in `<top (required)>'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/bin/mortar:23:in `load'
    from /__enclose_io_memfs__/lib/ruby/gems/2.4.0/bin/mortar:23:in `<main>'
jakolehm commented 5 years ago

Cannot reproduce this. Maybe it was really badly formatted yaml?

matti commented 5 years ago

maybe, cant repro now either

jakolehm commented 5 years ago

@kke invalid kubeconfig causes this.

matti commented 5 years ago
  user:
    auth-provider:
      config:
        access-token: 
        cmd-args: config config-helper --format=json
        cmd-path: /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/gcloud
        expiry: 2019-01-29T14:20:36Z
        expiry-key: '{.credential.token_expiry}'
        token-key: '{.credential.access_token}'
      name: gcp

when I add quotes in expiry: 2019-01-29T14:20:36Z --> expiry: '2019-01-29T14:20:36Z' it works.

gcloud writes it like that

matti commented 5 years ago

fun fact: brew install kontena/mortar/mortar installed mortar works with this yaml, https://github.com/kontena/mortar/releases/download/v0.3.2/mortar-darwin-amd64-0.3.2 does not

kke commented 5 years ago

I think 0.3.1 uses a version of k8s-client which uses load_stream instead of safe_load_stream.

If we just whitelist Time, then it may bump into a problem when trying to create/apply a K8s::Resource with an instance of Time as value.

kke commented 5 years ago

Yeah the problem is actually in k8s-client kubeconfig loader, not in mortar. Moving this there.

matti commented 5 years ago

@kke @jakolehm https://github.com/kontena/k8s-client/pull/103 merged

can't wait to finally have gke support!

jnummelin commented 5 years ago

closed on k8s-client