2015-07-12 04:04:52 +00:00
|
|
|
<!-- BEGIN MUNGE: UNVERSIONED_WARNING -->
|
|
|
|
|
|
|
|
<!-- BEGIN STRIP_FOR_RELEASE -->
|
|
|
|
|
2015-07-16 17:02:26 +00:00
|
|
|
<img src="http://kubernetes.io/img/warning.png" alt="WARNING"
|
|
|
|
width="25" height="25">
|
|
|
|
<img src="http://kubernetes.io/img/warning.png" alt="WARNING"
|
|
|
|
width="25" height="25">
|
|
|
|
<img src="http://kubernetes.io/img/warning.png" alt="WARNING"
|
|
|
|
width="25" height="25">
|
|
|
|
<img src="http://kubernetes.io/img/warning.png" alt="WARNING"
|
|
|
|
width="25" height="25">
|
|
|
|
<img src="http://kubernetes.io/img/warning.png" alt="WARNING"
|
|
|
|
width="25" height="25">
|
|
|
|
|
|
|
|
<h2>PLEASE NOTE: This document applies to the HEAD of the source tree</h2>
|
|
|
|
|
|
|
|
If you are using a released version of Kubernetes, you should
|
|
|
|
refer to the docs that go with that version.
|
|
|
|
|
2015-12-14 18:37:38 +00:00
|
|
|
<!-- TAG RELEASE_LINK, added by the munger automatically -->
|
2015-07-16 17:02:26 +00:00
|
|
|
<strong>
|
2015-11-03 18:17:57 +00:00
|
|
|
The latest release of this document can be found
|
|
|
|
[here](http://releases.k8s.io/release-1.1/docs/user-guide/services-firewalls.md).
|
2015-07-16 17:02:26 +00:00
|
|
|
|
|
|
|
Documentation for other releases can be found at
|
|
|
|
[releases.k8s.io](http://releases.k8s.io).
|
|
|
|
</strong>
|
|
|
|
--
|
2015-07-13 22:15:35 +00:00
|
|
|
|
2015-07-12 04:04:52 +00:00
|
|
|
<!-- END STRIP_FOR_RELEASE -->
|
|
|
|
|
|
|
|
<!-- END MUNGE: UNVERSIONED_WARNING -->
|
2015-07-17 22:35:41 +00:00
|
|
|
|
2015-06-05 03:52:46 +00:00
|
|
|
# Services and Firewalls
|
|
|
|
|
2015-07-20 22:52:14 +00:00
|
|
|
Many cloud providers (e.g. Google Compute Engine) define firewalls that help prevent inadvertent
|
2015-06-05 03:52:46 +00:00
|
|
|
exposure to the internet. When exposing a service to the external world, you may need to open up
|
|
|
|
one or more ports in these firewalls to serve traffic. This document describes this process, as
|
|
|
|
well as any provider specific details that may be necessary.
|
|
|
|
|
|
|
|
|
|
|
|
### Google Compute Engine
|
2015-07-17 22:35:41 +00:00
|
|
|
|
2015-07-14 18:47:36 +00:00
|
|
|
When using a Service with `spec.type: LoadBalancer`, the firewall will be
|
|
|
|
opened automatically. When using `spec.type: NodePort`, however, the firewall
|
|
|
|
is *not* opened by default.
|
|
|
|
|
2015-06-05 03:52:46 +00:00
|
|
|
Google Compute Engine firewalls are documented [elsewhere](https://cloud.google.com/compute/docs/networking#firewalls_1).
|
|
|
|
|
2015-07-19 05:58:13 +00:00
|
|
|
You can add a firewall with the `gcloud` command line tool:
|
2015-06-05 03:52:46 +00:00
|
|
|
|
2015-07-19 00:38:40 +00:00
|
|
|
```console
|
|
|
|
$ gcloud compute firewall-rules create my-rule --allow=tcp:<port>
|
2015-06-05 03:52:46 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
**Note**
|
|
|
|
There is one important security note when using firewalls on Google Compute Engine:
|
|
|
|
|
2015-08-21 06:43:28 +00:00
|
|
|
as of Kubernetes v1.0.0, GCE firewalls are defined per-vm, rather than per-ip
|
2015-07-14 18:47:36 +00:00
|
|
|
address. This means that when you open a firewall for a service's ports,
|
|
|
|
anything that serves on that port on that VM's host IP address may potentially
|
|
|
|
serve traffic. Note that this is not a problem for other Kubernetes services,
|
|
|
|
as they listen on IP addresses that are different than the host node's external
|
|
|
|
IP address.
|
2015-06-05 03:52:46 +00:00
|
|
|
|
|
|
|
Consider:
|
2015-07-14 18:47:36 +00:00
|
|
|
* You create a Service with an external load balancer (IP Address 1.2.3.4)
|
|
|
|
and port 80
|
|
|
|
* You open the firewall for port 80 for all nodes in your cluster, so that
|
|
|
|
the external Service actually can deliver packets to your Service
|
|
|
|
* You start an nginx server, running on port 80 on the host virtual machine
|
|
|
|
(IP Address 2.3.4.5). This nginx is **also** exposed to the internet on
|
|
|
|
the VM's external IP address.
|
|
|
|
|
|
|
|
Consequently, please be careful when opening firewalls in Google Compute Engine
|
|
|
|
or Google Container Engine. You may accidentally be exposing other services to
|
|
|
|
the wilds of the internet.
|
|
|
|
|
|
|
|
This will be fixed in an upcoming release of Kubernetes.
|
2015-06-05 03:52:46 +00:00
|
|
|
|
|
|
|
### Other cloud providers
|
2015-07-17 22:35:41 +00:00
|
|
|
|
2015-06-05 03:52:46 +00:00
|
|
|
Coming soon.
|
|
|
|
|
2015-07-14 00:13:09 +00:00
|
|
|
|
|
|
|
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
2015-07-16 09:03:32 +00:00
|
|
|
[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/user-guide/services-firewalls.md?pixel)]()
|
2015-07-14 00:13:09 +00:00
|
|
|
<!-- END MUNGE: GENERATED_ANALYTICS -->
|