티스토리 뷰
60. Eclipse와 Azure Repos 및 Azure Pipelines 통합하기 2편
zerobig-k8s 2020. 11. 30. 07:51<참조> https://azuredevopslabs.com/labs/vstsextend/eclipse/
실습4: 컨테이너 용 Azure Web App에 배포하기
이 실습에서는 웹 애플리케이션을 Azure 웹앱에 배포하는 릴리즈 파이프 라인을 설정한다. 먼저 Web App을 만들어 보겠다.
1. Azure Portal에 로그인한다.
2. Azure Portal에서 + Create a resource를 선택하고 Web App for Containers + MYSQL을 검색한 다음 Create를 선택하고 클릭한다.
(Web App for Containers + MYSQL는 존재하지 않는다. 따라서 webapp과 MySQL을 각각 따로 생성해야 한다. 컨테이너용 Azure Web App에 도커로 된 JAVA 앱 배포하기 실습 2부터 참조하여 진행한다.)
3. Azure Portal에서 + Create a resource를 선택하고 Web App을 검색 한 다음 Create를 선택하고 클릭한다.
다음 세부 정보를 제공한다.
- 새 웹앱의 이름을 입력한다.
- Azure 구독을 선택한다.
- 웹 앱에 대한 기존 리소스 그룹을 선택하거나 새로 만든다.
- 앱 서비스 계획/위치를 그대로 둔다.
- Docker 탭에서 Azure Container Registry를 선택한다. 각 드롭다운에서 Registry, Image and Tag를 선택하고 Create를 클릭한다.
MySQL을 위한 Azure Database도 만들어야 한다. + Create a resource를 선택하고 Azure Database for MySQL(Single)를 검색한 다음 Create를 선택하고 누른다. 필요한 모든 필수 정보를 제공하고 메모장에 Password를 적어 둔다. 나중에 배포 파이프라인에서 그것을 사용할 것이다. Review + create를 누른 후 Create를 누른다.
- Database 섹션에서 필요한 모든 필수 정보를 제공하고 Server Name, Server admin login name, Password를 메모장에 적어둔다. 우리는 나중에 그것을 배포 파이프라인에서 사용할 것이다.
4. 프로비저닝이 완료되면 웹앱 속성 페이지로 이동하고 URL을 선택하여 웹앱을 찾는다. 기본 Tomcat 페이지가 표시되어야한다.
5. MyShuttle 로그인 페이지로 이동하려면 URL의 웹 애플리케이션 컨텍스트 경로에 /myshuttledev/를 추가하다. 예를 들어, 만약 웹 앱 URL이 https://myshuttle-azure.azurewebsites.net/ 이라면, 로그인 페이지의 URL은 https://myshuttle-azure.azurewebsites.net/myshuttledev/이 된다.
Azure Portal 자체 내에서 새 이미지가 레지스트리로 푸시 될 때 웹앱을 배포하도록 Continuous Deployment를 구성 할 수 있다. 그러나 Azure Pipeline을 설정하면 애플리케이션 배포에 대해 더 많은 유연성과 추가 제어 (승인, 릴리즈 게이트 등)가 제공된다.
6. Azure DevOps 계정으로 돌아가 파이프라인 허브에서 Releases 를 선택한다. 릴리즈 정의 MyShuttleDockerRelease를 선택하고 Edit을 클릭한다.
7. Tasks 에 마우스를 올려 놓고 Azure-Dev를 선택한다. 아래와 같이 환경 설정한다.
- Azure 구독을 선택하고 Authorize를 클릭하여 자격 증명을 인가한다.
- 만든 App Service를 입력한다.
8. Execute Azure MYSQL:SqlTaskFile 태스크를 선택하고 Azure 구독을 선택한 다음 데이터베이스 서버를 만드는 동안 이전에 기록해 둔 DB 세부정보를 제공한다.
- 드롭 다운에서 Host Name을 선택한다.
- 필요한 데이터베이스 alm, 테이블을 생성하고 마지막으로 레코드를 채우는 버전 제어 MYSQL script가 여기에 제공된다.
9. $(DBUSER) 및 $(DBPASSWORD) 매개 변수의 경우 Variables 섹션을 클릭하고 해당 값을 입력한다.
- $(DBUSER)는 Azure Portal에서 생성된 MYSQL 서버의 Properties 섹션에 있는 SERVER ADMIN LOGIN NAME 값에 해당한다.
- $(DBPASSWORD)는 Azure Portal에서 MYSQL 서버를 만드는 동안 제공된 Password에 해당한다.
10. Deploy Azure App Service 태스크를 선택하고 다음 값이 제공되었는지 확인한다. 이 태스크를 통해 끌어오려는 Tag를 지정할 수 있다는 점에 유의한다. 이렇게 하면 각 배포에 대해 빌드별 태그를 사용하여 코드에서 배포까지 엔드 투 엔드 추적성을 얻을 수 있다. 예를 들어, 도커 빌드 태스크를 사용하여 각 배포에 대해 Build.Number를 가지는 이미지로 태그할 수 있다.
- Azure 구독 - 드롭 다운에서 올바른 Azure 구독을 선택한다.
- 레지스트리 또는 네임 스페이스 - 생성된 Container Registry의 Login server 값을 제공한다. Overview 섹션에서 찾을 수 있다.
- 이미지 - 값을 web으로 제공한다. 빌드 후 컨테이너 이미지가 저장되는 위치이다.
- 태그 - 값을 $(Build.BuildNumber)로 제공한다.
11. Save를 선택한 다음 + Release | Create Release를 클릭한다.
12. 사용할 아티팩트 버전을 확인한 다음 Create를 선택한다.
13. 릴리즈가 완료 될 때까지 기다린 다음 URL http://{your web app name}.azurewebsites.net/myshuttledev로 이동한다. 로그인 페이지를 볼 수 있어야 한다.
실습5: 웹앱에서 MySQL 연결 문자열 구성하기
1. Azure Portal에서 프로비저닝한 웹앱의 Settings - Configuration을 선택한다. Application Settings를 선택하고 Connection String 섹션까지 아래로 스크롤한다.
2. + New connection string을 클릭하여, 유형을 MySQL로 변경하고 MyShuttleDb로 이름을 지정하고 다음 문자열을 값에 붙여넣고 MySQL 서버 이름, 사용자 이름 및 암호를 적절한 값으로 대체한다.
jdbc:mysql://{MySQL Server Name}:3306/alm?useSSL=true&requireSSL=false&autoReconnect=true&user={your user name}&password={your password}
- MySQL 서버 이름 : 이전에 MySQL 서버 속성에서 복사한 값이다.
- your user name : 이전에 MySQL 서버 속성에서 복사한 값이다.
- your password : Azure에 배포 단계에서 MYSQL 데이터베이스 서버를 만드는 동안 제공한 값이다.
3. Save를 클릭하여 연결 문자열을 저장한다.
4. 이제 애플리케이션에 로그인 할 수 있어야 한다. 로그인 페이지로 돌아가서 아래 사용자 username/password 조합을 사용하여 로그인 해본다.
- fred/fredpassword
- wilma/wilmapassword
- betty/bettypassword
다음: Eclipse를 사용한 종단간 워크 플로
랩의 다음 부분에서는 Eclipse를 사용하는 Java 개발자의 일반적인 엔드 투 엔드 워크플로를 볼 수 있다. 방금 배포한 버전에 문제가 있다. 문제가 보고되었다고 가정하면, 우리는 그것을 테스트하고, 버그를 제출한 다음, 원인을 찾고 버그를 고칠 것이다.
'Azure와 함께 하는 DevOps' 카테고리의 다른 글
62. 기존 .NET 앱을 Windows 컨테이너로 배포 (.NET 앱 현대화) 1편 (0) | 2020.12.14 |
---|---|
61. Eclipse와 Azure Repos 및 Azure Pipelines 통합하기 (추가편) (0) | 2020.12.07 |
59. Eclipse와 Azure Repos 및 Azure Pipelines 통합하기 1편 (0) | 2020.11.23 |
58. Azure Function을 위한 CI/CD 파이프라인 설정하기 (1) | 2020.11.16 |
57. Jenkins CI를 위한 CD 파이프 라인 구성하기 2편 (0) | 2020.11.09 |