💡 특정 네임스페이스에 대해서 읽기/쓰기 role 만 추가해야 하는 경우
#!/bin/bash
ROLE="read-write-role"
ROLE_BINDING="read-write-role-binding"
SERVICE_ACCOUNT="monitoring-sa" # 기존에 미리 만들어둔 serviceaccount 이름
# Application 네임스페이스 목록
declare -a namespaces=(
"app-01"
"app-02"
"app-03"
)
# namespace 기준으로 role&rolebinding 생성
for namespace in "${namespaces[@]}"; do
# role 생성
cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: $ROLE
namespace: $namespace
rules:
- apiGroups: ["*"] # 모든 API 그룹
resources: ["*"] # 모든 리소스
verbs: ["get", "list", "watch", "create", "update"] # 읽기 및 업데이트 권한
EOF
# role-binding 생성
kubectl create rolebinding $ROLE_BINDING \
--role=$ROLE \
--serviceaccount=default:$SERVICE_ACCOUNT \
--namespace="$namespace"
done
💡 pods 와 pods/eviction 리소스에 대한 구분이 필요❗️
💡 update 와 patch 에 대한 구분을 명확히해야 권한설정을 헷갈리지 않는다❗️