diff options
author | Andy Librian <andylibrian@gmail.com> | 2020-10-04 21:11:45 +0700 |
---|---|---|
committer | Andy Librian <andylibrian@gmail.com> | 2020-10-04 21:17:00 +0700 |
commit | d6258eb6c234d60db068742308a8a3f9b002ea7d (patch) | |
tree | a6f97dccc74aedf5b5eb99f14338ba4d6a85f1c3 | |
parent | 5954d370718f67ebb220f3dbed24a63adf5c3dae (diff) | |
download | podman-d6258eb6c234d60db068742308a8a3f9b002ea7d.tar.gz podman-d6258eb6c234d60db068742308a8a3f9b002ea7d.tar.bz2 podman-d6258eb6c234d60db068742308a8a3f9b002ea7d.zip |
Add support for resource memory limit to generate kube
addresses #7855
Signed-off-by: Andy Librian <andylibrian@gmail.com>
-rw-r--r-- | libpod/kube.go | 15 | ||||
-rw-r--r-- | test/e2e/generate_kube_test.go | 25 |
2 files changed, 38 insertions, 2 deletions
diff --git a/libpod/kube.go b/libpod/kube.go index f83e99d82..b2a2673ec 100644 --- a/libpod/kube.go +++ b/libpod/kube.go @@ -303,12 +303,23 @@ func containerToV1Container(c *Container) (v1.Container, []v1.Volume, error) { // This should not be applicable //container.EnvFromSource = kubeContainer.Env = envVariables - // TODO enable resources when we can support naming conventions - //container.Resources kubeContainer.SecurityContext = kubeSec kubeContainer.StdinOnce = false kubeContainer.TTY = c.config.Spec.Process.Terminal + if c.config.Spec.Linux != nil && + c.config.Spec.Linux.Resources != nil && + c.config.Spec.Linux.Resources.Memory != nil && + c.config.Spec.Linux.Resources.Memory.Limit != nil { + if kubeContainer.Resources.Limits == nil { + kubeContainer.Resources.Limits = v1.ResourceList{} + } + + qty := kubeContainer.Resources.Limits.Memory() + qty.Set(*c.config.Spec.Linux.Resources.Memory.Limit) + kubeContainer.Resources.Limits[v1.ResourceMemory] = *qty + } + return kubeContainer, kubeVolumes, nil } diff --git a/test/e2e/generate_kube_test.go b/test/e2e/generate_kube_test.go index a3a841dc6..05a7f4ddf 100644 --- a/test/e2e/generate_kube_test.go +++ b/test/e2e/generate_kube_test.go @@ -235,6 +235,31 @@ var _ = Describe("Podman generate kube", func() { } }) + It("podman generate kube on pod with memory limit", func() { + podName := "testMemoryLimit" + podSession := podmanTest.Podman([]string{"pod", "create", "--name", podName}) + podSession.WaitWithDefaultTimeout() + Expect(podSession.ExitCode()).To(Equal(0)) + + ctr1Name := "ctr1" + ctr1Session := podmanTest.Podman([]string{"create", "--name", ctr1Name, "--pod", podName, "--memory", "10Mi", ALPINE, "top"}) + ctr1Session.WaitWithDefaultTimeout() + Expect(ctr1Session.ExitCode()).To(Equal(0)) + + kube := podmanTest.Podman([]string{"generate", "kube", podName}) + kube.WaitWithDefaultTimeout() + Expect(kube.ExitCode()).To(Equal(0)) + + pod := new(v1.Pod) + err := yaml.Unmarshal(kube.Out.Contents(), pod) + Expect(err).To(BeNil()) + + for _, ctr := range pod.Spec.Containers { + memoryLimit, _ := ctr.Resources.Limits.Memory().AsInt64() + Expect(memoryLimit).To(Equal(int64(10 * 1024 * 1024))) + } + }) + It("podman generate kube on pod with ports", func() { podName := "test" podSession := podmanTest.Podman([]string{"pod", "create", "--name", podName, "-p", "4000:4000", "-p", "5000:5000"}) |