Упаковщик облачной аутентификации Google в рамках vpc - PullRequest
2 голосов
/ 19 июня 2019

Мы используем Packer для создания образов в экземпляре GCP.Упаковщик пытается получить изображение на основе проекта и изображения следующим образом:

https://www.googleapis.com/compute/v1/projects/<project-name>/global/images/<image-name>?alt=json

Затем выдает ошибку: oauth2: cannot fetch token: Post https://accounts.google.com/o/oauth2/token: dial tcp 108.177.111.84:443: i/o timeout

Исходя из принципа безопасности, наш вычислительный экземпляр не имеет внешнего IP-адреса.адрес, поэтому он не имеет доступа к Интернету.В этом случае accounts.google.com больше не доступен.Тогда как мы можем аутентифицировать Google API?

Я попытался включить правила брандмауэра и предоставить маршруты для доступа в Интернет.Но в соответствии с требованием, указанным здесь , экземпляр по-прежнему не будет иметь доступа, если у него нет внешнего IP-адреса.

Это означает, что у нас должен быть отдельный способ аутентификации googleapis.Но поддерживает ли Packer это?

Вот наш сборщик упаковщиков:

"builders": [
    {
        "type": "googlecompute",
        "project_id": "test",
        "machine_type": "n1-standard-4",
        "source_image_family": "{{user `source_family`}}",
        "source_image": "{{user `source_image`}}",
        "source_image_project_id": "{{user `source_project_id`}}",
        "region": "{{user `region`}}",
        "zone": "{{user `zone`}}",
        "network": "{{user `network`}}",
        "subnetwork": "{{user `subnetwork`}}",
        "image_name": "test-{{timestamp}}",
        "disk_size": 10,
        "disk_type": "pd-ssd",
        "state_timeout": "5m",
        "ssh_username": "build",
        "ssh_timeout": "1000s",
        "ssh_private_key_file": "./gcp-instance-key.pem",
        "service_account_email": "test-account@test-mine.iam.gserviceaccount.com",
        "omit_external_ip": true,
        "use_internal_ip": true,
        "metadata": {
            "user": "build"
        }
    }

1 Ответ

0 голосов
/ 20 июня 2019

Чтобы сделать то, что вы хотите вручную, вам нужно будет открыть ssh-туннель на работающем вычислительном экземпляре внутри проекта или в виртуальном виртуальном процессоре, у которого включен пиринг в сети, и вы хотите получить доступ к вычислительным ресурсам.

Если вы затем используете CI с бегуном, таким как gitlab-ci, обязательно создайте бегун внутри того же виртуального или виртуального компьютера с пирингом.

Если вы не хотите создавать вычисленияс внешним ip вы можете попытаться открыть vpn-соединение с проектом и сделать это через vpn.

...