Score:1

จะแมปพอร์ตใน Azure Container Instances ผ่าน Terraform ได้อย่างไร

ธง ua

ฉันมีคอนเทนเนอร์สองคอนเทนเนอร์ในกลุ่มคอนเทนเนอร์ของฉันบน Azure โดยใช้ Azure Container Instances (ACI) หนึ่งคอนเทนเนอร์ (คอนเทนเนอร์ A) เปิดเผยพอร์ต 80 และ 443 ไปยังอินเทอร์เน็ต (reverse proxy) อีกอันหนึ่ง (คอนเทนเนอร์ B) ก็ทำงานบนพอร์ตเช่นกัน 80. ฉันจะแมปพอร์ตของคอนเทนเนอร์ B ได้อย่างไร 80 ไปยังท่าเรืออื่น พูด 8080เพื่อไม่ให้คอนเทนเนอร์ทั้งสองชนกันกับพอร์ตที่เปิดอยู่ โลคัลโฮสต์ (บน Azure คอนเทนเนอร์ภายในกลุ่มคอนเทนเนอร์สามารถเข้าถึงได้ผ่าน localhost)

ฉันใช้ไม่ได้ 8080:80 เพราะมันต้องเป็นตัวเลขและฉันไม่เห็นวิธีอื่นที่จะระบุสิ่งนี้ ถ้าฉันระบุพอร์ต 80 บนคอนเทนเนอร์ A พร็อกซีย้อนกลับจะวนซ้ำเข้าหาตัวเอง โดยพื้นฐานแล้วพร็อกซีย้อนกลับคือการย้อนกลับพร็อกซี (โดยปกติจะเป็นพอร์ตของคอนเทนเนอร์ B 80 จะสามารถเข้าถึงได้บน localhost)

ตัวอย่าง:

ทรัพยากร "azurerm_container_group" "main_containers" {
  ชื่อ = "กลุ่มคอนเทนเนอร์"
  สถานที่ = var.location
  resource_group_name = var.rg_name
  ip_address_type = "สาธารณะ"
  dns_name_label = local.dns_name_label
  os_type = "ลินุกซ์"
  restart_policy = "เสมอ"
  แท็ก = var.tags

  คอนเทนเนอร์ {
    ชื่อ = "เน็กซ์คลาวด์"
    รูปภาพ = "เน็กซ์คลาวด์"
    ซีพียู = "0.8"
    หน่วยความจำ = "0.8"

    สภาพแวดล้อม_ตัวแปร = {
      MYSQL_DATABASE = azurerm_mariadb_database.nextcloud_database_db.name
      MYSQL_USER=azurerm_mariadb_server.nextcloud_database.administrator_login
      MYSQL_HOST=azurerm_mariadb_server.nextcloud_database.fqdn
    }

    secure_environment_variables = {
      MYSQL_PASSWORD = azurerm_mariadb_server.nextcloud_database.administrator_login_password
    }

    ปริมาณ {
      ชื่อ = azurerm_storage_share.nextcloud_storage_nextcloud_data_share.name
      mount_path = "/var/www/html"
      storage_account_name = azurerm_storage_account.nextcloud_storage.name
      storage_account_key = azurerm_storage_account.nextcloud_storage.primary_access_key
      share_name = azurerm_storage_share.nextcloud_storage_nextcloud_data_share.name
    }

    พอร์ต {
      # นี่คือสิ่งที่ฉันต้องการทำ แต่มันล้มเหลวด้วย:
      # ค่าที่ไม่เหมาะสมสำหรับแอตทริบิวต์ "พอร์ต": ต้องระบุตัวเลข
      พอร์ต = "8080:80"
      โปรโตคอล = "TCP"
    }
  }

  คอนเทนเนอร์ {
    ชื่อ = "reverse-proxy-https"
    ภาพ = "แคดดี้"
    ซีพียู = "0.2"
    หน่วยความจำ = "0.2"
    คำสั่ง = [
      "แคดดี้", "reverse-proxy",
      "-จาก", local.public_domain_name,
      # นี่คือที่ที่ฉันจะบอกให้ย้อนกลับพร็อกซีเป็น 8080
      "-ถึง", "localhost:8080",
    ]

    พอร์ต {
      พอร์ต = 80
      โปรโตคอล = "TCP"
    }

    พอร์ต {
      พอร์ต = 443
      โปรโตคอล = "TCP"
    }

    ปริมาณ {
      ชื่อ = azurerm_storage_share.nextcloud_storage_caddy_data_share.name
      mount_path = "/ข้อมูล/แคดดี้"
      storage_account_name = azurerm_storage_account.nextcloud_storage.name
      storage_account_key = azurerm_storage_account.nextcloud_storage.primary_access_key
      share_name = azurerm_storage_share.nextcloud_storage_caddy_data_share.name
    }

    ปริมาณ {
      ชื่อ = azurerm_storage_share.nextcloud_storage_caddy_config_share.name
      mount_path = "/config/แคดดี้"
      storage_account_name = azurerm_storage_account.nextcloud_storage.name
      storage_account_key = azurerm_storage_account.nextcloud_storage.primary_access_key
      share_name = azurerm_storage_share.nextcloud_storage_caddy_config_share.name
    }
  }
}

Simao Gomes Viana avatar
ua flag
สิ่งนี้ใช้กับรูปภาพ **บางรูป** เท่านั้น: คุณสามารถใช้ประเภทโวลุ่ม `secret` เพื่อเขียนทับไดเร็กทอรีในคอนเทนเนอร์ â ตัวอย่าง: `volume { secret = { "000-default.conf" = base64encode( ... EOT) } mount_path = "/etc/apache2/sites-enabled" }` นี่เป็นการใช้ประเภทโวลุ่ม `secret` ในทางที่ผิด สิ่งที่ทำคือเมานต์ไฟล์ "อินไลน์" ลงในคอนเทนเนอร์ สิ่งนี้ช่วยให้กำหนดค่าได้ง่ายโดยไม่ต้องแก้ไขรูปภาพ
Simao Gomes Viana avatar
ua flag
ภาคผนวกของความคิดเห็นก่อนหน้า: ควรสังเกตว่าสำหรับ nextcloud การเขียนทับ 000-default.conf นั้นไม่เพียงพอ คุณต้องทำกับ apache2.conf ทั้งหมด และนั่นหมายถึงไฟล์ทั้งหมดใน /etc/apache2 ทำได้ แต่น่ารำคาญ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา