Commit Graph

65 Commits

Author SHA1 Message Date
Ananth Suryanarayana
d50d7763da Add opencontrail networking provisioning support in kubernetes salt based provisioning
OpenContrail is an open-source based networking software which provides virtualization support for the cloud.

This change-set adds ability to install and provision opencontrail software for networking in kubernetes based cloud environment.

There are basically 3 components

o kube-network-manager -- plugin between contrail components and kubernets components
o provision_master.sh -- OpenContrail software installer and provisioner in master node
o provision_minion.sh -- OpenContrail software installer and provisioner in minion node(s)

These are driven via salt configuration files

One can provision opencontrail by just setting "export NETWORK_PROVIDER=opencontrail"
Optionally, OPENCONTRAIL_TAG, and OPENCONTRAIL_KUBERNETES_TAG can be used to
specify opencontrail and contrail-kubernetes software versions to install and provision.

Public-IP Subnet provided by contrail can be configured via OPENCONTRAIL_PUBLIC_SUBNET
environment variable

At this moment, plan is to add support for aws, gce and vagrant based platforms

For more information on contrail-kubernetes, please visit https://github.com/juniper/contrail-kubernetes For more information on opencontrail, please visit http://www.opencontrail.org
2015-10-03 08:03:02 -07:00
Justin Santa Barbara
9f4ec648b4 AWS: Create one storage pool for aufs, not two
We were splitting the aufs storage into docker & kubernetes areas, but
the kubernetes area was filling up very quickly because empty volumes
went on there, and I had originally not sized it big enough for that.

Instead, create one volume for both so they can share space freely.  We
can't do this for devicemapper, but that configuration seems to be
deprecated by Docker anyway.
2015-09-10 07:06:34 -07:00
Justin Santa Barbara
fba216c7b3 AWS: Always install aufs module & tools
Clean up the installation of aufs supporting modules & tools, so we
always install both and only install in one place.

Fixes #12855
2015-08-19 07:27:12 -04:00
Piotr Szczesniak
f48543aba5 Made enabling Kube UI configurable 2015-07-27 08:23:04 +02:00
Brendan Burns
2e282013a8 Generate a kubeconfig file for the kubelet. 2015-07-07 21:29:38 -07:00
Justin Santa Barbara
c676c11189 AWS: Configure SSL certificate alternate-names
GCE does this in its per-provider scripts; this does the same for AWS and lets
other providers do the same; I believe kube2sky requires 10.0.0.1 as a SAN.
2015-07-03 01:18:07 -04:00
Robert Bailey
e6f14a21ce Merge pull request #10403 from justinsb/ebs-for-master-data-2
AWS: Use persistent disk on master
2015-06-26 21:52:10 -07:00
Justin Santa Barbara
a3cb84fa56 AWS: Wait for disk to be attached in setup-master-pd.sh 2015-06-26 11:52:45 -04:00
Justin Santa Barbara
0a4f03f235 AWS: Mount ephemeral on /mnt/ephemeral
If we're going to have a persistent disk on /mnt/master-pd, it seems risky
sometimes to have /mnt be a mounted volume.

A new consistent approach: we mount volumes under /mnt/<name>.
2015-06-26 11:52:45 -04:00
Justin Santa Barbara
7059f379a4 AWS: Mount persistent disk as sdb on master 2015-06-26 11:52:44 -04:00
Adam Sunderland
66e0c5432f Use EBS for Master Data
Signed-off-by: Adam Sunderland <iterion@gmail.com>
2015-06-26 11:52:44 -04:00
Eric Paris
58df58f3d7 Remove unused enable_node_monitoring option
Back in 1a7f7245e7 we dropped the one
place this was used, but left all of the variable and definitions and
garbage around cluster/
2015-06-25 20:57:56 -04:00
Justin Santa Barbara
a4e15cdf3e AWS: Configure minion routes dynamically
We need to implement the Routes interface, and then enable the functionality in the cluster scripts.
2015-06-18 14:59:37 -07:00
Justin Santa Barbara
8aae864784 AWS: Support wheezy, for parity with GCE 2015-06-09 23:45:41 -04:00
krousey
fba6462c0b Merge pull request #9377 from justinsb/aws_persistent_mounts
AWS: add mounts to fstab
2015-06-09 12:57:43 -07:00
krousey
82f922b61d Merge pull request #9378 from justinsb/aws_no_thin_on_wheezy
AWS: Disable thin LVM provisioning on wheezy
2015-06-09 10:01:04 -07:00
krousey
37ed34261e Merge pull request #9364 from justinsb/fix_aws_local_not_in_function
AWS: Fix script issue where local used outside of function
2015-06-09 09:50:43 -07:00
Justin Santa Barbara
d955e532f9 AWS: Add mounts to fstab, to survive reboot 2015-06-08 18:07:22 -04:00
Justin Santa Barbara
f6440247ca AWS: Don't thin provision LVM volume on wheezy
Thin provisioning isn't supported (unless you backport from jessie).

Just use normal LVM volumes with aufs.
2015-06-08 18:06:24 -04:00
Justin Santa Barbara
24de0b4598 AWS: Fix script issue where local used outside of function 2015-06-06 12:19:30 -04:00
Justin Santa Barbara
112a013567 AWS: Support different docker storage mechanism by setting DOCKER_STORAGE
For parity with GCE, we really want to support aufs.

But we previously supported btrfs, so we want to expose that.

Most of the work here is required for aufs, and we let advanced users choose
devicemapper/btrfs if they have a setup that works for those configurations.
2015-06-06 12:13:51 -04:00
Adam Sunderland
2b4d37427e Update Master IAM Policy to Include ELB 2015-06-03 12:20:19 -05:00
Justin Santa Barbara
c4a2631593 Mount logic breaks if /var/lib/kubelet is a symlink
Pass the correct kubelet root-dir on AWS
2015-05-29 20:13:09 -04:00
Tim Hockin
ac3cc3c518 Rename PORTAL_NET all over 2015-05-28 16:10:44 -07:00
Brian Akins
fac4350fa6 Initial addition of CoreOS as minion for AWS cluster 2015-05-13 16:39:22 -04:00
Justin Santa Barbara
23b1a22203 AWS: Don't use policy-rc.d to prevent starting daemons until we're ready
It isn't required
2015-05-12 21:18:48 -04:00
Justin Santa Barbara
ffb0e7f9b8 Install specific salt version on AWS, based on GCE
The latest salt version breaks the container_bridge.py _state function

We can lock to the same version as GCE.  This is not a full fix,
because we can't update to the latest salt without breaking GCE,
but this at least unbreaks and sync AWS with GCE.

This isn't a straight copy from GCE, because we still use
the salt master on AWS (for now)

Fixes #8114
2015-05-12 16:33:56 -04:00
Robert Bailey
c6d4c24f37 Merge pull request #7736 from justinsb/aws_fix_known_tokens_file
AWS: Fix variable naming that meant not all tokens were written
2015-05-04 14:34:11 -07:00
Justin Santa Barbara
96f0a39172 AWS: Fix variable naming that meant not all tokens were written
To resolve the inconsistency, chose to go closer to GCE
2015-05-04 17:28:24 -04:00
Justin Santa Barbara
57f7b658bb AWS: Change apiserver to listen on 443 directly, not through nginx
Mirrors changes in GCE.  I think the same changes will be needed for vagrant.
2015-05-02 16:59:04 -04:00
Eric Paris
6b3a6e6b98 Make copyright ownership statement generic
Instead of saying "Google Inc." (which is not always correct) say "The
Kubernetes Authors", which is generic.
2015-05-01 17:49:56 -04:00
Jan Safranek
6e810492fb Fixed name of kube-proxy path in deployment scripts. 2015-04-28 10:10:37 +02:00
Eric Tune
9044177bb6 Generate a token for kube-proxy.
Tested on GCE.
Includes untested modifications for AWS and Vagrant.
No changes for any other distros.
Probably will work on other up-to-date providers
but beware.  Symptom would be that service proxying
stops working.

 1. Generates a token kube-proxy in AWS, GCE, and Vagrant setup scripts.
 1. Distributes the token via salt-overlay, and salt to /var/lib/kube-proxy/kubeconfig
 1. Changes kube-proxy args:
   - use the --kubeconfig argument
   - changes --master argument from http://MASTER:7080 to https://MASTER
     - http -> https
     - explicit port 7080 -> implied 443

Possible ways this might break other distros:

Mitigation: there is an default empty kubeconfig file.
If the distro does not populate the salt-overlay, then
it should get the empty, which parses to an empty
object, which, combined with the --master argument,
should still work.

Mitigation:
  - azure: Special case to use 7080 in
  - rackspace: way out of date, so don't care.
  - vsphere: way out of date, so don't care.
  - other distros: not using salt.
2015-04-27 08:59:57 -07:00
CJ Cullen
924015dc94 Merge pull request #7182 from justinsb/aws_fix_hostname
AWS: Set hostname_override for minions, back to fully-qualified name
2015-04-22 14:13:53 -07:00
Justin Santa Barbara
4120849cc4 AWS: Set hostname_override for minions, back to fully-qualified name
This is a stop-gap fix; we'd really like to use EC2 instance ids, but that is
blocked by #7092 or changing that health-check to not assume that the node name
is resolvable.

This stop-gap essentially reverts #7072 for AWS
2015-04-22 11:28:53 -07:00
Zach Loafman
86468cd29d Revert "Added kube-proxy token." 2015-04-22 10:55:08 -07:00
Zach Loafman
b98f93bb4b Merge pull request #7112 from erictune/kubeconfig-secrets
Extend PR#5470 for AWS and Vagrant
2015-04-22 09:25:53 -07:00
Eric Tune
2ca8a9d15d Added kube-proxy token.
Generates the new token on AWS, GCE, Vagrant.
Renames instance metadata from "kube-token" to "kubelet-token".
(Is this okay for GKE?)

Having separate tokens for kubelet and kube-proxy permits
using principle of least privilege, makes it easy to
rate limit the clients separately, allows annotation
of apiserver logs with the client identity at a finer grain
than just source-ip.
2015-04-21 09:21:31 -07:00
Eric Tune
7475efbcfb Extend PR#5470 for AWS and Vagrant 2015-04-21 08:22:31 -07:00
Justin Santa Barbara
7d3fe2154e AWS: master should download salt using SSL
The minion already does, but the master was using plain http.
2015-04-18 12:38:52 -07:00
Justin Santa Barbara
b2bce12b6c AWS: Move /var/lib/kubelet to /mnt
The backing for empty-dir volumes otherwise consumes all our disk space
2015-04-17 06:46:08 -07:00
Justin Santa Barbara
72687184b9 Don't always use aws.conf
We don't usually need it, and it makes it harder to put apiserver into a container.
2015-04-14 09:30:00 -07:00
Justin Santa Barbara
49543aca61 Update IAM permissions for minion, to allow EBS 2015-04-10 13:25:42 -07:00
Justin Santa Barbara
2426366ec8 Update cAdvisor with moved docker root on AWS
We set up a symlink now, and we also pass docker_root into the kubelet.

The symlink is probably sufficient, but doing both feels safer.
2015-04-07 10:40:22 -07:00
Justin Santa Barbara
7179f5f004 Change AWS_ZONE to ZONE, for compatibility with e2e tests 2015-03-27 08:53:45 -07:00
Justin Santa Barbara
583892da2d Fix AWS region vs zone
We were specifying a region, but naming it as a zone in util.sh

The zone matters just as much as the region, e.g. for EBS volumes.

We also change the config to require a Zone, not a Region.
But we fallback to get the information from the metadata service.
2015-03-26 15:11:05 -07:00
Brendan Burns
8bac135f85 Configure docker and kubelet on AWS master. 2015-03-24 17:19:06 -07:00
Justin Santa Barbara
6fec242f89 Format ephemeral disks with btrfs, put Docker storage on there
Docker's default storage has severe bugs with older (stable) kernels.

Use btrfs to bypass those issues.
2015-03-19 19:23:29 -04:00
Justin Santa Barbara
9361b76977 Configure separate IAM roles for master & minion, create roles automatically 2015-03-16 10:37:25 -07:00
derekwaynecarr
468bf1da75 Enable common set of admission controllers across salt providers 2015-03-11 11:06:00 -04:00