волюмом, авторестратом и прочим.
Сделал в терраформе google_compute_instance с объявлением gce-container-declaration.
Но оно:
- не поддерживает авторизацию в приватном реджистри
- не умеет назначать порты
С авторизацией самая большая проблема.
Konlet гитхаб как будто заброшен.
Какую альтернативу стоит рассмотреть?
може есть у гугловского имидж регестри возможность пулить имиджи с приватного к себе
Проблемы решил. Вдруг кому-то будет интересно. Итак, хотел поднимать терраформом всю инфру (сетки, вм, фв, днс) и запускать GCE с персистентным контейнером. Для этого есть рецепт: cos-cloud/cos-stable со встренным агентом gcr.io/gce-containers/konlet. При этом настройкой запуска контейнера можно управлять через yaml конфиг в metadata.gce-container-declaration. Что из нужного не умеет делать konlet: 1. аутентифицироваться в приватной репе. 2. маппить порты между хостом и контейнером. 3. маунтить волюмы (которые персистят изменения файлов, уже существующих в контейнере на момент старта). вместо этого маунтится hostPath, в который не копируется содержимое пути контейнера. Решения нашел такие: 1. пришлось добавить джоб с републикацией имаджа из приватной реджистри в Google Artifact Registry - оттуда все качается без аутентификации 2. Прописал ip форварды в metadata_start_script самой VM: #!/bin/bash sysctl -w net.ipv4.ip_forward=1 iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 5555 3. В том же скрипте создаю докер-волюм: docker volume create my-volume И потом в gce-container-declaration использую его как будто это hostPath. gce-container-declaration = <<-EOT spec: containers: - name: '${var.docker_container_name}' image: '${var.docker_image}' stdin: false tty: false volumeMounts: - name: 'my-volume' mountPath: '/path/to/mount' volumes: - name: 'my-volume' hostPath: path: 'my-volume' restartPolicy: Always EOT
Обсуждают сегодня