-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
updating cve advisory for kops-1.7.1 release #3580
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,35 +1,59 @@ | ||
# CVE-2017-14491 | ||
|
||
A vulnerability in dnsmasq, used by kube-dns, requires an upgrade to the kube-dns component. This component is the default DNS component installed in Kubernetes. The vulnerability may be externally exploitable. Links below exist with the full detail | ||
of the CVE. This is not a Kubernetes specific vunerability, but exists in dnsmasq. | ||
A vulnerability in dnsmasq, used by kube-dns, requires an upgrade to the | ||
kube-dns component. This component is the default DNS component installed in | ||
Kubernetes. The vulnerability may be externally exploitable. Links below exist | ||
with the full detail of the CVE. This exploit is not a Kubernetes specific vulnerability but exists in dnsmasq. | ||
|
||
## Current kops Status | ||
|
||
As of 2017/10/08 `kops` fixes are not in a released `kops` version, but you are | ||
able to hotfix any Kubernetes cluster that is 1.4.x or higher. | ||
`kop` release 1.7.1 addresses this CVE. This version of `kops` will upgrade and | ||
create clusters. `kops` 1.8.x release does not contain the required changes. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 1.8.0-alpha.1 doesn't, but alpha.2 and up will |
||
|
||
## Upgrading Cluster | ||
|
||
To update a cluster. The kube-dns deployment will be automatically upgraded. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Dangling sentence |
||
Replace `my-cluster.example.com` with the name of your cluster. If you are | ||
upgrading a Kubernetes 1.4.x or 1.5.x cluster you may need to follow the | ||
instruction below to create a required confimap for kube-dns. | ||
|
||
```bash | ||
kops update cluster --yes --name my-cluster.example.com | ||
``` | ||
|
||
Validate the change was applied to the deployment: | ||
|
||
```bash | ||
kubectl get deployment -n kube-system kube-dns \ | ||
-o jsonpath='{.spec.template.spec.containers[?(@.name == "dnsmasq")].image}' | ||
``` | ||
|
||
The upgrade is will occur once the channels utilty picks up the change within a | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. grammar and typo in mintues |
||
few mintues. | ||
|
||
## Tested Kubernetes Versions | ||
|
||
Kubernetes versions 1.5.8, 1.6.11, 1.7.7, and 1.8.0 have been fully tested with the new version of `kube-dns` deployment. Other versions should function, but upgrading | ||
to fully tested version is recommend. We have had 1.4.x users upgrade successfully, | ||
but we cannot validate full production stability. Local testing in a non-production | ||
environment is always recommended. We are not able to quatify the risk of using | ||
a non-tested version. | ||
Kubernetes versions 1.5.8, 1.6.11, 1.7.7, and 1.8.0 have been fully tested with | ||
the new version of `kube-dns` deployment. Other versions should function, but | ||
upgrading to tested version is recommended. We have had 1.4.x users upgrade | ||
successfully, but we cannot validate full production stability. Local testing | ||
in a non-production environment is always recommended. We are not able to | ||
quatify the risk of using a non-tested version. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. quantify |
||
|
||
## Fixed kops releases | ||
|
||
We are planning releasing fixes in both new 1.7.x and 1.8.x kops releases. | ||
Fixes are in master, but not yet released as of 2017/10/08. We will update this document when releases are available. You are able to continue to use kops, and | ||
apply the hotfix. kops should not downgrade the hotfix. | ||
We are planning to release in 1.8.x kops releases. 1.7.1 release is released with | ||
the needed changes. If you are using the 1.8.x alpha releases, we recommend | ||
applying the hotfixes. | ||
|
||
### Fixed kops Version Matrix | ||
|
||
| kops Version | Fixed | Released | Will Fix | URL | | ||
|---|---|---|---|---| | ||
| 1.7.1 | Y | Y | N/A | [here](https://github.com/kubernetes/kops/releases/tag/1.7.1) | | ||
| master | Y | N | N/A | [here](https://github.com/kubernetes/kops) | | ||
| 1.8.0 | N | N | Y | N/A | | ||
| 1.8.0.alpha.1 | N | Y | N | N/A | | ||
| 1.7.1 | Y | N | N | N/A | | ||
| 1.7.0 | N | Y | N | N/A | | ||
|
||
## kops PR fixes | ||
|
@@ -43,30 +67,37 @@ apply the hotfix. kops should not downgrade the hotfix. | |
|
||
## Hotfix Instructions | ||
|
||
The minimal fix is to just update the container for the pods using dnsmasq. You are able to apply this fix without downtime. Hot fix instruction differ between Kuberentes releases. The newer version of `kube-dns` includes the `k8s-dns-dnsmasq-nanny-amd64` container. | ||
The minimal fix is just to update the container for the pods using dnsmasq. You | ||
are able to apply this fix without downtime. Hotfix instruction differ between | ||
Kubernetes releases. The newer version of `kube-dns` includes the | ||
`k8s-dns-dnsmasq-nanny-amd64` container. | ||
|
||
### Kuberentes Versions 1.6.x and higher | ||
### Kubernetes Versions 1.6.x and higher | ||
|
||
#### Installation of Hot Fix | ||
|
||
Apply the update to the container: | ||
|
||
```bash | ||
kubectl set image deployment/kube-dns -n kube-system dnsmasq=gcr.io/google_containers/k8s-dns-dnsmasq-amd64:1.14.5 | ||
kubectl set image deployment/kube-dns -n kube-system \ | ||
dnsmasq=gcr.io/google_containers/k8s-dns-dnsmasq-amd64:1.14.5 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Shouldn't this be There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nevermind, I think naming changed. Although |
||
``` | ||
|
||
Validate the change was applied to the deployment: | ||
|
||
```bash | ||
kubectl get deployment -n kube-system kube-dns -o jsonpath='{.spec.template.spec.containers[?(@.name == "dnsmasq")].image}' | ||
kubectl get deployment -n kube-system kube-dns \ | ||
-o jsonpath='{.spec.template.spec.containers[?(@.name == "dnsmasq")].image}' | ||
``` | ||
|
||
#### Validation | ||
|
||
To verify that pods were deployed: | ||
|
||
```bash | ||
kubectl get pods -n kube-system -o custom-columns=NAME:.metadata.name,IMAGE:.spec.containers[*].image -l k8s-app=kube-dns | ||
kubectl get pods -n kube-system -o \ | ||
custom-columns=NAME:.metadata.name,IMAGE:.spec.containers[*].image \ | ||
-l k8s-app=kube-dns | ||
``` | ||
|
||
|
||
|
@@ -78,14 +109,15 @@ kube-dns-1100866048-3lqm0 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 | |
kube-dns-1100866048-tjlv2 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5,gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5,gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5 | ||
``` | ||
|
||
### Kuberentes Versions 1.4.x - 1.5.x | ||
### Kubernetes Versions 1.4.x - 1.5.x | ||
|
||
Check to see if you have the new configmap for kube-dns. A configmap is required | ||
for the 1.14.5 containers, and kube-dns will _NOT_ start without the configmap. | ||
Check to see if you have the new configmap for kube-dns. A configmap is | ||
required for the 1.14.5 containers, and kube-dns will _NOT_ start without the | ||
configmap. | ||
|
||
#### Installation of Dependencies | ||
|
||
```console | ||
```bash | ||
kubectl -n kube-system get configmap kube-dns | ||
``` | ||
|
||
|
@@ -100,18 +132,22 @@ kubectl create configmap -n kube-system kube-dns | |
Upgrade the kube-dns container to the new version. | ||
|
||
```bash | ||
kubectl set image deployment/kube-dns -n kube-system dnsmasq=gcr.io/google_containers/k8s-dns-dnsmasq-amd64:1.14.5 | ||
kubectl set image deployment/kube-dns -n kube-system \ | ||
dnsmasq=gcr.io/google_containers/k8s-dns-dnsmasq-amd64:1.14.5 | ||
``` | ||
|
||
Validate the change was applied to the deployment: | ||
|
||
```bash | ||
kubectl get deployment -n kube-system kube-dns -o jsonpath='{.spec.template.spec.containers[?(@.name == "dnsmasq")].image}' | ||
kubectl get deployment -n kube-system kube-dns \ | ||
-o jsonpath='{.spec.template.spec.containers[?(@.name == "dnsmasq")].image}' | ||
``` | ||
To verify that pods were deployed: | ||
|
||
```bash | ||
kubectl get pods -n kube-system -o custom-columns=NAME:.metadata.name,IMAGE:.spec.containers[*].image -l k8s-app=kube-dns | ||
kubectl get pods -n kube-system -o \ | ||
custom-columns=NAME:.metadata.name,IMAGE:.spec.containers[*].image \ | ||
-l k8s-app=kube-dns | ||
``` | ||
|
||
You should see version 1.14.5 for the dnsmasq pod | ||
|
@@ -126,4 +162,4 @@ _TODO_ if someone wants to provide the output. | |
|
||
## Thanks | ||
|
||
Thanks to @mikesplain, @chrislovecnm, @snoby, @justinsb, @3h4x | ||
Thanks to all that helped @mikesplain, @chrislovecnm, @snoby, @justinsb, @3h4x | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We should probably add aaronlevy here also |
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.
Typo:
kops