mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Merge pull request #22606 from fejta/deployment
Auto commit by PR queue bot
This commit is contained in:
commit
0c10fce98c
@ -36,6 +36,13 @@ import (
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
const (
|
||||
// nginxImage defined in kubectl.go
|
||||
nginxImageName = "nginx"
|
||||
redisImage = "gcr.io/google_containers/redis:e2e"
|
||||
redisImageName = "redis"
|
||||
)
|
||||
|
||||
var _ = Describe("Deployment", func() {
|
||||
f := NewDefaultFramework("deployment")
|
||||
|
||||
@ -205,17 +212,17 @@ func testNewDeployment(f *Framework) {
|
||||
c := clientset.FromUnversionedClient(f.Client)
|
||||
|
||||
deploymentName := "test-new-deployment"
|
||||
podLabels := map[string]string{"name": "nginx"}
|
||||
podLabels := map[string]string{"name": nginxImageName}
|
||||
replicas := 1
|
||||
Logf("Creating simple deployment %s", deploymentName)
|
||||
d := newDeployment(deploymentName, replicas, podLabels, "nginx", "gcr.io/google_containers/nginx", extensions.RollingUpdateDeploymentStrategyType, nil)
|
||||
d := newDeployment(deploymentName, replicas, podLabels, nginxImageName, nginxImage, extensions.RollingUpdateDeploymentStrategyType, nil)
|
||||
d.Annotations = map[string]string{"test": "should-copy-to-replica-set", kubectl.LastAppliedConfigAnnotation: "should-not-copy-to-replica-set"}
|
||||
_, err := c.Extensions().Deployments(ns).Create(d)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
defer stopDeployment(c, f.Client, ns, deploymentName)
|
||||
|
||||
// Wait for it to be updated to revision 1
|
||||
err = waitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", "gcr.io/google_containers/nginx")
|
||||
err = waitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", nginxImage)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
err = waitForDeploymentStatus(c, ns, deploymentName, replicas, replicas-1, replicas+1, 0)
|
||||
@ -242,12 +249,12 @@ func testRollingUpdateDeployment(f *Framework) {
|
||||
deploymentPodLabels := map[string]string{"name": "sample-pod"}
|
||||
rsPodLabels := map[string]string{
|
||||
"name": "sample-pod",
|
||||
"pod": "nginx",
|
||||
"pod": nginxImageName,
|
||||
}
|
||||
|
||||
rsName := "test-rolling-update-controller"
|
||||
replicas := 3
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(newRS(rsName, replicas, rsPodLabels, "nginx", "gcr.io/google_containers/nginx"))
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(newRS(rsName, replicas, rsPodLabels, nginxImageName, nginxImage))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
// Verify that the required pods have come up.
|
||||
err = verifyPods(unversionedClient, ns, "sample-pod", false, 3)
|
||||
@ -259,12 +266,12 @@ func testRollingUpdateDeployment(f *Framework) {
|
||||
// Create a deployment to delete nginx pods and instead bring up redis pods.
|
||||
deploymentName := "test-rolling-update-deployment"
|
||||
Logf("Creating deployment %s", deploymentName)
|
||||
_, err = c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, "redis", "gcr.io/google_containers/redis", extensions.RollingUpdateDeploymentStrategyType, nil))
|
||||
_, err = c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, redisImageName, redisImage, extensions.RollingUpdateDeploymentStrategyType, nil))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
defer stopDeployment(c, f.Client, ns, deploymentName)
|
||||
|
||||
// Wait for it to be updated to revision 1
|
||||
err = waitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", "gcr.io/google_containers/redis")
|
||||
err = waitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", redisImage)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
err = waitForDeploymentStatus(c, ns, deploymentName, replicas, replicas-1, replicas+1, 0)
|
||||
@ -292,7 +299,7 @@ func testRollingUpdateDeploymentEvents(f *Framework) {
|
||||
deploymentPodLabels := map[string]string{"name": "sample-pod-2"}
|
||||
rsPodLabels := map[string]string{
|
||||
"name": "sample-pod-2",
|
||||
"pod": "nginx",
|
||||
"pod": nginxImageName,
|
||||
}
|
||||
rsName := "test-rolling-scale-controller"
|
||||
replicas := 1
|
||||
@ -300,7 +307,7 @@ func testRollingUpdateDeploymentEvents(f *Framework) {
|
||||
rsRevision := "3546343826724305832"
|
||||
annotations := make(map[string]string)
|
||||
annotations[deploymentutil.RevisionAnnotation] = rsRevision
|
||||
rs := newRS(rsName, replicas, rsPodLabels, "nginx", "gcr.io/google_containers/nginx")
|
||||
rs := newRS(rsName, replicas, rsPodLabels, nginxImageName, nginxImage)
|
||||
rs.Annotations = annotations
|
||||
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(rs)
|
||||
@ -315,12 +322,12 @@ func testRollingUpdateDeploymentEvents(f *Framework) {
|
||||
// Create a deployment to delete nginx pods and instead bring up redis pods.
|
||||
deploymentName := "test-rolling-scale-deployment"
|
||||
Logf("Creating deployment %s", deploymentName)
|
||||
_, err = c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, "redis", "gcr.io/google_containers/redis", extensions.RollingUpdateDeploymentStrategyType, nil))
|
||||
_, err = c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, redisImageName, redisImage, extensions.RollingUpdateDeploymentStrategyType, nil))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
defer stopDeployment(c, f.Client, ns, deploymentName)
|
||||
|
||||
// Wait for it to be updated to revision 3546343826724305833
|
||||
err = waitForDeploymentRevisionAndImage(c, ns, deploymentName, "3546343826724305833", "gcr.io/google_containers/redis")
|
||||
err = waitForDeploymentRevisionAndImage(c, ns, deploymentName, "3546343826724305833", redisImage)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
err = waitForDeploymentStatus(c, ns, deploymentName, replicas, replicas-1, replicas+1, 0)
|
||||
@ -354,12 +361,12 @@ func testRecreateDeployment(f *Framework) {
|
||||
deploymentPodLabels := map[string]string{"name": "sample-pod-3"}
|
||||
rsPodLabels := map[string]string{
|
||||
"name": "sample-pod-3",
|
||||
"pod": "nginx",
|
||||
"pod": nginxImageName,
|
||||
}
|
||||
|
||||
rsName := "test-recreate-controller"
|
||||
replicas := 3
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(newRS(rsName, replicas, rsPodLabels, "nginx", "gcr.io/google_containers/nginx"))
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(newRS(rsName, replicas, rsPodLabels, nginxImageName, nginxImage))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
// Verify that the required pods have come up.
|
||||
err = verifyPods(unversionedClient, ns, "sample-pod-3", false, 3)
|
||||
@ -371,12 +378,12 @@ func testRecreateDeployment(f *Framework) {
|
||||
// Create a deployment to delete nginx pods and instead bring up redis pods.
|
||||
deploymentName := "test-recreate-deployment"
|
||||
Logf("Creating deployment %s", deploymentName)
|
||||
_, err = c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, "redis", "gcr.io/google_containers/redis", extensions.RecreateDeploymentStrategyType, nil))
|
||||
_, err = c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, redisImageName, redisImage, extensions.RecreateDeploymentStrategyType, nil))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
defer stopDeployment(c, f.Client, ns, deploymentName)
|
||||
|
||||
// Wait for it to be updated to revision 1
|
||||
err = waitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", "gcr.io/google_containers/redis")
|
||||
err = waitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", redisImage)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
err = waitForDeploymentStatus(c, ns, deploymentName, replicas, 0, replicas, 0)
|
||||
@ -409,12 +416,12 @@ func testDeploymentCleanUpPolicy(f *Framework) {
|
||||
deploymentPodLabels := map[string]string{"name": "cleanup-pod"}
|
||||
rsPodLabels := map[string]string{
|
||||
"name": "cleanup-pod",
|
||||
"pod": "nginx",
|
||||
"pod": nginxImageName,
|
||||
}
|
||||
rsName := "test-cleanup-controller"
|
||||
replicas := 1
|
||||
revisionHistoryLimit := util.IntPtr(0)
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(newRS(rsName, replicas, rsPodLabels, "nginx", "gcr.io/google_containers/nginx"))
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(newRS(rsName, replicas, rsPodLabels, nginxImageName, nginxImage))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
// Verify that the required pods have come up.
|
||||
@ -427,7 +434,7 @@ func testDeploymentCleanUpPolicy(f *Framework) {
|
||||
// Create a deployment to delete nginx pods and instead bring up redis pods.
|
||||
deploymentName := "test-cleanup-deployment"
|
||||
Logf("Creating deployment %s", deploymentName)
|
||||
_, err = c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, "redis", "gcr.io/google_containers/redis", extensions.RollingUpdateDeploymentStrategyType, revisionHistoryLimit))
|
||||
_, err = c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, redisImageName, redisImage, extensions.RollingUpdateDeploymentStrategyType, revisionHistoryLimit))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
defer stopDeployment(c, f.Client, ns, deploymentName)
|
||||
|
||||
@ -447,12 +454,12 @@ func testRolloverDeployment(f *Framework) {
|
||||
deploymentPodLabels := map[string]string{"name": podName}
|
||||
rsPodLabels := map[string]string{
|
||||
"name": podName,
|
||||
"pod": "nginx",
|
||||
"pod": nginxImageName,
|
||||
}
|
||||
|
||||
rsName := "test-rollover-controller"
|
||||
rsReplicas := 4
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(newRS(rsName, rsReplicas, rsPodLabels, "nginx", "gcr.io/google_containers/nginx"))
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(newRS(rsName, rsReplicas, rsPodLabels, nginxImageName, nginxImage))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
// Verify that the required pods have come up.
|
||||
err = verifyPods(unversionedClient, ns, podName, false, rsReplicas)
|
||||
@ -492,7 +499,7 @@ func testRolloverDeployment(f *Framework) {
|
||||
// Before the deployment finishes, update the deployment to rollover the above 2 ReplicaSets and bring up redis pods.
|
||||
// If the deployment already finished here, the test would fail. When this happens, increase its minReadySeconds or replicas to prevent it.
|
||||
Expect(newRS.Spec.Replicas).Should(BeNumerically("<", deploymentReplicas))
|
||||
updatedDeploymentImageName, updatedDeploymentImage := "redis", "gcr.io/google_containers/redis"
|
||||
updatedDeploymentImageName, updatedDeploymentImage := redisImageName, redisImage
|
||||
deployment, err = updateDeploymentWithRetries(c, ns, newDeployment.Name, func(update *extensions.Deployment) {
|
||||
update.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
|
||||
update.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
|
||||
@ -518,8 +525,8 @@ func testPausedDeployment(f *Framework) {
|
||||
unversionedClient := f.Client
|
||||
c := clientset.FromUnversionedClient(unversionedClient)
|
||||
deploymentName := "test-paused-deployment"
|
||||
podLabels := map[string]string{"name": "nginx"}
|
||||
d := newDeployment(deploymentName, 1, podLabels, "nginx", "gcr.io/google_containers/nginx", extensions.RollingUpdateDeploymentStrategyType, nil)
|
||||
podLabels := map[string]string{"name": nginxImageName}
|
||||
d := newDeployment(deploymentName, 1, podLabels, nginxImageName, nginxImage, extensions.RollingUpdateDeploymentStrategyType, nil)
|
||||
d.Spec.Paused = true
|
||||
Logf("Creating paused deployment %s", deploymentName)
|
||||
_, err := c.Extensions().Deployments(ns).Create(d)
|
||||
@ -604,9 +611,9 @@ func testRollbackDeployment(f *Framework) {
|
||||
deploymentPodLabels := map[string]string{"name": podName}
|
||||
|
||||
// 1. Create a deployment to create nginx pods.
|
||||
deploymentName, deploymentImageName := "test-rollback-deployment", "nginx"
|
||||
deploymentName, deploymentImageName := "test-rollback-deployment", nginxImageName
|
||||
deploymentReplicas := 1
|
||||
deploymentImage := "gcr.io/google_containers/nginx"
|
||||
deploymentImage := nginxImage
|
||||
deploymentStrategyType := extensions.RollingUpdateDeploymentStrategyType
|
||||
Logf("Creating deployment %s", deploymentName)
|
||||
d := newDeployment(deploymentName, deploymentReplicas, deploymentPodLabels, deploymentImageName, deploymentImage, deploymentStrategyType, nil)
|
||||
@ -622,8 +629,8 @@ func testRollbackDeployment(f *Framework) {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
// 2. Update the deployment to create redis pods.
|
||||
updatedDeploymentImage := "gcr.io/google_containers/redis"
|
||||
updatedDeploymentImageName := "redis"
|
||||
updatedDeploymentImage := redisImage
|
||||
updatedDeploymentImageName := redisImageName
|
||||
deployment, err := updateDeploymentWithRetries(c, ns, d.Name, func(update *extensions.Deployment) {
|
||||
update.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
|
||||
update.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
|
||||
@ -692,22 +699,22 @@ func testRollbackDeploymentRSNoRevision(f *Framework) {
|
||||
deploymentPodLabels := map[string]string{"name": podName}
|
||||
rsPodLabels := map[string]string{
|
||||
"name": podName,
|
||||
"pod": "nginx",
|
||||
"pod": nginxImageName,
|
||||
}
|
||||
|
||||
// Create an old RS without revision
|
||||
rsName := "test-rollback-no-revision-controller"
|
||||
rsReplicas := 0
|
||||
rs := newRS(rsName, rsReplicas, rsPodLabels, "nginx", "gcr.io/google_containers/nginx")
|
||||
rs := newRS(rsName, rsReplicas, rsPodLabels, nginxImageName, nginxImage)
|
||||
rs.Annotations = make(map[string]string)
|
||||
rs.Annotations["make"] = "difference"
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(rs)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
// 1. Create a deployment to create nginx pods, which have different template than the replica set created above.
|
||||
deploymentName, deploymentImageName := "test-rollback-no-revision-deployment", "nginx"
|
||||
deploymentName, deploymentImageName := "test-rollback-no-revision-deployment", nginxImageName
|
||||
deploymentReplicas := 1
|
||||
deploymentImage := "gcr.io/google_containers/nginx"
|
||||
deploymentImage := nginxImage
|
||||
deploymentStrategyType := extensions.RollingUpdateDeploymentStrategyType
|
||||
Logf("Creating deployment %s", deploymentName)
|
||||
d := newDeployment(deploymentName, deploymentReplicas, deploymentPodLabels, deploymentImageName, deploymentImage, deploymentStrategyType, nil)
|
||||
@ -745,8 +752,8 @@ func testRollbackDeploymentRSNoRevision(f *Framework) {
|
||||
checkDeploymentRevision(c, ns, deploymentName, "1", deploymentImageName, deploymentImage)
|
||||
|
||||
// 3. Update the deployment to create redis pods.
|
||||
updatedDeploymentImage := "gcr.io/google_containers/redis"
|
||||
updatedDeploymentImageName := "redis"
|
||||
updatedDeploymentImage := redisImage
|
||||
updatedDeploymentImageName := redisImageName
|
||||
deployment, err := updateDeploymentWithRetries(c, ns, d.Name, func(update *extensions.Deployment) {
|
||||
update.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
|
||||
update.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
|
||||
@ -831,7 +838,7 @@ func testDeploymentLabelAdopted(f *Framework) {
|
||||
|
||||
rsName := "test-adopted-controller"
|
||||
replicas := 3
|
||||
image := "gcr.io/google_containers/nginx"
|
||||
image := nginxImage
|
||||
_, err := c.Extensions().ReplicaSets(ns).Create(newRS(rsName, replicas, podLabels, podName, image))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
// Verify that the required pods have come up.
|
||||
|
Loading…
Reference in New Issue
Block a user