mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2026-01-08 00:01:40 +00:00
Merge pull request #53816 from marun/remove-federation
Automatic merge from submit-queue (batch tested with PRs 54112, 54150, 53816, 54321, 54338). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Remove federation This PR removes the federation codebase and associated tooling from the tree. The first commit just removes the `federation` path and should be uncontroversial. The second commit removes references and associated tooling and suggests careful review. Requirements for merge: - [x] Bazel jobs no longer hard-code federation as a target ([test infra #4983](https://github.com/kubernetes/test-infra/pull/4983)) - [x] `federation-e2e` jobs are not run by default for k/k **Release note**: ```release-note Development of Kubernetes Federation has moved to github.com/kubernetes/federation. This move out of tree also means that Federation will begin releasing separately from Kubernetes. The impact of this is Federation-specific behavior will no longer be included in kubectl, kubefed will no longer be released as part of Kubernetes, and the Federation servers will no longer be included in the hyperkube binary and image. ``` cc: @kubernetes/sig-multicluster-pr-reviews @kubernetes/sig-testing-pr-reviews
This commit is contained in:
@@ -50,7 +50,6 @@ go_library(
|
||||
],
|
||||
importpath = "k8s.io/kubernetes/test/e2e",
|
||||
deps = [
|
||||
"//federation/test/e2e:go_default_library",
|
||||
"//pkg/api:go_default_library",
|
||||
"//pkg/api/testapi:go_default_library",
|
||||
"//pkg/api/v1/pod:go_default_library",
|
||||
|
||||
@@ -35,9 +35,8 @@ import (
|
||||
type Suite string
|
||||
|
||||
const (
|
||||
E2E Suite = "e2e"
|
||||
NodeE2E Suite = "node e2e"
|
||||
FederationE2E Suite = "federation e2e"
|
||||
E2E Suite = "e2e"
|
||||
NodeE2E Suite = "node e2e"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
@@ -34,7 +34,6 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
runtimeutils "k8s.io/apimachinery/pkg/util/runtime"
|
||||
clientset "k8s.io/client-go/kubernetes"
|
||||
federationtest "k8s.io/kubernetes/federation/test/e2e"
|
||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/azure"
|
||||
gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
||||
"k8s.io/kubernetes/pkg/kubectl/util/logs"
|
||||
@@ -161,7 +160,6 @@ var _ = ginkgo.SynchronizedBeforeSuite(func() []byte {
|
||||
metav1.NamespaceSystem,
|
||||
metav1.NamespaceDefault,
|
||||
metav1.NamespacePublic,
|
||||
framework.FederationSystemNamespace(),
|
||||
})
|
||||
if err != nil {
|
||||
framework.Failf("Error deleting orphaned namespaces: %v", err)
|
||||
@@ -239,9 +237,6 @@ var _ = ginkgo.SynchronizedBeforeSuite(func() []byte {
|
||||
// Reference common test to make the import valid.
|
||||
commontest.CurrentSuite = commontest.E2E
|
||||
|
||||
// Reference federation test to make the import valid.
|
||||
federationtest.FederationSuite = commontest.FederationE2E
|
||||
|
||||
return nil
|
||||
|
||||
}, func(data []byte) {
|
||||
|
||||
@@ -12,7 +12,6 @@ go_library(
|
||||
"cleanup.go",
|
||||
"deployment_util.go",
|
||||
"exec_util.go",
|
||||
"federation_util.go",
|
||||
"firewall_util.go",
|
||||
"framework.go",
|
||||
"get-kubemark-resource-usage.go",
|
||||
@@ -41,7 +40,6 @@ go_library(
|
||||
],
|
||||
importpath = "k8s.io/kubernetes/test/e2e/framework",
|
||||
deps = [
|
||||
"//federation/apis/federation/v1beta1:go_default_library",
|
||||
"//pkg/api:go_default_library",
|
||||
"//pkg/api/legacyscheme:go_default_library",
|
||||
"//pkg/api/testapi:go_default_library",
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
Copyright 2016 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 framework
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||
)
|
||||
|
||||
// FederationSystemNamespace returns the namespace in which
|
||||
// the federation system components are hosted.
|
||||
func FederationSystemNamespace() string {
|
||||
federationNS := os.Getenv("FEDERATION_NAMESPACE")
|
||||
if federationNS != "" {
|
||||
return federationNS
|
||||
}
|
||||
return federationapi.FederationNamespaceSystem
|
||||
}
|
||||
@@ -102,12 +102,6 @@ type TestContextType struct {
|
||||
FeatureGates string
|
||||
// Node e2e specific test context
|
||||
NodeTestContextType
|
||||
// Federation e2e context
|
||||
FederatedKubeContext string
|
||||
// Federation control plane version to upgrade to while doing upgrade tests
|
||||
FederationUpgradeTarget string
|
||||
// Whether configuration for accessing federation member clusters should be sourced from the host cluster
|
||||
FederationConfigFromCluster bool
|
||||
|
||||
// Indicates what path the kubernetes-anywhere is installed on
|
||||
KubernetesAnywherePath string
|
||||
@@ -217,8 +211,6 @@ func RegisterClusterFlags() {
|
||||
flag.StringVar(&TestContext.KubemarkExternalKubeConfig, fmt.Sprintf("%s-%s", "kubemark-external", clientcmd.RecommendedConfigPathFlag), "", "Path to kubeconfig containing embedded authinfo for external cluster.")
|
||||
flag.StringVar(&TestContext.KubeContext, clientcmd.FlagContext, "", "kubeconfig context to use/override. If unset, will use value from 'current-context'")
|
||||
flag.StringVar(&TestContext.KubeAPIContentType, "kube-api-content-type", "application/vnd.kubernetes.protobuf", "ContentType used to communicate with apiserver")
|
||||
flag.StringVar(&TestContext.FederatedKubeContext, "federated-kube-context", "e2e-federation", "kubeconfig context for federation.")
|
||||
flag.BoolVar(&TestContext.FederationConfigFromCluster, "federation-config-from-cluster", false, "whether to source configuration for member clusters from the hosting cluster.")
|
||||
|
||||
flag.StringVar(&TestContext.KubeVolumeDir, "volume-dir", "/var/lib/kubelet", "Path to the directory containing the kubelet volumes.")
|
||||
flag.StringVar(&TestContext.CertDir, "cert-dir", "", "Path to the directory containing the certs. Default is empty, which doesn't use certs.")
|
||||
@@ -256,7 +248,6 @@ func RegisterClusterFlags() {
|
||||
flag.StringVar(&TestContext.EtcdUpgradeVersion, "etcd-upgrade-version", "", "The etcd binary version to upgrade to (e.g., '3.0.14', '2.3.7') if doing an etcd upgrade test.")
|
||||
flag.StringVar(&TestContext.UpgradeImage, "upgrade-image", "", "Image to upgrade to (e.g. 'container_vm' or 'gci') if doing an upgrade test.")
|
||||
flag.StringVar(&TestContext.GCEUpgradeScript, "gce-upgrade-script", "", "Script to use to upgrade a GCE cluster.")
|
||||
flag.StringVar(&TestContext.FederationUpgradeTarget, "federation-upgrade-target", "ci/latest", "Version to upgrade to (e.g. 'release/stable', 'release/latest', 'ci/latest', '0.19.1', '0.19.1-669-gabac8c8') if doing an federation upgrade test.")
|
||||
flag.BoolVar(&TestContext.CleanStart, "clean-start", false, "If true, purge all namespaces except default and system before running tests. This serves to Cleanup test namespaces from failed/interrupted e2e runs in a long-lived cluster.")
|
||||
flag.BoolVar(&TestContext.GarbageCollectorEnabled, "garbage-collector-enabled", true, "Set to true if the garbage collector is enabled in the kube-apiserver and kube-controller-manager, then some tests will rely on the garbage collector to delete dependent resources.")
|
||||
}
|
||||
|
||||
@@ -378,9 +378,6 @@ var etcdStorageData = map[schema.GroupVersionResource]struct {
|
||||
// Be very careful when whitelisting an object as ephemeral.
|
||||
// Doing so removes the safety we gain from this test by skipping that object.
|
||||
var ephemeralWhiteList = createEphemeralWhiteList(
|
||||
// k8s.io/kubernetes/federation/apis/federation/v1beta1
|
||||
gvr("federation", "v1beta1", "clusters"), // we cannot create this
|
||||
// --
|
||||
|
||||
// k8s.io/kubernetes/pkg/api/v1
|
||||
gvr("", "v1", "bindings"), // annotation on pod, not stored in etcd
|
||||
|
||||
@@ -145,48 +145,6 @@ EmptyDir wrapper volumes should not conflict,deads2k,1,node
|
||||
Etcd failure should recover from SIGKILL,pmorie,1,api-machinery
|
||||
Etcd failure should recover from network partition with master,justinsb,1,api-machinery
|
||||
Events should be sent by kubelets and the scheduler about pods scheduling and running,zmerlynn,1,node
|
||||
Federated ReplicaSet Features CRUD should be deleted from underlying clusters when OrphanDependents is false,perotinus,0,federation
|
||||
Federated ReplicaSet Features CRUD should create and update matching replicasets in underlying clusters,perotinus,0,federation
|
||||
Federated ReplicaSet Features CRUD should not be deleted from underlying clusters when OrphanDependents is nil,perotinus,0,federation
|
||||
Federated ReplicaSet Features CRUD should not be deleted from underlying clusters when OrphanDependents is true,perotinus,0,federation
|
||||
Federated ReplicaSet Features Preferences should create replicasets with max replicas preference,perotinus,0,federation
|
||||
Federated ReplicaSet Features Preferences should create replicasets with min replicas preference,perotinus,0,federation
|
||||
Federated ReplicaSet Features Preferences should create replicasets with weight preference,perotinus,0,federation
|
||||
Federated ReplicaSet ReplicaSet objects should be created and deleted successfully,perotinus,0,federation
|
||||
Federated Services Without Clusters should succeed when a service is created,shashidharatd,0,federation
|
||||
Federated Services with clusters DNS non-local federated service missing local service should never find DNS entries for a missing local service,shashidharatd,0,federation
|
||||
Federated Services with clusters DNS should be able to discover a federated service,shashidharatd,0,federation
|
||||
Federated Services with clusters Federated Service should be deleted from underlying clusters when OrphanDependents is false,shashidharatd,0,federation
|
||||
Federated Services with clusters Federated Service should create and update matching services in underlying clusters,shashidharatd,0,federation
|
||||
Federated Services with clusters Federated Service should not be deleted from underlying clusters when OrphanDependents is nil,shashidharatd,0,federation
|
||||
Federated Services with clusters Federated Service should not be deleted from underlying clusters when OrphanDependents is true,shashidharatd,0,federation
|
||||
Federated Services with clusters Federated Service should recreate service shard in underlying clusters when service shard is deleted,shashidharatd,0,federation
|
||||
Federated ingresses Federated Ingresses should be created and deleted successfully,madhusudancs,0,federation
|
||||
Federated ingresses Federated Ingresses should be deleted from underlying clusters when OrphanDependents is false,madhusudancs,0,federation
|
||||
Federated ingresses Federated Ingresses should create and update matching ingresses in underlying clusters,madhusudancs,0,federation
|
||||
Federated ingresses Federated Ingresses should not be deleted from underlying clusters when OrphanDependents is nil,madhusudancs,0,federation
|
||||
Federated ingresses Federated Ingresses should not be deleted from underlying clusters when OrphanDependents is true,madhusudancs,0,federation
|
||||
"Federated types Federated %q resources should be created, read, updated and deleted successfully",marun,0,federation
|
||||
Federation API server authentication should accept cluster resources when the client has HTTP Basic authentication credentials,nikhiljindal,0,federation
|
||||
Federation API server authentication should accept cluster resources when the client has certificate authentication credentials,nikhiljindal,0,federation
|
||||
Federation API server authentication should accept cluster resources when the client has token authentication credentials,nikhiljindal,0,federation
|
||||
Federation API server authentication should not accept cluster resources when the client has invalid HTTP Basic authentication credentials,nikhiljindal,0,federation
|
||||
Federation API server authentication should not accept cluster resources when the client has invalid token authentication credentials,nikhiljindal,0,federation
|
||||
Federation API server authentication should not accept cluster resources when the client has no authentication credentials,nikhiljindal,0,federation
|
||||
Federation apiserver Admission control should not be able to create resources if namespace does not exist,nikhiljindal,0,federation
|
||||
Federation apiserver Cluster objects should be created and deleted successfully,nikhiljindal,0,federation
|
||||
Federation deployments Deployment objects should be created and deleted successfully,nikhiljindal,0,federation
|
||||
Federation deployments Federated Deployment should be deleted from underlying clusters when OrphanDependents is false,nikhiljindal,0,federation
|
||||
Federation deployments Federated Deployment should create and update matching deployments in underlying clusters,nikhiljindal,0,federation
|
||||
Federation deployments Federated Deployment should not be deleted from underlying clusters when OrphanDependents is nil,nikhiljindal,0,federation
|
||||
Federation deployments Federated Deployment should not be deleted from underlying clusters when OrphanDependents is true,nikhiljindal,0,federation
|
||||
Federation events Event objects should be created and deleted successfully,shashidharatd,0,federation
|
||||
Federation namespace Namespace objects all resources in the namespace should be deleted when namespace is deleted,nikhiljindal,0,federation
|
||||
Federation namespace Namespace objects deletes replicasets in the namespace when the namespace is deleted,nikhiljindal,0,federation
|
||||
Federation namespace Namespace objects should be created and deleted successfully,nikhiljindal,0,federation
|
||||
Federation namespace Namespace objects should be deleted from underlying clusters when OrphanDependents is false,nikhiljindal,0,federation
|
||||
Federation namespace Namespace objects should not be deleted from underlying clusters when OrphanDependents is nil,nikhiljindal,0,federation
|
||||
Federation namespace Namespace objects should not be deleted from underlying clusters when OrphanDependents is true,nikhiljindal,0,federation
|
||||
Firewall rule should create valid firewall rules for LoadBalancer type service,MrHohn,0,network
|
||||
Firewall rule should have correct firewall rules for e2e cluster,MrHohn,0,network
|
||||
GCP Volumes GlusterFS should be mountable,nikhiljindal,0,storage
|
||||
@@ -587,27 +545,6 @@ k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types,caesarxuchao,0,
|
||||
k8s.io/kubernetes/cmd/libs/go2idl/go-to-protobuf/protobuf,smarterclayton,0,
|
||||
k8s.io/kubernetes/cmd/libs/go2idl/openapi-gen/generators,davidopp,1,
|
||||
k8s.io/kubernetes/examples,Random-Liu,0,
|
||||
k8s.io/kubernetes/federation/apis/federation/install,nikhiljindal,0,
|
||||
k8s.io/kubernetes/federation/apis/federation/validation,nikhiljindal,0,
|
||||
k8s.io/kubernetes/federation/cmd/federation-controller-manager/app,kzwang,0,
|
||||
k8s.io/kubernetes/federation/pkg/dnsprovider,sttts,1,
|
||||
k8s.io/kubernetes/federation/pkg/dnsprovider/providers/aws/route53,cjcullen,1,
|
||||
k8s.io/kubernetes/federation/pkg/dnsprovider/providers/coredns,brendandburns,0,
|
||||
k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns,madhusudancs,1,
|
||||
k8s.io/kubernetes/federation/pkg/federation-controller/cluster,nikhiljindal,0,
|
||||
k8s.io/kubernetes/federation/pkg/federation-controller/deployment,zmerlynn,1,
|
||||
k8s.io/kubernetes/federation/pkg/federation-controller/ingress,vishh,1,
|
||||
k8s.io/kubernetes/federation/pkg/federation-controller/replicaset,roberthbailey,1,
|
||||
k8s.io/kubernetes/federation/pkg/federation-controller/secret,apelisse,1,
|
||||
k8s.io/kubernetes/federation/pkg/federation-controller/service,pmorie,1,
|
||||
k8s.io/kubernetes/federation/pkg/federation-controller/util,bgrant0607,1,
|
||||
k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink,luxas,1,
|
||||
k8s.io/kubernetes/federation/pkg/federation-controller/util/planner,Q-Lee,1,
|
||||
k8s.io/kubernetes/federation/pkg/federation-controller/util/podanalyzer,caesarxuchao,1,
|
||||
k8s.io/kubernetes/federation/pkg/kubefed,madhusudancs,0,
|
||||
k8s.io/kubernetes/federation/pkg/kubefed/init,madhusudancs,0,
|
||||
k8s.io/kubernetes/federation/registry/cluster,nikhiljindal,0,
|
||||
k8s.io/kubernetes/federation/registry/cluster/etcd,nikhiljindal,0,
|
||||
k8s.io/kubernetes/hack,thockin,1,
|
||||
k8s.io/kubernetes/hack/cmd/teststale,thockin,1,
|
||||
k8s.io/kubernetes/pkg/api,Q-Lee,1,
|
||||
@@ -944,7 +881,6 @@ k8s.io/kubernetes/test/integration/client,Q-Lee,1,
|
||||
k8s.io/kubernetes/test/integration/configmap,Q-Lee,1,
|
||||
k8s.io/kubernetes/test/integration/evictions,brendandburns,0,
|
||||
k8s.io/kubernetes/test/integration/examples,maisem,1,
|
||||
k8s.io/kubernetes/test/integration/federation,rrati,0,
|
||||
k8s.io/kubernetes/test/integration/garbagecollector,jlowdermilk,1,
|
||||
k8s.io/kubernetes/test/integration/kubeaggregator,deads2k,1,
|
||||
k8s.io/kubernetes/test/integration/kubectl,rrati,0,
|
||||
|
||||
|
@@ -1,122 +1,118 @@
|
||||
{
|
||||
"api-machinery": [
|
||||
"Etcd",
|
||||
"Generated",
|
||||
"HA-master",
|
||||
"Multi-AZ",
|
||||
"Namespaces",
|
||||
"ResourceQuota",
|
||||
"Staging",
|
||||
"Summary",
|
||||
"Etcd",
|
||||
"Generated",
|
||||
"HA-master",
|
||||
"Multi-AZ",
|
||||
"Namespaces",
|
||||
"ResourceQuota",
|
||||
"Staging",
|
||||
"Summary",
|
||||
"ThirdParty"
|
||||
],
|
||||
],
|
||||
"apps": [
|
||||
"Cassandra",
|
||||
"ConfigMap",
|
||||
"CronJob",
|
||||
"Daemon",
|
||||
"Deployment",
|
||||
"Job",
|
||||
"Mesos",
|
||||
"Pet",
|
||||
"Redis",
|
||||
"ReplicaSet",
|
||||
"ReplicationController",
|
||||
"Rescheduler",
|
||||
"RethinkDB",
|
||||
"Secret",
|
||||
"Security",
|
||||
"Spark",
|
||||
"StatefulSet",
|
||||
"Cassandra",
|
||||
"ConfigMap",
|
||||
"CronJob",
|
||||
"Daemon",
|
||||
"Deployment",
|
||||
"Job",
|
||||
"Mesos",
|
||||
"Pet",
|
||||
"Redis",
|
||||
"ReplicaSet",
|
||||
"ReplicationController",
|
||||
"Rescheduler",
|
||||
"RethinkDB",
|
||||
"Secret",
|
||||
"Security",
|
||||
"Spark",
|
||||
"StatefulSet",
|
||||
"Storm"
|
||||
],
|
||||
],
|
||||
"autoscaling": [
|
||||
"Cluster size",
|
||||
"Cluster size",
|
||||
"Horizontal"
|
||||
],
|
||||
],
|
||||
"big-data": [
|
||||
"Hazelcast"
|
||||
],
|
||||
],
|
||||
"cli": [
|
||||
"Kubectl"
|
||||
],
|
||||
],
|
||||
"cluster-lifecycle": [
|
||||
"GKE node",
|
||||
"Garbage",
|
||||
"Nodes",
|
||||
"GKE node",
|
||||
"Garbage",
|
||||
"Nodes",
|
||||
"Upgrade"
|
||||
],
|
||||
"federation": [
|
||||
"Federated",
|
||||
"Federation"
|
||||
],
|
||||
],
|
||||
"instrumentation": [
|
||||
"Cluster level",
|
||||
"Kibana",
|
||||
"MetricsGrabber",
|
||||
"Cluster level",
|
||||
"Kibana",
|
||||
"MetricsGrabber",
|
||||
"Monitoring"
|
||||
],
|
||||
],
|
||||
"network": [
|
||||
"ClusterDns",
|
||||
"DNS",
|
||||
"ESIPP",
|
||||
"Firewall",
|
||||
"Load",
|
||||
"Network",
|
||||
"ClusterDns",
|
||||
"DNS",
|
||||
"ESIPP",
|
||||
"Firewall",
|
||||
"Load",
|
||||
"Network",
|
||||
"Service"
|
||||
],
|
||||
],
|
||||
"node": [
|
||||
"AppArmor",
|
||||
"Cadvisor",
|
||||
"Container",
|
||||
"Docker",
|
||||
"Downward",
|
||||
"EmptyDir",
|
||||
"Events",
|
||||
"HostPath",
|
||||
"ImageID",
|
||||
"InitContainer",
|
||||
"Initial",
|
||||
"Kubelet",
|
||||
"LimitRange",
|
||||
"Liveness",
|
||||
"Logging",
|
||||
"MemoryEviction",
|
||||
"MirrorPod",
|
||||
"NodeProblemDetector",
|
||||
"Opaque",
|
||||
"Pod garbage",
|
||||
"Pods",
|
||||
"Port",
|
||||
"PreStop",
|
||||
"PrivilegedPod",
|
||||
"Probing",
|
||||
"Proxy",
|
||||
"Reboot",
|
||||
"Restart",
|
||||
"SimpleMount",
|
||||
"Sysctls",
|
||||
"Variable",
|
||||
"kubelet",
|
||||
"AppArmor",
|
||||
"Cadvisor",
|
||||
"Container",
|
||||
"Docker",
|
||||
"Downward",
|
||||
"EmptyDir",
|
||||
"Events",
|
||||
"HostPath",
|
||||
"ImageID",
|
||||
"InitContainer",
|
||||
"Initial",
|
||||
"Kubelet",
|
||||
"LimitRange",
|
||||
"Liveness",
|
||||
"Logging",
|
||||
"MemoryEviction",
|
||||
"MirrorPod",
|
||||
"NodeProblemDetector",
|
||||
"Opaque",
|
||||
"Pod garbage",
|
||||
"Pods",
|
||||
"Port",
|
||||
"PreStop",
|
||||
"PrivilegedPod",
|
||||
"Probing",
|
||||
"Proxy",
|
||||
"Reboot",
|
||||
"Restart",
|
||||
"SimpleMount",
|
||||
"Sysctls",
|
||||
"Variable",
|
||||
"kubelet",
|
||||
"when"
|
||||
],
|
||||
],
|
||||
"scalability": [
|
||||
"Density"
|
||||
],
|
||||
],
|
||||
"scheduling": [
|
||||
"DisruptionController",
|
||||
"NoExecuteTaintManager",
|
||||
"DisruptionController",
|
||||
"NoExecuteTaintManager",
|
||||
"SchedulerPredicates"
|
||||
],
|
||||
],
|
||||
"storage": [
|
||||
"Dynamic",
|
||||
"GCP",
|
||||
"GKE local",
|
||||
"PersistentVolumes",
|
||||
"Pod Disks",
|
||||
"Projected",
|
||||
"Dynamic",
|
||||
"GCP",
|
||||
"GKE local",
|
||||
"PersistentVolumes",
|
||||
"Pod Disks",
|
||||
"Projected",
|
||||
"Volume"
|
||||
],
|
||||
],
|
||||
"ui": [
|
||||
"Kubernetes"
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user