-
Notifications
You must be signed in to change notification settings - Fork 40k
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
Adds JUJU to the Kubernetes Provider listing #5414
Conversation
This feature adds Juju provisioning to the kube-up script. It currently parses out the pre-requisits on debian/ubuntu based systems and installs them if they are missing. From there we followed the integration path that was found in the libvirt-coreos path, implementing the methods found in the boilerplate and calling juju service calls. There are a few "arbitrary sleeps" in the code to allow the cloud provider to settle and properly deploy. These are work-around cases from the script executing faster than juju was able to communicate from the state server to subsequent nodes. I left comments inline at these points. To exercise this: export KUBERNETES_PROVIDER=juju cluster/kube-up.sh It will spin up a ref arch with 1 Kubernetes Master, 2 minions, and run the cluster validation checks against the deployment. Bridging the gap between the juju specific bits and the upstream recommended guides for getting started with Juju. To note, if you do not have a "current environment" set in Juju, it will spin up the quickstart integration wizard in interactive mode, allowing you to configure juju, and add the proper provider/use it. Otherwise it assumes you're in the provider you wish to use, and will deploy there.
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project, in which case you'll need to sign a Contributor License Agreement (CLA) at https://cla.developers.google.com/. If you've already signed a CLA, it's possible we don't have your GitHub username or you're using a different email address. Check the information on your CLA or see this help article on setting the email on your git commits. Once you've done that, please reply here to let us know. If you signed the CLA as a corporation, please let us know the company's name. |
It seems that the flags for the various binaries are stored outside this repo, at places like For the other cloud providers which support Is there a reason to have the code for kubernetes-on-juju split across repos in this way? |
Thanks for the review! The current structure of our repositories reflects a pattern we use to separate concerns in the charm store - but this does not reflect the pattern you would need to perform easy updates as the kubernetes project moves foward. I apologize for not recognizing that before issuing the PR. I'll get the charms/bundle pulled into this branch and we will certainly look into conglomerating our resources that are outside of the GCP namespace so it's easier to track. |
# Kubernetes Juju Charms project - located here: https://github.com/whitmo/bundle-kubernetes | ||
|
||
function check_for_ppa(){ | ||
grep -s ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep juju |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not just:
grep -qsw juju /etc/apt/sources.list /etc/apt/sources.list.d/*
Use -q
to make it quiet and -w
to make sure you're matching a whole word (i.e. you want to match juju
but not jujuba
).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You want to make the ppa name parameterizable, or rename the function to check_for_juju_ppa
.
@chuckbutler @whitmo Have you thought about whether your goal is (1) to have periodic releases of Kubernetes-on-JuJu, or (2) to ensure that Kubernetes-on-JuJu is always compatible with the very latest K8s source code. Option (2) comes with higher expectations in terms of test automation and your overall level of involvement in the kubernetes project. If your goal is (1), then we should talk about whether this PR is needed at all. If it is (2), then this PR is definitely the right direction, but I expect additional steps will be needed too, such as moving JuJu Charm files into the kubernetes repo, as mentioned above; and running kubernets e2e test continuously, etc. I'm happy to see either outcome. Also, it is fine to start with 1 and move to 2 in the future. |
} | ||
|
||
function detect-minions(){ | ||
KUBE_MINION_IP_ADDRESSES=($(juju run --service kubernetes "unit-get private-address" --format=yaml | grep Stdout | cut -d "'" -f 2)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
awk
can do both of what grep
and cut
do in a single command... can you use it instead?
Bunch of comments on the bash script... I'll reassign to @erictune to decide whether it's OK to merge though, I'm not very familiar with Juju (well, I know what it is and that's that...) so I'd prefer if someone else would take a look at it. Let me know if you need me to take another look at the shell scripts later in the code review. Cheers, |
Thank you for the review @filbranden. I'll be working on implementing the comments and should have this ready for re-review on Monday. Cheers! |
Thanks, @filbranden. All your comments look reasonable to me. |
- Changed check_for_ppa to be parameterized - Added bash strictmode - refactored the package_status method to consume variables and be a bit nicer to future re-use of the method. - Cut out extra echo -n statements in favor of tr -d or native awk - Refactored branching logic paths to leverage double brackets - normalized local variable annotation - Updated globals to be all CAPS - remainder of filbrandens feedback in validate-cluster.sh
@chuckbutler hoping to hear your thoughts on #5414 (comment) |
We’ve had a bit of a discussion around this to ensure everyone working on the Juju Kubernetes integration is on the same page. We’re all in agreement that having the Juju Charms and Bundles in the Kubernetes repository is in the best interest of our project moving forward. We’re actively working on addressing the automation of e2e testing - and currently have some basic stand up testing and validation running in our CI. It’s not as automated as requested above, but we’re working towards that end. If you’re interested in the CI reports, you can view them here: http://reports.vapour.ws/all-bundle-and-charm-results/gh%3Awhitmo%252Fbundle-kubernetes Adding the visibility of Juju as an officially supported (and hopefully recommended) method to deploy K8’s - we feel this brings users a new and different way to deploy a cluster that has implications beyond just standing up Kubes. We plan to continue adjusting the charms to ensure they work with the latest upstream, and to provide configuration options to run different releases. We would like to continue to support this moving forward as the project evolves. What do you feel are the next steps for the team to proceed forward? |
I'm happy to hear you plan to work on e2e testing, and I'm happy for users to have Juju as an option for deploying Kubernetes. I think the next steps are:
|
Looking at the build failure, it looks like it doesn't like the boilerplate at the top of your shell scripts.
|
|
||
set -euo pipefail | ||
|
||
# Copyright 2014 Canonical LTD. All rights reserved. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we can take code that has anything other than the Kubernetes boilerplate at the top. See comment on conversation tab about github hooks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Brilliant. Thanks for following up on this Eric. I'll get the headers updated and link in the hooks.
Sent using Boxer
On Mar 26, 2015 1:50 PM, Eric Tune notifications@github.com wrote:In cluster/juju/prereqs/ubuntu-juju.sh:
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+set -euo pipefail
+
+# Copyright 2014 Canonical LTD. All rights reserved.
I don't think we can take code that has anything other than the Kubernetes boilerplate at the top. See comment on conversation tab about github hooks.
—Reply to this email directly or view it on GitHub.
I've looked several places and I don't see a CLA that would apply to this PR. Let me know if you think this is wrong, or need to talk about it off-PR. |
because of failing build notifications on kubernetes#5414
@erictune I've got confirmation from legal that our CLA is now signed, and our team has joined the CLA google group. Can you confirm that this is indeed the case? |
I can't see the CLA yet. Let's wait one day to see if things need time to propagate through my side. |
@chuckbutler contact me at etune@google.com |
Ongoing offline CLA discussion... |
I've verified CLA offline. |
Adds JUJU to the Kubernetes Provider listing
This feature adds Juju provisioning to the kube-up script. It currently
parses out the pre-requisits on debian/ubuntu based systems and installs
them if they are missing.
From there we followed the integration path that was found in the
libvirt-coreos path, implementing the methods found in the boilerplate
and calling juju service calls. There are a few "arbitrary sleeps" in
the code to allow the cloud provider to settle and properly deploy.
These are work-around cases from the script executing faster than juju
was able to communicate from the state server to subsequent nodes. I
left comments inline at these points.
To exercise this:
It will spin up a ref arch with 1 Kubernetes Master, 2 minions, and run
the cluster validation checks against the deployment. Bridging the gap
between the juju specific bits and the upstream recommended guides for
getting started with Kubernetes.
To note, if you do not have a "current environment" set in Juju, it will
spin up the quickstart integration wizard in interactive mode, allowing
you to configure juju, and add the proper provider/use it. Otherwise it
assumes you're in the provider you wish to use, and will deploy there.