BookmarkSubscribeRSS Feed

Azure DevOps 파이프라인을 통한 Azure + Viya 배포용 SAS Viya IaC

Started ‎06-02-2022 by
Modified ‎06-02-2022 by
Views 760

SAS는 글로벌 해커톤 #HackinSAS를 후원하고 있습니다. 해당 이벤트는 새롭고 창의적인 방식을 통해 공익을 위한 데이터 활용 방법을 모색하는 취지로 시작되었습니다. 이 포스팅에서 해커톤에 대한 세부정보를 다루지 않으며 자세한 내용은 #HackinSAS 페이지와 SAS 커뮤니티의 Hacker’s Hub를 통해 확인하실 수 있습니다. 이 게시물에서 다루고 싶은 것은 해커톤에 참여하는 각 팀에게 제공할 환경을 만드는 방법에 대한 것입니다.

Daun_1-1654150281271.png

 

주제

SAS Viya 배포 자동화에 있어 Azure DevOps Pipelines를 통한 작업 효율 향상

 

전제 조건

다음 두 가지의 sassoftware GitHub 레파지토리를 활용합니다.

SAS Viya 4 IaC for Azure

SAS Viya 4 Deployment

 

해당 레파지토리에는 Azure 환경 내 SAS Viya 배포를 위한 도구, 스크립트 및 코드를 제공하고 있습니다. 이러한 개념에 익숙해지는 것이 향후 작업에 도움이 됩니다.

 

기초

저는 SAS Viya 배포에 필요한 Azure 컴퓨팅 리소스를 생성하기 위해 강력한 SAS Viya IaC(Infrastructure as Code) 레파지토리(상단 참조)를 사용하고 있습니다. 이 프로젝트에는 SAS Viya 4 제품을 배포하는 데 필요한 Microsoft Azure Cloud 인프라 리소스를 프로비저닝하기 위한 Terraform 스크립트를 포함하고 있습니다. 인프라가 구축 후 다른 참조 레파지토리의 코드와 함께 SAS Viya를 배포합니다.

 

Azure DevOps 파이프라인

 

#HackinSASAzure 인프라에는 100개 팀을 위한 환경을 조성해야 합니다. 각 팀은 고유한 SAS Viya 환경에 액세스할 수 있어야 합니다. 현재 가장 민첩하고 효율적인 방식으로 모든 인프라를 제공하기 위해 노력중이며 이 프로세스를 가능한 한 최대한 자동화하기 위해 A SAS Viya 4 IaC for Azure

SAS Viya 4 Deployment 살펴보기로 결정했습니다.

 

Azure Pipelines continuous integration (CI) and continuous delivery (CD) 결합하여 코드를 지속적이고 일관되게 테스트 빌드하여 모든 대상에 제공합니다. Jenkins와 유사한 자동화 서버라고 생각하시면 됩니다. 이러한 파이프라인에서 Viya4 IaC Terraform Viya 4 배포 스크립트를 통합하는 방법을 공유하고자 합니다. 이를 위해서는 자동화 서버 및 SAS Viya IaC 프로젝트에 대해 어느 정도 지식이 필요합니다.

 

아래 그래픽은 설명된 전체 배포 프로세스를 나타냅니다. 파이프라인 초기화 섹션에서 다루도록 하겠습니다.

Daun_2-1654150370447.png

파이프라인 초기화

메인 파이프라인을 시작하기 전에 첫 번째 DevOps 파이프라인 초기화 프로세스를 다뤄야 합니다. 먼저 기존 Azure Storage 계정 내에 terraform.tfstate 파일을 저장할 공간을 만듭니다. 각 참여 팀은 각각 Azure Cloud Infrastructure에 대한 모든 정보가 포함되어 있는 고유한 terraform.tfstate 파일을 가지게 됩니다. 해당 스토리지 컨테이너의 생성은 파이프라인의 첫 번째 작업입니다.

 

두 번째 작업은 Docker Container Image를 빌드하고 팀 이름으로 태그를 지정하여 Azure Container Registry에 푸시하는 것입니다(3단계). Docker 이미지는 Terraform 계획 및 적용을 위해 두 번째 파이프라인에서 몇 차례 실행됩니다. Docker 이미지를 위해 첫 번째 파이프라인에서 실행되는 Docker 명령은 다음과 같습니다.

docker build -t viya4-iac-azure-hack:$(team) .

docker tag viya4-iac-azure-hack:$(team) $(location).azurecr.io/viya4-iac-azure-hack:$(team)

docker push $(location).azurecr.io/viya4-iac-azure-hack:$(team)

 

보시다시피 팀과 위치를 식별하기 위해 변수를 사용합니다. 이러한 필수 매개변수 없이는 파이프라인은 작동하지 않습니다. 컨테이너 이미지 빌드에 사용되는 Dockerfile(하단 참조)  SAS IaC Github 프로젝트에 있는 것과 동일합니다. 더불어 추가 매개변수로서 ARM_ACCESS_KEY가 필요합니다. 이 값은 Azure Storage 계정에 대한 액세스를 제공합니다. 또한 terraform.tfstate 파일의 위치에 대한 일부 백엔드 매개변수를 추가하여 Terraform init 명령을 수정했습니다. 파이프라인 실행 도중에는 팀 문자열이 해커톤 팀의 이름으로 바뀝니다.

...

ENV ARM_ACCESS_KEY=__storagekey__

RUN apk --update --no-cache add git openssh \ 

  && terraform init -backend-config="key=__team__-terraform.tfstate" -backend-

config="container_name=__team__" /viya4-iac-azure

...

 

이 작업을 수행하려면 나머지 백엔드 세부 정보를 Terraform 스크립트의 main.tf에 추가해야 합니다.

terraform {

    backend "azurerm" {

       resource_group_name = "tstate"

       storage_account_name = "tstatehackathon"

    }

}

 

파이프라인 실행은(4단계) 일반적으로 약 2분 안에 완료됩니다. 다음은 파이프라인 실행 결과를 나타낸 것입니다.

Daun_3-1654150523198.png

 

주요 파이프라인

이제 Azure AKS Kubernetes 클러스터를 설정하는 작업의(5단계) 대부분이 설정되었으며 Viya를 배포할 차례입니다. 이전에 Azure Container Registry에 푸시한 Docker 이미지로 AKS 클러스터를 설정합니다. SAS Viya를 배포하기 위해 GitHub의 또 다른 매우 편리한 프로젝트인   SAS Viya4 deployment 사용합니다.

 

첫 번째 파이프라인과 마찬가지로 핵심은 연결된 Azure Repos Git을 사용하여 Azure DevOps 프로젝트에서 모든 필수 및 매개 변수화된 파일을 체크인하는 것입니다.

  • azure_docker_creds.env
  • Terraform.tfvars
  • ansible-vars-iac-azure.yaml
  • TLS 인증서

첫 번째 파일은 파이프라인의 특정 단계에서 소싱할 인증 정보를 포함합니다. 이를 통해 Azure DevOps 파이프라인은 SAS Viya 4 IaC for Azure 프로젝트 설명과 같이 Azure 구독 액세스를 위한 Terraform을 인증할 수 있습니다. 반드시 azure_docker_creds.env 파일에 추가 변수를 추가해야 합니다. ARM_ACCESS_KEY는 백엔드 Azure 저장소에 대한 액세스를 제공하므로 Terraform 상태 파일을 저장할 수 있습니다. 파일 내용은 다음과 같습니다.

TF_VAR_subscription_id="00000000-0000-0000-0000-000000000000"

TF_VAR_tenant_id="00000000-0000-0000-0000-000000000000"

TF_VAR_client_id="00000000-0000-0000-0000-000000000000"

TF_VAR_client_secret="00000000-0000-0000-0000-000000000000"

ARM_ACCESS_KEY=__storagekey__

파이프라인은 실행 중에 적절한 자격 증명을 사용하여 스토리지 키 값을 쿼리합니다. terraform.tfvars ansible-vars-iac-azure.yaml에서 실행 중에 값을 대체하기 위해 몇 가지 매개변수를 추가했습니다.

 

파일은 다음과 같이 나타납니다.

 

Terraform.tfvars

# **************** REQUIRED VARIABLES ****************

# These required variables' values MUST be provided by the User

prefix = "hackinsas-__team__

"location = "__location__" # e.g., "eastus2"

# **************** REQUIRED VARIABLES ****************

 

ansible-vars-iac-azure.yaml

## Cluster

NAMESPACE: hackinsas-__team__

....

JUMP_SVR_HOST: __jmpip__

JUMP_SVR_USER: jumpuser

JUMP_SVR_PRIVATE_KEY: /data/auto-private-key-__team__.pem

...

## Ingress

V4_CFG_INGRESS_TYPE: ingress

V4_CFG_INGRESS_FQDN: __team__-hackinsas.vectorlabs.sas.com

V4_CFG_TLS_MODE: full-stack # [full-stack|front-door|disabled]

V4_CFG_TLS_CERT: /data/vector.crt

V4_CFG_TLS_KEY: /data/vector.key

V4_CFG_TLS_TRUSTED_CA_CERTS: /data/vector-cacerts.crt..

 

이 모든 것이 준비되면 Azure DevOps 파이프라인을 실행합니다. 프로세스는 대략 약 30분이 소요됩니다. 실행하는 동안 인프라 설정 및 SAS Viya 배포가 자동으로 이루어집니다. 이를 통해 팀이 해커톤에 등록할 때 필요한 환경을 빠르게 가동할 수 있습니다. 여기(아래 그래픽 참조) 수동으로 파이프라인을 시작하거나 특정 트리거를 사용하여 시작할 수도 있습니다.

Daun_4-1654150778454.png

 

실행이 완료되면 파이프라인은 6개의 노드 풀이 있는 AKS 클러스터를 생성하고 전체 SAS Viya 배포를 시작합니다. 1시간 후에 해당 환경에서 작업을 시작할 수 있습니다.

 

AKS 클러스터 세부정보

시스템 노드 풀 default_nodepool_vm_type = "Standard_D4_v2"

Node Pool

Vm_type

Min nodes

Max Nodes

system

D4_v2

2

2

CAS

E16ds_v4

1

1

compute

E16ds_v4

1

1

connect

E8ds_v4

1

1

stateless

E16ds_v4

1

2

stateful

E16ds_v4

1

3

 

아래 스크린샷에서 볼 수 있듯이 파이프라인의 작업을 여러 단계와 작업으로 나눴습니다. 더 많은 구조와 더 나은 명명 규칙을 제공하기 위해 도전을 수락합니다. 해커톤이 끝나면 IaC를 제거하고 모든 Azure 리소스 또한 삭제하는 옵션도 추가했습니다.

Daun_5-1654150814234.png

 

그리고 아래 이미지의 세부 정보에서 보시다시피 두 개의 아티팩트를 게시합니다. Build artifact는 배포의 모든 매니페스트, kustomization.yaml site-config 폴더가 포함된 build-team.zip 파일입니다. drop folder에는 IaC terraform 스크립트에서 생성한 Kubernetes 클러스터 및 점프 서버에 연결하는 데 필요한 파일이 저장됩니다. 마지막으로, 필요한 경우 SAS Viya 환경에 액세스하고 사용자 지정이 가능합니다.

Daun_6-1654150834252.png

 

마치며

다소 어려움이 있다면 Azure DevOps 파이프라인 설명 영상을 확인하시기 바랍니다.

Version history
Last update:
‎06-02-2022 02:22 AM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags