Skip to content

canonical-kubernetes install fails in 02_get-kubectl after-deploy on macOS #187

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
mgeeforce opened this issue May 3, 2018 · 1 comment

Comments

@mgeeforce
Copy link

mgeeforce commented May 3, 2018

With AWS as the target, I get all the way to after-deploy but then conjure-up fails. The AWS EC2 instances are all created and are up and running.

2018-05-03 16:05:53,416 [DEBUG] conjure-up/canonical-kubernetes - step.py:260 - Executing script: /Users/mike/.cache/conjure-up/canonical-kubernetes/steps/00_process-providertype/after-deploy
2018-05-03 16:05:53,440 [INFO] conjure-up/canonical-kubernetes - step.py:215 - Running Canonical Distribution of Kubernetes step: 02_get-kubectl after-deploy.
2018-05-03 16:05:53,621 [DEBUG] conjure-up/canonical-kubernetes - step.py:254 - Storing environment
2018-05-03 16:05:53,627 [DEBUG] conjure-up/canonical-kubernetes - step.py:260 - Executing script: /Users/mike/.cache/conjure-up/canonical-kubernetes/steps/02_get-kubectl/after-deploy
2018-05-03 16:06:45,544 [DEBUG] conjure-up/canonical-kubernetes - events.py:53 - Setting Error at conjureup/events.py:148
2018-05-03 16:06:45,544 [ERROR] conjure-up/canonical-kubernetes - events.py:160 - Unhandled exception in <Task finished coro=<RunStepsController.run_steps() done, defined at /usr/local/Cellar/conjure-up/2.5.6/libexec/lib/python3.6/site-packages/conjureup/controllers/runsteps/gui.py:14> exception=Exception('Failure in step 02_get-kubectl after-deploy',)>
Traceback (most recent call last):
File "/usr/local/Cellar/conjure-up/2.5.6/libexec/lib/python3.6/site-packages/conjureup/controllers/runsteps/gui.py", line 19, in run_steps
step.result = await step.after_deploy(view.set_footer)
File "/usr/local/Cellar/conjure-up/2.5.6/libexec/lib/python3.6/site-packages/conjureup/models/step.py", line 132, in after_deploy
return await self.run(PHASES.AFTER_DEPLOY, msg_cb)
File "/usr/local/Cellar/conjure-up/2.5.6/libexec/lib/python3.6/site-packages/conjureup/models/step.py", line 275, in run
phase.value))
Exception: Failure in step 02_get-kubectl after-deploy
2018-05-03 16:06:45,566 [DEBUG] conjure-up/canonical-kubernetes - init.py:29 - Showing dialog for exception: Failure in step 02_get-kubectl after-deploy
2018-05-03 16:06:56,607 [WARNING] conjure-up/canonical-kubernetes - websockets.protocol: protocol.py:513 - Error in data transfer
Traceback (most recent call last):
File "/usr/local/Cellar/conjure-up/2.5.6/libexec/lib/python3.6/site-packages/websockets/protocol.py", line 496, in transfer_data
msg = yield from self.read_message()
File "/usr/local/Cellar/conjure-up/2.5.6/libexec/lib/python3.6/site-packages/websockets/protocol.py", line 526, in read_message
frame = yield from self.read_data_frame(max_size=self.max_size)
File "/usr/local/Cellar/conjure-up/2.5.6/libexec/lib/python3.6/site-packages/websockets/protocol.py", line 591, in read_data_frame
frame = yield from self.read_frame(max_size)
File "/usr/local/Cellar/conjure-up/2.5.6/libexec/lib/python3.6/site-packages/websockets/protocol.py", line 632, in read_frame
extensions=self.extensions,
File "/usr/local/Cellar/conjure-up/2.5.6/libexec/lib/python3.6/site-packages/websockets/framing.py", line 100, in read
data = yield from reader(2)
File "/usr/local/opt/python/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/streams.py", line 674, in readexactly
yield from self._wait_for_data('readexactly')
File "/usr/local/opt/python/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/streams.py", line 464, in _wait_for_data
yield from self._waiter
File "/usr/local/opt/python/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/selector_events.py", line 723, in _read_ready
data = self._sock.recv(self.max_size)
TimeoutError: [Errno 60] Operation timed out

@kwmonroe
Copy link
Contributor

@mgeeforce i'm unable to reproduce this on my mac. The spell does curl the kubectl binary from google -- is it possible your env is blocking the url or perhaps timed out before grabbing the whole thing (it's about 50MB)?

https://github.com/conjure-up/spells/blob/master/canonical-kubernetes/steps/02_get-kubectl/after-deploy#L11

If you're still having this issue, see if this works from a terminal:

curl -sLO https://storage.googleapis.com/kubernetes-release/release/v1.10.4/bin/darwin/amd64/kubectl

No matter what, we should validate the downloaded bits vs blindly assuming the binary is legit. Something like this in the spell would be nice:

--- a/canonical-kubernetes/steps/02_get-kubectl/after-deploy
+++ b/canonical-kubernetes/steps/02_get-kubectl/after-deploy
@@ -11,6 +11,10 @@ if [[ $(uname -s) = "Darwin" ]]; then
     KUBE_REPO=https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64

     curl -sLO "$KUBE_REPO/kubectl"
+    if ! file kubectl 2>&1 | grep -q 'executable'; then
+        echo "${app} is not an executable"
+        ## EXIT OR RETRY THE DOWNLOAD; TELL THE USER SOMETHING
+    fi
     chmod +x kubectl
     mv kubectl "$KUBE_DEST/kubectl"
 else

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants