Próbuję skonfigurować moją usługę dokującą przez terrafforma, że gdy obraz Docker jest aktualizowany, a nowy obraz obrazu jest dostępny w rejestrze zdalnego, z terraform apply spodziewam się, że Terraform wykrył aktualizację Digest i aktualizację Uruchomienie.

Zastosowałem konfigurację z https://registry.terraform.io / Dostawcy / Kreuzwerker / Docker / Ostatnie / Dokumenty / Zasoby / Registry_image tak, że mój skrypt terraform wygląda tak:

(...)
data "docker_registry_image" "my-docker-image" {
  name = "my-registry/docker/my-image:2.263.3"
}

resource "docker_image" "docker-image" {
  name = data.docker_registry_image.my-docker-image.name
  pull_triggers = [data.docker_registry_image.my-docker-image.sha256_digest]
  keep_locally = true
}  
(...)

resource "docker_service" "my-service" {
  name = "my-service"

  task_spec {
    container_spec {
      image = data.docker_registry_image.my-docker-image.name
(...)

A potem wykonuję Terraform, wyraźnie widać, że okładka z rejestru zdalnego różni się od trawienia używanego w pojemniku do biegania:

data.docker_registry_image.my-docker-image: Refreshing state... [id=sha256:d7aa8259d1503b970b14c66a06d144200d8f14a6c7f17d62cbfdad815309c9fb]

docker_image.my-docker-image: Refreshing state... [id=sha256:710bf0daf1b66543943dc086cfb3041000bb219aaf00ec75a8c18c770f4cb776my-registry/docker/my-image:2.263.3]

Widać, że oba trawie są różne, ale terraform twierdzi, że:

No changes. Infrastructure is up-to-date.

This means that Terraform did not detect any differences between your
configuration and real physical resources that exist. As a result, no
actions need to be performed.

Który nie jest prawdą, ponieważ trawienie z docker_registry_image jest inny niż docker_image.

Konfiguracja wydaje się być prosta, ale nadal nie mogę go skonfigurować.

0
Brandon X. 9 luty 2021, 15:26

1 odpowiedź

Najlepsza odpowiedź

Wygląda na to, że źle zrozumiałem cel ciągnięcia obrazów, gdy strawienie się zmieniło. Digest Summsum jest tylko wskazywaniem, że istnieje nowsza wersja obrazu, nic więcej. Terraform nie zaktualizuje niczego (może pobrać tylko nowszą wersję do rejestru lokalnego), ponieważ wersja obrazu nie zmieniła się, tylko trawer w rejestrze dokująca. Innymi słowy, jeśli chcesz zaktualizować usługę za pomocą nowszej wersji obrazu, musisz zaktualizować wersję obrazu, a nie tylko aktualizować istniejącą wersję, ponieważ strawsze zostanie odkryte, ale usługa nie zostanie zaktualizowana .

0
Brandon X. 9 marzec 2021, 09:49