NaverCloudPlatform / terraform-provider-ncloud

Terraform NaverCloud provider
https://registry.terraform.io/providers/NaverCloudPlatform/ncloud/latest/docs
Mozilla Public License 2.0
96 stars 72 forks source link

[New Resource]: Cloud function & Object storage & API gateway #425

Open hanmir13 opened 4 months ago

hanmir13 commented 4 months ago

Description

NCP에서 제공하는 서비스들에 비해 NCP terraform provider가 제공하는 리소스가 많이 부족한것 같습니다.

Cloud function, Object storage, API gateway 리소스들의 추가가 계획되어있나요?

a3626a commented 4 months ago

https://github.com/NaverCloudPlatform/terraform-provider-ncloud/issues/159 https://github.com/NaverCloudPlatform/terraform-provider-ncloud/issues/395 Object Storage 지원에 대해서 여러 수요가 있는 것으로 확인되지만 3년 전에 이슈가 등록되었음에도 개발될 여지가 보이지 않고, 빠른 시간 안에 기능이 필요한 관계로 저희는 NCP 팀에 의존하지 않고 테라폼을 사용하는 독립적인 방안을 검토해보았습니다.

Object Storage는 S3 Compatible하게 개발됐기 때문에 어려움은 있을지언정, 이론적으로 AWS Terraform Provider와 연동될 수 있습니다.

이러한 접근법을 AWS Terraform Provider에서는 "Supporing 3rd Party S3"라고 합니다. 관련된 논의나 PR은 해당 레포지토리에서 이 키워드로 검색하시면 쉽게 찾으실 수 있을 것입니다.

아래 코드를 실행하면

# NCP의 Object Storage를 AWS provider를 이용하여 관리합니다.
provider "aws" {
  alias  = "for_ncp"

  access_key = var.access_key
  secret_key = var.secret_key
  region = "us-east-1"
  skip_credentials_validation = true
  skip_metadata_api_check = true
  skip_requesting_account_id = true

  endpoints {
    # NCP 공공존임에 유의
    s3  = "https://kr.object.gov-ncloudstorage.com"
  }
}

resource "aws_s3_bucket" "bucket_poc" {
  provider = aws.for_ncp
  bucket   = "hello-bucket-4"
  acl      = "public-read-write"
}

Object Storage가 S3와 완전히 호환되지 않으므로 "UnsupportedOperation" 오류가 발생합니다. 이에 대한 처리는 이미 AWS Terraform Provider에 다른 3rd Party S3에 대해서 하드 코딩 되어 있습니다. 따라서 NCP의 오류 코드에 대한 추가적인 예외처리를 구현하여 AWS Terraform Provider에 PR을 작성한 상태입니다. (수정 버전에서는 위 코드가 의도대로 동작합니다)

이 접근 방식에 관심이 있으시다면 해당 PR에 이모지를 남겨 우선 순위를 높일 수 있습니다.

Please vote on this pull request by adding a 👍 reaction to the original post to help the community and maintainers prioritize this pull request.

a3626a commented 4 months ago

위 PR이 병합되었으니 곧 공식 terraform aws provider에서 위 전략을 활용하실 수 있을 것입니다.

wonchulee commented 2 weeks ago

Object Storage는 https://github.com/NaverCloudPlatform/terraform-provider-ncloud/issues/395#issuecomment-2367288864 , PR 내용 참고부탁드립니다. Cloud function, API gateway는 Terraform 개발 전 해결해야하는 이슈가 존재합니다. 따라서 지원에 시간이 소요될 수 있는 점 참고 부탁드립니다.