키오스크가 있는 Space boxing 사용자 계정
10184 단어 multitenancytipskubernetes
뭐
Kiosk은 다음을 사용하여 네임스페이스를 격리하는 CRD 기반 접근 방식입니다.
건축물
Credit: https://github.com/loft-sh/kiosk
할 수 있는 사람
모든 키오스크 설정은 ClusterAdmin(또는 충분한 RBAC 권한이 있는 사용자)이 수행해야 합니다.
❯ kubectl auth can-i "*" "*" --all-namespaces
kubectl auth can-i "*" namespace
kubectl auth can-i "*" clusterrole
kubectl auth can-i "*" crd
yes
yes
yes
yes
키오스크 설정 및 사용자 가장
# Install kiosk with helm v3
❯
kubectl create namespace kiosk
helm install kiosk --repo https://charts.devspace.sh/ kiosk --namespace kiosk --atomic
namespace/kiosk created
NAME: kiosk
...
Learn more about using kiosk here: https://github.com/loft-sh/kiosk#getting-started
#verify
❯ kubectl get pod -n kiosk
NAME READY STATUS RESTARTS AGE
kiosk-66dbfcf6db-5rfx2 1/1 Running 0 2m18s
❯ cat account.yaml
apiVersion: tenancy.kiosk.sh/v1alpha1
kind: Account
metadata:
name: ambers-account
spec:
subjects:
- kind: User
name: amber
apiGroup: rbac.authorization.k8s.io
---
apiVersion: tenancy.kiosk.sh/v1alpha1
kind: Account
metadata:
name: blues-account
spec:
subjects:
- kind: User
name: blue
apiGroup: rbac.authorization.k8s.io
---
❯ kubectl apply -f account.yaml
account.tenancy.kiosk.sh/ambers-account created
account.tenancy.kiosk.sh/blues-account created
# Check RBAC
❯ kubectl get account.tenancy.kiosk.sh
NAME SPACES CREATED AT
ambers-account 0 2022-07-03T01:16:41Z
blues-account 0 2022-07-03T01:16:41Z
❯ kubectl get accounts --as=amber
NAME SPACES CREATED AT
ambers-account 0 2022-07-03T01:16:41Z
메모
현실 세계에서 사용자는 외부 시스템을 통해 들어오고 일반적으로 Dex와 같은 시스템을 통해 인증됩니다(또는 퍼블릭 클라우드에 있는 경우 EKS용 AWS IAM 또는 GKE용 GCP IAM과 같은 공급자별 솔루션을 사용할 수 있습니다. ).
실제 사용자 대신 서비스 계정의 경우 확인this
공간 작업
공백은 네임스페이스에 대한 래퍼입니다. 사용자는 할당된 공간을 다른 사용자가 사용하고 운영할 수 있습니다.
거부되고 보이지 않습니다.
❯ cat spaces.yaml
apiVersion: tenancy.kiosk.sh/v1alpha1
kind: Space
metadata:
name: ambers-space
spec:
# spec.account can be omitted if the current user only belongs to a single account
account: ambers-account
---
apiVersion: tenancy.kiosk.sh/v1alpha1
kind: Space
metadata:
name: blues-space
spec:
# spec.account can be omitted if the current user only belongs to a single account
account: blues-account
---
❯ k create -f spaces.yaml
space.tenancy.kiosk.sh/ambers-space created
space.tenancy.kiosk.sh/blues-space created
# Verify
❯ k get spaces --as=amber
NAME OWNER CREATED AT
ambers-space ambers-account 2022-07-03T01:22:44Z
리소스 만들기
❯ k create deployment test-dep-001 --image=nginx --as=amber --namespace=ambers-space
deployment.apps/test-dep-001 created
❯ k create deployment test-dep-002 --image=nginx --as=amber --namespace=blues-space
error: failed to create deployment: deployments.apps is forbidden: User "amber" cannot create resource "deployments" in API group "apps" in the namespace "blues-space"
# Verify
❯ k get deployments.apps -n ambers-space
NAME READY UP-TO-DATE AVAILABLE AGE
test-dep-001 0/1 1 0 28s
❯ k get deployments.apps -n blues-space
No resources found in blues-space namespace.
리소스 삭제
❯ k delete space blues-space --as=blue
Error from server (Forbidden): spaces.tenancy.kiosk.sh "blues-space" is forbidden: User "blue" cannot delete resource "spaces" in API group "tenancy.kiosk.sh" at the cluster scope
❯ k delete space blues-space
space.tenancy.kiosk.sh "blues-space" deleted
Allow account-users to create and delete spaces 사용
템플릿
키오스크의 템플릿은 네임스페이스를 초기화하고 네임스페이스 전체에 공통 리소스(예: 비밀)를 적용하는 데 사용됩니다.
공간을 생성할 때 키오스크는 이러한 템플릿을 사용하여 이 공간에 대해 새로 생성된 네임스페이스를 채웁니다.
템플릿:
매니페스트 만들기
계정과 연결
템플릿 인스턴스화
[템플릿에 대한 자세한 정보]( https://github.com/loft-sh/kiosk#53-using-templates )
여러 가지 잡다한
❯ cat account-default-space-metadata.yaml
apiVersion: tenancy.kiosk.sh/v1alpha1
kind: Account
metadata:
name: alpha-space-default-metadata
spec:
space:
clusterRole: kiosk-space-admin
spaceTemplate:
metadata:
labels:
some-label: "label-value"
other-label: "other-value"
annotations:
"foo": "bar"
"department": "alpha"
subjects:
- kind: User
name: adam
apiGroup: rbac.authorization.k8s.io
- kind: User
name: brian
apiGroup: rbac.authorization.k8s.io
❯ k create -f account-default-space-metadata.yaml
account.tenancy.kiosk.sh/alpha-space-default-metadata created
❯ k describe account alpha-space-default-metadata
...
Name: alpha-space-default-metadata
Namespace: null
Spec:
Space:
Cluster Role: kiosk-space-admin
Space Template:
Metadata:
Annotations:
Department: alpha
Foo: bar
Creation Timestamp: <nil>
Labels:
Other - Label: other-value
Some - Label: label-value
Subjects:
API Group: rbac.authorization.k8s.io
Kind: User
Name: brian
Status: null
결론
키오스크는 템플릿 개념으로 매우 강력해 보이지만 문서(해당 부분)는 간단하지 않습니다.
(문서 풀 요청일 수 있습니까?)
Reference
이 문제에 관하여(키오스크가 있는 Space boxing 사용자 계정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ashokan/space-boxing-user-accounts-with-kiosk-4kl3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)