App tunnel 이란?
Atlassian Cloud를 사용하거나 사용할 계획이지만 migration 기간동안 On-Premise 환경에서 Confluence 와 Jira 를 사용할 경우가 있습니다.
이런 경우 서로 다른 네트워크에 존재하여 각각의 데이터를 참고하기 어려워지는 문제가 있습니다.
즉 Cloud 에 새로 만든 Confluence 에서 On-premise 환경에 있는 Confluence Page나 JIRa Issue 참조하지 못하고 On-Premise 에 있는 Jira 에서도 Cloud 에 있는 Jira 이슈나나 Confluence 페이지를 연결할 수 없습니다.
App tunnel 은 이런 문제를 해결하기 위해 개발된 plugin 으로 Server 나 Data Center 에 설치하면 Cloud 에 있는 제품과 Application Link 로 연결할 수 있으므로 같은 네트워크에 있는 제품처럼 양방향으로 서로의 데이터를 참조할 수 있습니다.
App tunnel 의 전체 구성도는 위와 같으며 다음과 같은 구성을 갖고 있습니다.
Tunnel server: 사용하는 Cloud 제품이 tunnel server 역할을 수행하며 설정은 관리자 페이지인admin.atlassian.com 에서 할 수 있습니다.
Tunnel client: On-premise 에 있는 Confluence 나 Jira 제품이 Tunnel client 입니다.
Application link (cloud): You create a tunneled application link in each of your cloud products and point it at an existing tunnel. You can link multiple cloud products to a single tunnel. The application link must always be created on the cloud side.
Application link (self-managed): The reciprocal link will be automatically created in your self-managed instance. Only incoming connections to your network use the tunnel, the outgoing ones will reach your cloud products directly.
제약 사항
각 on-premise instance 는 하나의 cloud instance 와 tunnel 구성이 가능합니다. 여러 개의 instance 가 있을 경우 개별 instance 마다 tunnel 을 구성해야 합니다.
사전준비
나가는 방화벽 포트 오픈
Application tunnel 은
https://tunnel.services.atlassian.com
에 연결할 수 있어야 제대로 동작하므로 On-premise 에 있는 Confluence/Jira/Bamboo 에서 저 서버의 443 포트로 연결할 수 있도록 방화벽 정책을 수정합니다.On-premise 에 있는 제품이 Atlassian Cloud 에 연결할 수 있도록 나가는 방화벽 정책을 수정합니다. Cloud IP 는 여기에서 확인할 수 있습니다.
Cloud 에서 On-premise 에 연결할 수 있도록 Cloud IP 의 In Bound rules 을 수정합니다.
HTTP connector 와 upstream port 설정
연결하려는 instance 를 중지하고 conf/server.xml 을 열고 다음 커넥터를 추가합니다.
Confluence
<Connector port="8093" connectionTimeout="20000" maxThreads="200" minSpareThreads="10" enableLookups="false" acceptCount="10" URIEncoding="UTF-8" />
bin/setenv.sh 를 에디터로 열고 다음 내용을 추가합니다.
## export CATALINA_OPS 앞에 와야 합니다. CATALINA_OPTS="-Dsecure.tunnel.upstream.port=8093" export CATALINA_OPTS
이제 bin/startup.sh 를 실행해서 Confluence 를 재구동합니다.
Jira
<Connector port="8081" connectionTimeout="20000" maxThreads="200" minSpareThreads="10" enableLookups="false" acceptCount="10" URIEncoding="UTF-8" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>"/>
bin/setenv.sh 를 열고 JVM_SUPPORT_RECOMMENDED_ARGS
에 다음 내용을 추가합니다.
JVM_SUPPORT_RECOMMENDED_ARGS="-Dsecure.tunnel.upstream.port=8081"
Jira 를 재구동합니다.
Bamboo
<Connector port="8093" connectionTimeout="20000" maxThreads="200" minSpareThreads="10" enableLookups="false" acceptCount="10" URIEncoding="UTF-8" />
bin/setenv.sh 를 열고 JVM_SUPPORT_RECOMMENDED_ARGS
에 다음 내용을 추가합니다.
JVM_SUPPORT_RECOMMENDED_ARGS="-Dsecure.tunnel.upstream.port=8093"
설정하기
On-premise 에 있는 Confluence 나 Jira 에 Atlassian Marketplace 에 있는 Application tunnels 를 설치합니다. 설치가 끝나면 관리자 설정 화면에서 “Application tunnel” 을 볼 수 있습니다.
admin.atlassian.com 에 접속해서 On-premise 와 연결할 instance 를 선택합니다.
Settings → Application tunnels → Create tunnel 을 선택합니다.
Create tunnel 을 선택합니다.
Tunnel name(1) 에 이름을 넣고 Connect to(2) 에 연결할 URL 을 입력합니다.
연결을 위한 security key 가 생성되는데 하단의 Copy 를 눌른후에 메모장등에 복사해 둡니다.
Copy and proceed 를 누르면 연결할 On-premise 로그인 창으로 전환합니다. 관리자 암호를 넣어서 로그인합니다.
위에서 복사한 security key 를 입력한 후에 Add 를 눌러서 반영합니다.
Application tunnel 이 생성된 것을 볼 수 있습니다.
Confluence 와 연결
위는 Cloud instance 와 연결한 것이고 제품별로 Application Link 를 설정해줘야 합니다.
Confluene 관리자로 로그인한 후에 Administrator → Application links 에 들어갑니다.
상단의 Create link 를 클릭합니다.
Link type 은 Tunneled application link 를 선택하고 Application tunnel 은 위에서 생성한 tunnel 이름을 선택하고 Continue 를 클릭합니다.
Review Link 화면을 확인하고 Continue 를 클릭하면 Application Link 설정이 완료됩니다.
App Link 에 연결한 제품이 표시되는 걸 확인할 수 있습니다.