์๋ค ์,
Kubernetes์์ Shinyproxy๊ฐ ์คํํ ํฌ๋์ ์ฃผ์ ์ ์ถ๊ฐํ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค. ์ด๋ฅผ ํตํด AWS IAM ์ญํ ์ ์ปจํ ์ด๋์ ์ฐ๊ฒฐํ๊ณ ๋น๋๋ ์ฑ์์ AWS ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ํ๋ฅญํ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๊ฑด๋ฐฐ,
์๋ฉ๋ฆฌ์
๋๋ ๋ํ ๋๊ฐ์ ์ด์ ๋ก ๋ฐ์ง์ด ํ๋ก์์ ์ํด ์์๋ ํฌ๋์ ์ฃผ์์ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค. ์ด๋ฅผ ์ํด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ํ์ง๋ง Java ๊ธฐ์ ์ด ์ถฉ๋ถํ์ง ์์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์ฌ์ ํ ํ๋ก์ ํธ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ณ ์๋ค๋ฉด ์ด๊ฒ์ ์ ๋ง ์ ์ฉํ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค!
๋ค๋ฅธ ์ฌ๋์ด ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๋ ๊ฒฝ์ฐ์ ๋๋นํ์ฌ ๋ฐ์ง์ด๋ ํ๋ก์์์ ์์ํ ํฌ๋์ ์ฃผ์ ๋ฐ ํ์ฉ ์ค์ฐจ๋ฅผ ์ถ๊ฐํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
๋ด ์ค์ ์์ ๋ฐ์ง์ด๋ ํ๋ก์๋ ์ ์ฉ ๋ค์์คํ์ด์ค๋ก ํฌ๋๋ฅผ ์์ํฉ๋๋ค. ๋๋ ํด๋น ๋ค์์คํ์ด์ค์ ๋ชจ๋ ํฌ๋์ ์ง์์ ์ผ๋ก ์ฃผ์์ ๋ฌ๊ณ ํจ์นํ๋ Shinyproxy์ ํจ๊ป ๋ค๋ฅธ ์ปจํ
์ด๋๋ฅผ ์์ํ์ต๋๋ค.
(๋ฐฐํฌ์ spec
์น์
์์):
- name: shiny-role-spammer
image: zlabjp/kubernetes-resource
command:
- "/bin/bash"
- "-c"
- |
while [ 1 ]; do
# Add annotation for kube2iam
kubectl -n external annotate pods --all iam.amazonaws.com/role="arn:aws:iam::123456654321:role/shiny-external";
# Add tolerations
kubectl -n external get pods -o jsonpath='{.items[*].metadata.name}' | grep sp- | \
xargs kubectl -n external patch -p \
'{"spec":{"tolerations":[{"key":"purpose", "operator": "Equal", "value": "external", "effect": "NoSchedule"}]}}' \
pod
sleep 2;
done
์ข์ ์๊ฐ! ์๋ฒฝํ!
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ
ํ๋ณดํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
ContainerProxy์์ ๋ชจ๋ Kubernetes ๊ธฐ๋ฅ์ ๊ตฌํํ ํ์๊ฐ ์๋๋ก ํ๊ธฐ ์ํด ContainerProxy ์ฑ์ Kubernetes ํน์ ๊ตฌ์ฑ์ ์ถ๊ฐํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์ถ๊ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ kubernetes-pod-patches
๋ผ๊ณ ํ๋ฉฐ ContainerProxy์์ ์์ฑ๋๊ธฐ ์ ์ ํฌ๋ ์ฌ์์ ํจ์น ํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ์ ๋ณด๋ ์ฌ๊ธฐ ์์ ์ฐพ์ ์ ์์ต๋๋ค(์ฝ๊ฐ ์๋๋ก ์คํฌ๋กคํด์ผ ํจ).
์ด๊ฒ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ์ด์ผ ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ธ์ ๋ ์ง ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค.
๋ณ๊ฒฝ ์ฌํญ์ ShinyProxy 2.4.0 ์๋ง ํฌํจ๋ฉ๋๋ค.
๋ค์ ํ ๋ฒ ๊ทํ์ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@LEDfan ๋๋ถ์ ์ด ์๋ฃจ์ ์ ์ ๋ง ํ๋ฅญํฉ๋๋ค. ์ง๊ธ ๋ฐ๋ก ํ์ธํ์ธ์!
๋ช ๋ฒ์ ์ํ์ฐฉ์ค ๋์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก IAM ์ญํ ์ฃผ์์ ์ถ๊ฐํ ์ ์์์ต๋๋ค.
- id: 01_hello
displayName: Hello Application
description: Application which demonstrates the basics of a Shiny app
containerCmd: ["R", "-e", "shinyproxy::run_01_hello()"]
containerImage: openanalytics/shinyproxy-demo
kubernetes-pod-patches: |
- op: add
path: /metadata/annotations
value: { "iam.amazonaws.com/role": "<YOUR-IAM-ROLE>" }
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค๋ฅธ ์ฌ๋์ด ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๋ ๊ฒฝ์ฐ์ ๋๋นํ์ฌ ๋ฐ์ง์ด๋ ํ๋ก์์์ ์์ํ ํฌ๋์ ์ฃผ์ ๋ฐ ํ์ฉ ์ค์ฐจ๋ฅผ ์ถ๊ฐํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
๋ด ์ค์ ์์ ๋ฐ์ง์ด๋ ํ๋ก์๋ ์ ์ฉ ๋ค์์คํ์ด์ค๋ก ํฌ๋๋ฅผ ์์ํฉ๋๋ค. ๋๋ ํด๋น ๋ค์์คํ์ด์ค์ ๋ชจ๋ ํฌ๋์ ์ง์์ ์ผ๋ก ์ฃผ์์ ๋ฌ๊ณ ํจ์นํ๋ Shinyproxy์ ํจ๊ป ๋ค๋ฅธ ์ปจํ ์ด๋๋ฅผ ์์ํ์ต๋๋ค.
(๋ฐฐํฌ์
spec
์น์ ์์):