Skip to content

Commit 5fdf8d4

Browse files
yoon6yoclaude
andauthored
feat: 신청자 Slack 가입 확인을 operation 스택에서만 켬 (#268)
admin_be의 SlackMembershipGate는 slack.membership-check.enabled를 켠 환경에서만 신청을 막는다(기본값 false). 실험 스택은 Slack을 막아 두었고 테스트 계정이 Slack 회원이 아니므로 operation에만 켜는 값을 넣는다. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 97f6d4d commit 5fdf8d4

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

‎config-server/tests/test_deploy_switch.py‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,14 @@ def test_only_operation_stack_writes_issuance_sheet():
6464
assert re.search(
6565
r'''\[ "\$STACK" = "operation" \] && ISSUANCE_SHEET_OVERRIDE=',"issuance-sheet":\{"enabled":true\}'$''',
6666
text, re.M)
67-
assert '$SLACK_OVERRIDE$ISSUANCE_SHEET_OVERRIDE,"prometheus"' in text
67+
assert '$SLACK_OVERRIDE$ISSUANCE_SHEET_OVERRIDE$SLACK_MEMBERSHIP_OVERRIDE,"prometheus"' in text
68+
69+
70+
def test_only_operation_stack_checks_slack_membership():
71+
# admin_be 기본값이 꺼짐이라 켜는 쪽만 둔다. "slack" 묶음(SLACK_OVERRIDE)과 같은 키를 두 번 쓰지 않는다.
72+
text = STACK_UP.read_text()
73+
assert re.search(r"^SLACK_MEMBERSHIP_OVERRIDE=''$", text, re.M)
74+
assert re.search(
75+
r'''^\[ "\$STACK" = "operation" \] && SLACK_MEMBERSHIP_OVERRIDE=',"slack\.membership-check\.enabled":true'$''',
76+
text, re.M)
77+
assert len(re.findall(r"SLACK_MEMBERSHIP_OVERRIDE=", text)) == 2

‎ops/proposed-stack/stack-up.sh‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,11 @@ SLACK_OVERRIDE=",\"slack-webhook-url\":{$SINKS},\"slack\":{\"bot-token\":\"disab
370370
# 켜는 쪽을 여기 둔다 — 이 줄이 빠지거나 스택 이름이 늘어도 실험 스택이 운영 문서를 고치는 쪽으로는 넘어지지 않는다.
371371
ISSUANCE_SHEET_OVERRIDE=',"issuance-sheet":{"enabled":false}'
372372
[ "$STACK" = "operation" ] && ISSUANCE_SHEET_OVERRIDE=',"issuance-sheet":{"enabled":true}'
373+
# 신청자가 Slack 워크스페이스 회원인지 보는 확인(admin_be SlackMembershipGate)도 operation만 켠다. 실험 스택은 Slack을
374+
# 막아 두었고 테스트 계정은 Slack 회원이 아니다. admin_be 기본값이 false라 여기서는 켜는 쪽만 둔다. 위 SLACK_OVERRIDE의
375+
# "slack" 묶음과 키가 겹치지 않게 점으로 이은 이름으로 넣는다.
376+
SLACK_MEMBERSHIP_OVERRIDE=''
377+
[ "$STACK" = "operation" ] && SLACK_MEMBERSHIP_OVERRIDE=',"slack.membership-check.enabled":true'
373378
# 모니터링 지표는 클러스터 공용 Prometheus를 읽기만 하므로 모든 스택이 같은 곳을 본다. 예전엔 닿지 않는
374379
# 주소로 돌려 두어 리소스 모니터링 화면이 늘 비어 있었다(admin_fe#169). 연결은 admin-be.yaml 정책이 연다.
375380
PROMETHEUS_URL=http://monitoring-kube-prometheus-prometheus.monitoring.svc.cluster.local:9090
@@ -379,7 +384,7 @@ PROMETHEUS_URL=http://monitoring-kube-prometheus-prometheus.monitoring.svc.clust
379384
# 이 값으로 기동하면 스키마를 바꾸지 않으므로, 이 변경은 Flyway를 넣은 admin_be(be#603)와 함께 배포한다.
380385

381386
CONFIG_JSON=$(cat <<EOF
382-
{"spring":{"datasource":{"url":"jdbc:mysql://admin-mysql.$NS.svc.cluster.local:3306/web_admin?serverTimezone=Asia/Seoul&useSSL=false&allowPublicKeyRetrieval=true","username":"admin_user","password":"$(getpw admin_user)"},"data":{"redis":{"host":"admin-redis.$NS.svc.cluster.local","port":6379,"password":"$(getpw admin_redis)"}},"jpa":{"hibernate":{"ddl-auto":"validate"}}},"config":{"base-url":"http://containerssh-config-service.$NS.svc.cluster.local","api-token":"$(getpw config_api_token)"}$SLACK_OVERRIDE$ISSUANCE_SHEET_OVERRIDE,"prometheus":{"base-url":"$PROMETHEUS_URL"},"kubernetes":{"pod-namespace":"$NS"},"jwt":{"secret":"$(getpw jwt_secret)"}}
387+
{"spring":{"datasource":{"url":"jdbc:mysql://admin-mysql.$NS.svc.cluster.local:3306/web_admin?serverTimezone=Asia/Seoul&useSSL=false&allowPublicKeyRetrieval=true","username":"admin_user","password":"$(getpw admin_user)"},"data":{"redis":{"host":"admin-redis.$NS.svc.cluster.local","port":6379,"password":"$(getpw admin_redis)"}},"jpa":{"hibernate":{"ddl-auto":"validate"}}},"config":{"base-url":"http://containerssh-config-service.$NS.svc.cluster.local","api-token":"$(getpw config_api_token)"}$SLACK_OVERRIDE$ISSUANCE_SHEET_OVERRIDE$SLACK_MEMBERSHIP_OVERRIDE,"prometheus":{"base-url":"$PROMETHEUS_URL"},"kubernetes":{"pod-namespace":"$NS"},"jwt":{"secret":"$(getpw jwt_secret)"}}
383388
EOF
384389
)
385390
kubectl -n "$NS" create secret generic admin-be-config --from-literal=SPRING_APPLICATION_JSON="$CONFIG_JSON" \

0 commit comments

Comments
 (0)