初始化Azure Container App Job报错:Terraform配置不支持registry和secret块类型
Terraform配置azurerm_container_app_job的块类型错误解决
错误原因及修正方案
1. registry块不被识别
azurerm_container_app_job资源不支持在顶层直接定义registry块。如果需要拉取私有容器镜像,仅通过镜像地址+密钥引用的方式即可实现,不需要额外的registry块。直接删除代码中第57行的registry块即可。
2. secret块不符合预期
资源要求使用复数形式的secrets数组参数定义密钥,而非单个secret块。用户代码中已经正确配置了secrets数组,只需删除第62行的secret块即可。
修正后的完整代码
resource "azurerm_container_app_job" "container_app_job" { name = "xxx-${var.location_short_name}-${var.environment}" location = var.location resource_group_name = var.resource_group_name container_app_environment_id = var.ca_environment replica_timeout_in_seconds = 10 replica_retry_limit = 10 manual_trigger_config { parallelism = 4 replica_completion_count = 1 } secrets = [ { name = "container-registry-password" value = var.registry_credentials.registry_key } ] template { container { name = "app-container" image = "${var.registry_credentials.registry_server_url}/${var.image_name}:${var.environment}" env { name = "REGISTRY_USERNAME" value = var.registry_credentials.registry_username } env { name = "REGISTRY_SERVER" value = var.registry_credentials.registry_server_url } env { name = "REGISTRY_PASSWORD" secret_ref = "container-registry-password" } readiness_probe { transport = "HTTP" port = 5000 } liveness_probe { transport = "HTTP" port = 5000 path = "/health" header { name = "Cache-Control" value = "no-cache" } initial_delay = 5 interval_seconds = 20 timeout = 2 failure_count_threshold = 1 } startup_probe { transport = "TCP" port = 5000 } cpu = 0.5 memory = "1Gi" } } }
补充说明
私有镜像拉取的逻辑已通过以下配置实现:
- 用
secrets存储仓库密码 - 通过容器的
env变量注入仓库地址、用户名,并用secret_ref引用密码密钥 - 镜像地址直接指向私有仓库路径
内容的提问来源于stack exchange,提问作者Lasal Senarath
相关产品推荐
相关产品推荐

