v0.5의 구성 권장 미사용 처리

v0.5의 구성 권장 미사용 처리 (Configuration Deprecations in v0.5)

v0.5.0에 대한 릴리스 노트는 구성 권장 미사용 처리(deprecation)의 하위 집합에 초점을 맞춰요. Consul-Terraform-Sync(CTS) v0.5에서 많은 구성 권장 미사용 처리를 도입했어요.

출처: 문서

본문

v0.5.0에 대한 릴리스 노트는 구성 권장 미사용 처리의 하위 집합에 초점을 맞춥니다.

우리는 Consul-Terraform-Sync(CTS) v0.5에 많은 구성 권장 미사용 처리를 도입했습니다. 많은 권장 미사용 처리는 CTS 작업 구성을 간소화하고 불일치를 줄이기 위한 노력의 일부입니다. CTS가 더 많은 사용 사례를 지원함에 따라 불일치가 발생했고 이를 설명하는 데 많은 문서가 필요했습니다.

이 문서는 권장 미사용 처리와 v0.5에 대한 구성을 업그레이드하는 방법에 대한 예시를 설명합니다. 권장 미사용 처리된 구성을 v0.8 이상까지 제거하지 않을 것입니다. 또한 구성을 자동으로 업그레이드해 업그레이드를 더 빠르고 원활하게 만드는 도구를 릴리스할 계획입니다.

권장 미사용 처리 개요 (Overview of Deprecations)

권장 미사용 처리는 두 가지 주요 불일치를 해결합니다. 첫 번째는 다양한 구성 블록과 필드에서 "source" 용어의 사용입니다. 두 번째는 services 필드와 관련 service 블록을 사용해 작업 조건 또는 작업 모듈 입력을 구성하는 예외입니다.

"source" 용어 해결 (Address "source" terminology)

"source"라는 단어는 많은 작업 구성의 이름에서 사용됩니다. 구성 이름의 "Source"는 일반적으로 Terraform 모듈을 가리키지만 명확하지 않아 설명하기 위한 추가 문서가 필요합니다.

우리는 "source"라는 용어가 있는 모든 구성을 권장 미사용 처리하고 작업 구성에서 "module"로 대체했습니다.

권장 미사용 처리된 구성 대체 구성 설명
source 필드 module 필드 Terraform 모듈의 경로
source_input 블록 module_input 블록 Terraform 모듈에 대한 추가 Terraform 입력 변수의 값을 정의하는 구성 블록
source_includes_var 필드 use_as_module_input 필드 조건 객체의 값이 모듈 입력으로도 사용되어야 하는지 나타내는 조건 블록의 필드

제거 날짜:

  • source : v0.8 이후의 향후 주요 릴리스
  • source_input : v0.8
  • source_includes_var : v0.8

아래 문서는 권장 미사용 처리된 구성을 새 이름으로 언급합니다.

services 필드와 service 블록 해결 (Address services field and service block)

services 필드와 관련 service 블록은 작업 구성 사용 사례에 대한 예외인 경우가 많으며 복잡성과 제한을 추가합니다.

services 필드는 condition 블록을 통해 구성되지 않는 유일한 작업 조건입니다. 또한 module_input 블록을 통해 구성되지 않는 유일한 추가 모듈 입력입니다. 이로 인해 다른 조건 및 module_input 블록과 많은 불일치 관계가 발생합니다.

우리는 services 필드와 관련 service 필터를 권장 미사용 처리해 이러한 예외와 다른 조건 및 module_input 블록과의 복잡한 관계를 제거했습니다.

권장 미사용 처리된 구성 대체 구성 설명
services 필드 condition "services" 또는 module_input "services" 블록 모듈 입력을 제공하고 때로는 작업 조건으로 작동하는 서비스
service 블록 필드가 condition "services" 및 module_input "services" 블록으로 이동 services 필드의 서비스에 추가 필터링을 제공하는 구성 블록

services 필드와 관련 service 블록은 v0.8 이후의 향후 주요 릴리스에서 제거될 것입니다.

권장 미사용 처리에 대한 자세한 내용 (Further Details on Deprecations)

source 필드 권장 미사용 처리 (Deprecate source field)

작업 구성의 source 필드는 권장 미사용 처리되며 직접 module로 이름을 바꿀 수 있습니다.

예시:

source 필드 권장 미사용 처리

task {
  name     = "services_task"
  services = ["api", "web"]
  source   = "path/to/module"
}
task {
  name     = "services_task"
  services = ["api", "web"]
  module   = "path/to/module"
}

source_input 블록 권장 미사용 처리 (Deprecate source_input block)

작업 구성의 source_input 블록은 권장 미사용 처리되며 직접 module_input로 이름을 바꿀 수 있습니다.

예시:

source_input 블록 권장 미사용 처리

task {
  name   = "scheduled_task"
  module = "path/to/module"
  condition "schedule" {
    cron = "* * * * Mon"
  }
  source_input "consul-kv" {
    path = "my_key"
  }
}
task {
  name   = "scheduled_task"
  module = "path/to/module"
  condition "schedule" {
    cron = "* * * * Mon"
  }
  module_input "consul-kv" {
    path = "my_key"
  }
}

source_includes_var 필드 권장 미사용 처리 (Deprecate source_includes_var field)

condition 블록의 source_includes_var 필드는 모든 유형의 조건에 대해 권장 미사용 처리되며 직접 use_as_module_input로 이름을 바꿀 수 있습니다.

예시:

source_includes_var 필드 권장 미사용 처리

task {
  name   = "catalog_services_task"
  module = "path/to/module"
  condition "catalog-services" {
    regexp              = "api"
    source_includes_var = true
  }
}
task {
  name   = "catalog_services_task"
  module = "path/to/module"
  condition "catalog-services" {
    regexp              = "api"
    use_as_module_input = true
  }
}

services 필드 권장 미사용 처리 (Deprecate services field)

services 필드는 다른 작업 구성에 따라 작업에서 다른 역할을 할 수 있습니다.

  • 조건 블록이 구성되지 않으면 services 필드는 작업의 조건이자 모듈 입력입니다.
  • 조건 블록이 구성되면 services 필드는 작업의 모듈 입력일 뿐입니다.

services 필드는 작업에서 갖는 역할에 따라 대체될 수 있습니다.

조건으로서의 services 필드 권장 미사용 처리 (Deprecate services field as a condition)

services 필드가 조건으로 동작할 때 names 필드가 서비스 목록으로 설정된 condition "services" 블록으로 대체할 수 있습니다.

예시:

조건으로서의 services 필드 권장 미사용 처리

task {
  name     = "services_condition_task"
  module   = "path/to/module"
  services = ["api", "web"]
}
task {
  name     = "services_condition_task"
  module   = "path/to/module"
  condition "services" {
    names = ["api", "web"]
  }
}

모듈 입력으로서의 services 필드 권장 미사용 처리 (Deprecate services field as module input only)

services 필드가 모듈 입력만 제공할 때 names 필드가 서비스 목록으로 설정된 module_input "services" 블록으로 대체할 수 있습니다.

예시:

모듈 입력으로서의 services 필드 권장 미사용 처리

task {
  name   = "services_module_input_task"
  module = "path/to/module"
  condition "consul-kv" {
    path                = "my_key"
    source_includes_var = true
  }
  services = ["api", "web"]
}
task {
  name   = "services_module_input_task"
  module = "path/to/module"
  condition "consul-kv" {
    path                = "my_key"
    use_as_module_input = true
  }
  module_input "services" {
    names = ["api", "web"]
  }
}

참고: use_as_module_input은 v0.5에서 업데이트되어 구성되지 않으면 기본적으로 true로 설정됩니다. 새 구성에서 use_as_module_input = true를 설정하는 줄은 더 이상 필요하지 않습니다.

service 블록 권장 미사용 처리 (Deprecate service block)

service 블록은 task 블록 외부의 구성 블록입니다. service 블록의 필드는 services 필드에 해당 서비스가 설정된 모든 작업에 추가 필터링을 제공합니다.

services 필드가 위 섹션에서 설명한 대로 조건 또는 module_input 블록으로 업그레이드되면 권장 미사용 처리된 service 블록의 필드를 새 조건 또는 module_input 블록으로 이동할 수 있습니다.

예시:

service 블록 권장 미사용 처리

task {
  name   = "services_filter_task"
  module = "path/to/module"
  condition "services" {
    names = ["api"]
  }
}

service {
 name       = "api"
 datacenter = "dc2"
 namespace  = "ns"
}
task {
  name   = "services_filter_task"
  module = "path/to/module"
  condition "services" {
    names = ["api"]
    datacenter = "dc2"
    namespace  = "ns"
  }
}

더 복잡한 권장 미사용 처리 업그레이드가 필요한 가장자리 사례가 있습니다. 일부 작업은 services 필드에 여러 서비스가 있고 해당 각 서비스에 대해 service 블록이 구성될 수 있습니다. service 블록 전체에서 필드가 다를 때 작업을 분할하고 각 서비스에 대해 새롭고 별도의 작업을 만들어야 합니다.

예시:

service 블록 권장 미사용 처리 가장자리 사례

task {
  name     = "services_task"
  module   = "path/to/module"
  services = ["api", "web"]
}

service {
  name       = "api"
  datacenter = "api_dc"
}

service {
  name       = "web"
  datacenter = "web_dc"
}
task {
  name     = "api_services_task"
  module   = "path/to/module"
  condition "services" {
    names      = ["api"]
    datacenter = "api_dc"
  }
}

task {
  name     = "web_services_task"
  module   = "path/to/module"
  condition "services" {
    names      = ["web"]
    datacenter = "web_dc"
  }
}

더 알아보기 (Learn more)