์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ!
Digitalocean ์ฑ ํ๋ซํผ์ ๋ํ ์ ์/ํ์ด ์๋ ์ฌ๋์ด ์์ต๋๊น? (https://www.digitalocean.com/products/app-platform/).
๋ด๊ฐ ์ดํดํ๋ ํ ์ด๊ฒ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ Kubernetes์ ํจ๊ป ์คํ๋ฉ๋๋ค. ๊ทธ๋์ ๊ฑฐ๊ธฐ์์ shinyproxy
์ฌ์ฉํ ์ ์๋์ง, ๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฅ ์ ์ ํ ๊ตฌ์ฑ์ ๋ฌด์์ธ์ง ๊ถ๊ธํฉ๋๋ค.
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
ํ ๋ฆฌํ
์๋ ํ์ธ์
๋๋ ์ฐ๋ฆฌ๊ฐ ์ด ํ๋ซํผ์ ๋ํ ๊ฒฝํ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ง๋ง Kubernetes API๋ฅผ ์คํํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ ์ ์๋ค๋ฉด ShinyProxy๋ฅผ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ค๊ฐ์ ์ด๊ฒ์ ์๋ ํ ์ ์์์ต๋๊น? ๋ฌผ๋ก ์ด ํ๋ซํผ์์ ShinyProxy๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ๋์ง ๊ถ๊ธํฉ๋๋ค.
๊ฒฐ๊ตญ ๋ชจ๋ ๊ฒ์ AWS๋ก ์ฎ๊ฒผ์ต๋๋ค. ํ์ง๋ง ์ํํด ๋ณผ ๋ ๋ค๋ฅธ ํ ์คํธ ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ ๋ฐ์ดํธ๋ฅผ ๊ฒ์ํ๊ฒ ์ต๋๋ค. ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค!
@fmmattioni Dockerfile ์ ์ฌ์ฉํ๊ณ ๋ค์ ํ ํ๋ฆฟ์ ๋ฐ๋ฅผ ์ ์์ต๋๋ค. https://github.com/digitalocean/sample-dockerfile ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
์, ๋ค์ ๊ตฌ์ฑ ์ค ์ด๋ ๊ฒ์ด ๋ ์ ํฉํ์ง ๋ ๊ถ๊ธํ์ต๋๋ค.
์๋ ํ์ธ์ @fmmattioni
๊ฐ๋ฅํ๋ฉด ํญ์ ๊ณต์ Docker ์ด๋ฏธ์ง ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด ์ด๋ฏธ์ง์๋ ๋ช ๊ฐ์ง ๋ณด์ ํฅ์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค(์: ๋ฃจํธ๊ฐ ์๋ ์ฌ์ฉ์๋ก ShinyProxy ์คํ).
ํ , ์ข์ ์ง์ ! ๋๋ ๊ทธ๊ฒ์ ๋ชฐ๋๋ค! ๊ฐ์ฌํฉ๋๋ค!
์ง๋ฌธ: ์ต์ ๋ฆด๋ฆฌ์ค๊ฐ AWS Cognito ์ธ์ฆ๊ณผ ํจ๊ป ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด์ ๋ฒ์ ์ shinyproxy๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์ ์๋ ํ๊ทธ๋ฅผ ํตํด ์ด ์ด์ ๋ฒ์ ์ ๊ฐ๋จํ ๊ฐ์ ธ์ฌ ์ ์์ต๋๊น? ์๋๋ฉด ์ด๋ฌํ ๋ณด์ ํฅ์ ๊ธฐ๋ฅ์ด ์ต์ ๋ฒ์ ์๋ง ์กด์ฌํฉ๋๊น?
์๋ ํ์ธ์ @fmmattioni
๋ณด์ ๊ฐํ ๊ธฐ๋ฅ์ ๋ชจ๋ ๋ฒ์ ์ ํฌํจ๋์ด ์์ต๋๋ค.
์ต์ ๋ฒ์ ์ ShinyProxy๊ฐ AWS Cognito์์ ์๋ํ์ง ์๋๋ค๊ณ ์ธ๊ธํ์ จ์ต๋๋ค. ์ต์ ๋ฒ์ (2.4.3)์ OIDC์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ผ๋ก ์ธ์๋์ง ์์ต๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ด ํฌํจ๋ ์ ๋ฌธ์ ๋ฅผ ์ด โโ์ ์์ต๋๊น? (์: ๊ฒฝํํ ํ๋, ๊ธฐ๋ก๋ ์ค๋ฅ ๋ฑ). ์ฐ๋ฆฌ๋ ShinyProxy๊ฐ ๋ชจ๋ ์ธ์ฆ ์ ๊ณต์์ ์ํํ๊ฒ ์๋ํ๊ธฐ๋ฅผ ์ ๋ง๋ก ์ํ๋ฏ๋ก ๋ฒ๊ทธ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ ํด๊ฒฐํ๊ณ ์ถ์ต๋๋ค.
๋ด๊ฐ ๊ทธ๊ฒ์ ์ป์๋์ง ํ์ธํ๊ธฐ ์ํด ์ด๊ฒ์ด ๋ด Dockerfile์ ์์ด์ผํ๋ ๊ฒ์ ๋๋ค. ๋ง์ต๋๊น?
FROM openanalytics/shinyproxy:latest
COPY application.yml /opt/shinyproxy/application.yml
WORKDIR /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]
AWS Cognito์ ๋ฌธ์ ์ ๊ด๋ จํ์ฌ ๋ง์ง๋ง์ผ๋ก ์ค์ ํ ๋ ๋ก๊ทธ์ server.useForwardHeaders
์ต์
์ด ์ต์ ๋ฒ์ ์์ ์ฌ์ ํ ์๋ํ์ง ์๋๋ค๊ณ ์ธ๊ธ๋ ๊ฒ์ ๊ธฐ์ตํฉ๋๋ค. ์ด๊ฒ์ด 2.4.3 ์ธ์ง ์ฌ๋ถ๋ ๊ธฐ์ต๋์ง ์์ต๋๋ค. ๋น ๋ฅธ ํ
์คํธ๋ฅผ ํด๋ณด๊ณ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค!
์, ShinyProxy์ ํจ๊ป ์ฌ์ฉํ๊ธฐ์ ์ ์ ํ Docker ํ์ผ์ด์ง๋ง ๋ ์งง๊ฒ ๋ง๋ค ์๋ ์์ต๋๋ค.
FROM openanalytics/shinyproxy:latest
COPY application.yml /etc/shinyproxy/application.yml
WORKDIR
๋๋ CMD
์ง์๋ฌธ์ ์ง์ ํ์ง ์์ผ๋ฉด Docker๊ฐ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์์ ์ง์๋ฌธ์ ๊ฐ์ ธ์ต๋๋ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ /etc/shinyproxy
๋ฅผ ์์
๋๋ ํ ๋ฆฌ๋ก ์ง์ ํ๋ฏ๋ก ๊ตฌ์ฑ ํ์ผ์ ๊ทธ๊ณณ์ ๋ฐฐ์นํ ์ ์์ต๋๋ค.
server.useForwardHeaders
์์ฑ์ ๋ํด. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ํ์๋ ์ ์์ต๋๋ค.
WARNING: Using server.use-forward-headers will not work in this ShinyProxy release. See https://shinyproxy.io/documentation/security/#https-ssl--tls on how to change your configuration.
๋ฐ๋ผ์ 2.4.0๋ถํฐ๋ ํฌ์๋ฉ ํค๋๋ฅผ ๊ตฌ์ฑํ๋ ์์ฑ์ด ๋ณ๊ฒฝ๋์์ง๋ง ํฌ์๋ฉ ํค๋๋ ์ฌ์ ํ ์๋ํฉ๋๋ค. ๋ค์ ๊ตฌ์ฑ๋ง ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
server:
forward-headers-strategy: native
์ค๋๋ ์ฌ์ฐ ๋์ .
๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ์ค์ ๋ก https://shinyproxy.io/documentation/security/#forward -headers ๋ฅผ ๊ฐ๋ฆฌ์ผ์ผ ํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๋ค์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ํด ๋ณ๊ฒฝํ๊ฒ ์ต๋๋ค.
๊ทธ๊ฒ์ด ๋ฐ๋ก ๋ด๊ฐ ๋ฐ๊ณ ์๋ ๊ฒฝ๊ณ ์ ๋๋ค!
์ฃ์กํฉ๋๋ค. ๊ท์ฐฎ๊ฒ ํ์ด์ง๋ฅผ ์์ธํ ์ฝ์ง ๋ชปํ์ต๋๋ค... ๋ค์ ํ ์คํธํ๊ฒ ์ต๋๋ค. ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค!
๊ฐ์ฌํฉ๋๋ค!
๋น ๋ฅธ ์
๋ฐ์ดํธ: server.forward-headers-strategy
์์ฑ์ด ์ค์ ๋ก AWS Cognito์์ ์ ๋๋ก ์๋ํฉ๋๋ค! ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ์ ๋ฅผ ๊ฐ๋ฅด์ณ ์ฃผ์
์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค!
@LEDfan ๋ , openanalytics/shinyproxy
๋์ปค ์ด๋ฏธ์ง์ ํจ๊ป ์ ์๋ ๋๋ก ์ ๊ตฌ์ฑ์ ์ค์ ํ๋ ๋์ ํญ์ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
์ด๊ฒ์ ๋ด Dockerfile์ ๋๋ค.
FROM openanalytics/shinyproxy:latest
COPY application.yml /etc/shinyproxy/application.yml
๊ทธ๋ฌ๋ ๋ด Dockerfile์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ ๋:
FROM openjdk:8-jre
RUN mkdir -p /opt/shinyproxy/
RUN wget https://www.shinyproxy.io/downloads/shinyproxy-2.4.3.jar -O /opt/shinyproxy/shinyproxy.jar
COPY application.yml /opt/shinyproxy/application.yml
WORKDIR /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]
๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ Dockerfile์ ์ฌ์ฉํ ๋ application.yml
๋ณ๊ฒฝํ๊ฑฐ๋ nginx
์์ ํน์ ์ค์ ์ ์์ ํด์ผ ํ๋ ๊ฒ์ด ์์ต๋๊น?
์ ๋ฌธ์ ๋ฅผ ์ด์ด์ผ ํ๋์ง ์๋๋ฉด ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ผ ํ๋์ง ์๋ ค์ฃผ์ธ์.
์๋ ํ์ธ์ @fmmattioni
์ด๋ฏธ์ง๊ฐ ๋ฃจํธ๊ฐ ์๋ ์ฌ์ฉ์๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ปค ์์ผ์ ์ก์ธ์คํ ์ ์๋ค๋ ์ ์ ์ธ๊ธํ๋ ๊ฒ์ ์์์ต๋๋ค.
๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ShinyProxy ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์คํํด์ผ ํฉ๋๋ค.
docker run -v /var/run/docker.sock:/var/run/docker.sock:ro --group-add $(getent group docker | cut -d: -f3) -p 8080:8080 openanalytics/shinyproxy
$(getent group docker | cut -d: -f3)
๋ถ๋ถ์ docker์ group-id๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. --group-add
๋งค๊ฐ๋ณ์๋ ShinyProxy ๋์ปค ์ปจํ
์ด๋ ๋ด์์ ์คํ ์ค์ธ ์ฌ์ฉ์๊ฐ ํด๋น ๊ทธ๋ฃน(์ฆ, ๋์ปค ๊ทธ๋ฃน)์ ์ผ๋ถ์ด๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ShinyProxy ๋์ปค ์ปจํ
์ด๋๊ฐ ๋์ปค ์์ผ์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค.
๋ํ proxy.docker.url
์์ฑ์ ์ค์ ํ์ง ์์๋์ง ํ์ธํ์ญ์์ค. ์ ๊ณตํ์ง ์๋ ๊ฒฝ์ฐ์๋ง ShinyProxy๋ ์ผ๋ถ ๋์ปค HTTP ํฌํธ๊ฐ ์๋ ๋์ปค ์์ผ์ ์ก์ธ์คํฉ๋๋ค.
ํ์ด์ ๋น๋๋ค!
๋ฌ์ฝคํ! ์์ธํ ์ ๋ณด ์ ๋ง ๊ฐ์ฌํฉ๋๋ค! ์ด๊ฒ์ด ์ง๊ธ ์๋ํ๊ณ ์์์ ํ์ธํ ์ ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค!