mirror of https://github.com/k3s-io/k3s
120 lines
5.1 KiB
Go
120 lines
5.1 KiB
Go
/*
|
|
Copyright 2018 The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package storage
|
|
|
|
import (
|
|
"k8s.io/api/core/v1"
|
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/kubernetes/test/e2e/framework"
|
|
"k8s.io/kubernetes/test/e2e/storage/testsuites"
|
|
"k8s.io/kubernetes/test/e2e/storage/utils"
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = utils.SIGDescribe("Subpath", func() {
|
|
f := framework.NewDefaultFramework("subpath")
|
|
|
|
Context("Atomic writer volumes", func() {
|
|
var err error
|
|
var privilegedSecurityContext bool = false
|
|
|
|
BeforeEach(func() {
|
|
By("Setting up data")
|
|
secret := &v1.Secret{ObjectMeta: metav1.ObjectMeta{Name: "my-secret"}, Data: map[string][]byte{"secret-key": []byte("secret-value")}}
|
|
secret, err = f.ClientSet.CoreV1().Secrets(f.Namespace.Name).Create(secret)
|
|
if err != nil && !apierrors.IsAlreadyExists(err) {
|
|
Expect(err).ToNot(HaveOccurred(), "while creating secret")
|
|
}
|
|
|
|
configmap := &v1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Name: "my-configmap"}, Data: map[string]string{"configmap-key": "configmap-value"}}
|
|
configmap, err = f.ClientSet.CoreV1().ConfigMaps(f.Namespace.Name).Create(configmap)
|
|
if err != nil && !apierrors.IsAlreadyExists(err) {
|
|
Expect(err).ToNot(HaveOccurred(), "while creating configmap")
|
|
}
|
|
|
|
})
|
|
|
|
/*
|
|
Release : v1.12
|
|
Testname: SubPath: Reading content from a secret volume.
|
|
Description: Containers in a pod can read content from a secret mounted volume which was configured with a subpath.
|
|
*/
|
|
framework.ConformanceIt("should support subpaths with secret pod", func() {
|
|
pod := testsuites.SubpathTestPod(f, "secret-key", "secret", &v1.VolumeSource{Secret: &v1.SecretVolumeSource{SecretName: "my-secret"}}, privilegedSecurityContext)
|
|
testsuites.TestBasicSubpath(f, "secret-value", pod)
|
|
})
|
|
|
|
/*
|
|
Release : v1.12
|
|
Testname: SubPath: Reading content from a configmap volume.
|
|
Description: Containers in a pod can read content from a configmap mounted volume which was configured with a subpath.
|
|
*/
|
|
framework.ConformanceIt("should support subpaths with configmap pod", func() {
|
|
pod := testsuites.SubpathTestPod(f, "configmap-key", "configmap", &v1.VolumeSource{ConfigMap: &v1.ConfigMapVolumeSource{LocalObjectReference: v1.LocalObjectReference{Name: "my-configmap"}}}, privilegedSecurityContext)
|
|
testsuites.TestBasicSubpath(f, "configmap-value", pod)
|
|
})
|
|
|
|
/*
|
|
Release : v1.12
|
|
Testname: SubPath: Reading content from a configmap volume.
|
|
Description: Containers in a pod can read content from a configmap mounted volume which was configured with a subpath and also using a mountpath that is a specific file.
|
|
*/
|
|
framework.ConformanceIt("should support subpaths with configmap pod with mountPath of existing file", func() {
|
|
pod := testsuites.SubpathTestPod(f, "configmap-key", "configmap", &v1.VolumeSource{ConfigMap: &v1.ConfigMapVolumeSource{LocalObjectReference: v1.LocalObjectReference{Name: "my-configmap"}}}, privilegedSecurityContext)
|
|
file := "/etc/resolv.conf"
|
|
pod.Spec.Containers[0].VolumeMounts[0].MountPath = file
|
|
testsuites.TestBasicSubpathFile(f, "configmap-value", pod, file)
|
|
})
|
|
|
|
/*
|
|
Release : v1.12
|
|
Testname: SubPath: Reading content from a downwardAPI volume.
|
|
Description: Containers in a pod can read content from a downwardAPI mounted volume which was configured with a subpath.
|
|
*/
|
|
framework.ConformanceIt("should support subpaths with downward pod", func() {
|
|
pod := testsuites.SubpathTestPod(f, "downward/podname", "downwardAPI", &v1.VolumeSource{
|
|
DownwardAPI: &v1.DownwardAPIVolumeSource{
|
|
Items: []v1.DownwardAPIVolumeFile{{Path: "downward/podname", FieldRef: &v1.ObjectFieldSelector{APIVersion: "v1", FieldPath: "metadata.name"}}},
|
|
},
|
|
}, privilegedSecurityContext)
|
|
testsuites.TestBasicSubpath(f, pod.Name, pod)
|
|
})
|
|
|
|
/*
|
|
Release : v1.12
|
|
Testname: SubPath: Reading content from a projected volume.
|
|
Description: Containers in a pod can read content from a projected mounted volume which was configured with a subpath.
|
|
*/
|
|
framework.ConformanceIt("should support subpaths with projected pod", func() {
|
|
pod := testsuites.SubpathTestPod(f, "projected/configmap-key", "projected", &v1.VolumeSource{
|
|
Projected: &v1.ProjectedVolumeSource{
|
|
Sources: []v1.VolumeProjection{
|
|
{ConfigMap: &v1.ConfigMapProjection{
|
|
LocalObjectReference: v1.LocalObjectReference{Name: "my-configmap"},
|
|
Items: []v1.KeyToPath{{Path: "projected/configmap-key", Key: "configmap-key"}},
|
|
}},
|
|
},
|
|
},
|
|
}, privilegedSecurityContext)
|
|
testsuites.TestBasicSubpath(f, "configmap-value", pod)
|
|
})
|
|
})
|
|
})
|