Puncte:1

Cum să mapați porturile în Azure Container Instances prin Terraform?

drapel ua

Am două containere în grupul meu de containere pe Azure folosind Azure Container Instances (ACI), unul (container A) expunând porturi 80 și 443 pe internet (reverse proxy), celălalt (containerul B) rulând de asemenea pe port 80. Cum cartografiez portul containerului B 80 într-un alt port, să zicem 8080, pentru ca cele două containere să nu se ciocnească de porturile pornite gazdă locală (pe Azure, containerele din interiorul unui grup de containere pot ajunge între ele prin localhost)?

Nu pot folosi 8080:80 pentru că trebuie să fie un număr și nu văd altă modalitate de a specifica acest lucru. Dacă specific port 80 pe containerul A, proxy-ul invers se realizează doar pe el însuși, în esență, proxy-ul invers (în mod normal, portul containerului B) 80 ar fi accesibil pe localhost)

Exemplu:

resursă „azurerm_container_group” „main_containers” {
  nume = „grup de containere”
  locație = var.locație
  nume_grup_resurse = var.rg_name
  ip_address_type = „public”
  dns_name_label = local.dns_name_label
  os_type = "Linux"
  restart_policy = „Întotdeauna”
  tags = var.tags

  container {
    nume = "nextcloud"
    imagine = "nextcloud"
    CPU = "0,8"
    memorie = "0,8"

    variabile_de mediu = {
      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
    }

    volum {
      nume = azurerm_storage_share.nextcloud_storage_nextcloud_data_share.name
      mount_path = "/var/www/html"
      stocare_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
    }

    porturi {
      # Asta vreau să fac, dar nu reușește cu:
      # Valoare neadecvată pentru atributul „port”: este necesar un număr.
      port = "8080:80"
      protocol = "TCP"
    }
  }

  container {
    nume = "reverse-proxy-https"
    imagine = "caddy"
    CPU = "0,2"
    memorie = "0,2"
    comenzi = [
      „caddy”, „reverse-proxy”,
      „-from”, local.public_domain_name,
      # aici aș spune să reverse-proxy la 8080
      „-to”, „localhost:8080”,
    ]

    porturi {
      port = 80
      protocol = "TCP"
    }

    porturi {
      port = 443
      protocol = "TCP"
    }

    volum {
      nume = azurerm_storage_share.nextcloud_storage_caddy_data_share.name
      mount_path = "/data/caddy"
      stocare_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
    }

    volum {
      nume = azurerm_storage_share.nextcloud_storage_caddy_config_share.name
      mount_path = "/config/caddy"
      stocare_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
drapel ua
Acest lucru se aplică numai pentru **unele** imagini: puteți utiliza tipul de volum `secret` pentru a suprascrie directoarele din container â exemplu: `volum { secret = { "000-default.conf" = base64encode(... EOT) } mount_path = "/etc/apache2/sites-enabled" }`. Aceasta este utilizarea greșită a tipului de volum „secret” – ceea ce face cu adevărat este să monteze fișiere „inline” în container. Acest lucru permite configurarea ușoară fără modificarea imaginii.
Simao Gomes Viana avatar
drapel ua
Addendum la comentariul anterior: Trebuie remarcat că pentru nextcloud, doar suprascrierea 000-default.conf nu este suficientă. Trebuie să faceți acest lucru pentru întregul fișier apache2.conf și asta înseamnă toate fișierele din /etc/apache2. Fezabil, dar enervant.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.