중첩된 Hierarchical Namespace를 만들 때 오류를 방지하는 방법
8492 단어 Kubernetestech
Version
중첩 Subnamespace Anchor 생성 오류
다음과 같이 선언문에 SubnamespaceAnchor를 정의하여 중첩된 Hieracchical Namespace를 만들려고 하면 오류가 발생합니다.
subnamespaceanchor.yaml
apiVersion: v1
kind: Namespace
metadata:
name: parent
---
apiVersion: hnc.x-k8s.io/v1alpha2
kind: SubnamespaceAnchor
metadata:
name: child
namespace: parent
---
apiVersion: hnc.x-k8s.io/v1alpha2
kind: SubnamespaceAnchor
metadata:
name: grandchild
namespace: child
$ kubectl apply -f subnamespaceanchor.yaml
namespace/parent created
subnamespaceanchor.hnc.x-k8s.io/child created
Error from server (NotFound): error when creating "subnamespaceanchor.yaml": namespaces "child" not found
grandchildsubnamespaceanchor를 만드는 시점에childnamespace를 만들지 않았기 때문에 처음 적용할 때 not found 오류가 발생합니다.다시 한 번 응용하면 성공할 것이다.
$ kubectl apply -f subnamespaceanchor.yaml
namespace/parent unchanged
subnamespaceanchor.hnc.x-k8s.io/child unchanged
subnamespaceanchor.hnc.x-k8s.io/grandchild created
$ kubectl hns tree parent
parent
└── [s] child
└── [s] grandchild
오류 방지 방법
현재는 Subnamespace Anchor 대신 Namespace 및 Hierarchy Configuration을 각각 정의하는 방법만 있습니다.
hierarchyconfiguration.yaml
apiVersion: v1
kind: Namespace
metadata:
name: parent
---
apiVersion: v1
kind: Namespace
metadata:
name: child
---
apiVersion: v1
kind: Namespace
metadata:
name: grandchild
---
apiVersion: hnc.x-k8s.io/v1alpha2
kind: HierarchyConfiguration
metadata:
name: hierarchy # 名前は"hierarchy"で固定
namespace: child
spec:
parent: parent
---
apiVersion: hnc.x-k8s.io/v1alpha2
kind: HierarchyConfiguration
metadata:
name: hierarchy
namespace: grandchild
spec:
parent: child
$ kubectl apply -f hierarchyconfiguration.yaml
namespace/parent created
namespace/child created
namespace/grandchild created
hierarchyconfiguration.hnc.x-k8s.io/hierarchy created
hierarchyconfiguration.hnc.x-k8s.io/hierarchy created
$ kubectl hns tree parent
parent
└── child
└── grandchild
Subnamespace Anchor가 없어 Subnamespace 식별자[s]
가 없지만 propageation은 정상적으로 작동합니다.$ kubectl hns config set-resource configmaps --mode Propagate
$ kubectl create configmap sample-config --from-literal=key1=config1 -n parent
configmap/sample-config created
$ kubectl get configmap -A | grep -E "NAME|sample-config"
NAMESPACE NAME DATA AGE
child sample-config 1 1s
grandchild sample-config 1 1s
parent sample-config 1 1s
과제.
이 방법은propagion에도 문제가 없지만,Subnamespace의 제작 권한을 넘길 수 없는 Namespace의 권한이 있는지의 여부와 같은 과제가 있다.
Hierrarchical Namespaces의 동력 중 하나로 Namespace 제작에 필요한 Cluster 등급에 강한 권한을 부여하지 않고 제한적인 Namespace의 관리 권한 이전을 가능하게 하려는 목적이다.
Similarly, you might want to allow some teams to create namespaces themselves as isolation units for their own services. However, namespace creation is a privileged cluster-level operation, and you typically want to control this privilege very closely.
다만, 이번 방법에는 Namespace 권한이 필요하기 때문에 이쪽 기사와 같이 Subnamespace 권한을 위임할 수는 없다.
GitOps/CIOps라면 문제없지만, 이런 전제에서 개발자 스스로는 Namespace 선언문을 쉽게 써서 apply를 테스트할 수 없겠죠.(말은 그렇지만 주파수는 그렇게 많지 않다.)
참조 링크
Reference
이 문제에 관하여(중첩된 Hierarchical Namespace를 만들 때 오류를 방지하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/snagasawa/articles/create_nested_subns_without_error_90ac299e75f2ba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)