Конфигурация диспетчера развертывания GCP «не удалось разобрать YAML» с файлом yaml, хранящимся в корзине облачного хранилища gcp - PullRequest
0 голосов
/ 23 сентября 2019

Я использую GCP для развертывания облачного хранилища gcp.Мой файл YAML загружен в другое существующее хранилище облачного хранилища gcp, и я запускаю следующие команды в облачной оболочке gcp, чтобы создать развертывание.Я указываю ссылку URL в командах для создания развертывания (см. Ниже)

$gcloud config set project my-project-name
$gcloud deployment-manager deployments create bkt-deployer  --config https://storage.cloud.google.com/mybucket/UCABkt-V4.yaml

И получаю следующую ошибку

 Failed to parse YAML: mapping values are not allowed here
  in "<unicode string>", line 11, column 14:
      font-family: 'Open Sans';
                 ^ (line: 11)

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

Хотя фактический формат YAML не имеет значения, все же, однако, мой файл YAML выглядит следующим образом (см. Блок кода)

resources:
- name: deployment-manager-bucket-2
  type: storage.v1.bucket
  properties:
    predefinedAcl: projectPrivate
    projection: full
    location: US
    storageClass: STANDARD
    lifecycle:
      rule:
      - action: 
        type: SetStorageClass storage_class = "NEARLINE" 
        condition:
          age: 30
      - action:
        type: SetStorageClass storage_class = "COLDLINE"
        condition:
          age: 90

Итак, пара вопросов

1) Как лучше всего настроить YAML для менеджера развертывания?Является ли загрузка файла конфигурации yaml в хранилище объектов gcp с последующим указанием URL-адреса ссылки, как я это сделал, оптимальным вариантом?или есть альтернативный способ предоставления пути YAML к облачной оболочке gcp для создания развертывания?

2) И при условии, что в конце концов я преодолею это препятствие, указав путь развертывания мой YAML и гарантировав отсутствие доступаи проблемы с разрешениями, мой синтаксис YAML выглядит нормально?В особенности спецификация правила жизненного цикла, которая присваивает классы хранения в режиме «Близкая линия» и «Холодная линия» при старении на 30 и 90 дней соответственно

Огромное спасибо за вашу помощь.

С уважением

Йогеш

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

Начало ваших швов в файле YAML повреждено:

resources:
- name: deployment-manager-bucket-2
type: storage.v1.bucket
properties:

Недостаточно места перед типом и свойствами.

Тогда проблема, возникающая у вас при развертывании, заключается в том, что ваш yamlфайл не доступенВы получили проблему "семейства шрифтов", которая находится в CSS страницы ошибки доступа.Попробуй сам!curl -L https://storage.cloud.google.com/mybucket/UCABkt-V4.yaml

Вы должны получить

<!DOCTYPE html>
<html lang="en">
  <head>
  <meta charset="utf-8">
  <meta content="width=300, initial-scale=1" name="viewport">
  <meta name="google-site-verification" content="LrdTUW9psUAMbh4Ia074-BPEVmcpBxF6Gwf0MSgQXZs">
  <title>Sign in - Google Accounts</title>
  <style>
  @font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 300;
...

Таким образом, вы должны сделать свой файл или корзину общедоступными.Не очень безопасно и профессионально.

Я предлагаю решение: используйте Cloud Build .

  1. Используйте gsutil Builder для загрузки файлов в среду Cloud Build
  2. Используйте gcloud Builder для запуска диспетчера развертывания

Cloud Build имеетразрешение на доступ к корзине вашего проекта.

0 голосов
/ 24 сентября 2019

Я нашел точную причину сбоя благодаря комментарию @guillaume. Когда я делаю "wget" из облачной оболочки на URL "link", который я получаю из облачного хранилища, я не получаю сам YAML, но яполучить ссылку для перенаправления, которую, я полагаю, используют браузеры, а командная строка администратора развертывания - нет.Он пытается интерпретировать ответ сервера как YAML и выдает ошибку.Смотрите ответ wget ниже
Так что теперь я знаю причину - и я полагаю, что я пришел к выводу, что использование корзины хранения gcp для хранения yaml для администратора развертывания - плохая идея.

ПРОСТОЕ РЕШЕНИЕ.- Отредактируйте свои файлы yaml на месте в инструменте командной строки gcp или напрямую загрузите их в свою оболочку и используйте их локально.

И для всеобщего блага я отредактировал свой YAML в этом вопросе.То, что там сейчас, совершенно актуально сейчас :-)

wget https://storage.cloud.google.com/mybucket/myyaml.yaml
--2019-09-24 12:15:23--  
https://storage.cloud.google.com/mybucket/myyaml
Resolving storage.cloud.google.com 
(storage.cloud.google.com)...    
Connecting to storage.cloud.google.com 
(storage.cloud.google.com)| :443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://accounts.google.com/ServiceLogin? service=cds&passive=1209600&continue=https://storage.cloud.google .com/mybucket/myyaml.yaml&followup=https://storage.cloud.google.com/dmybucket/myyaml.yaml [following]
--2019-09-24 12:15:23--  
https://accounts.google.com/ServiceLogin?service=cds&passive=1209600&continue=https://storage.cloud.google.com/mybucket/myyaml.yaml&followup=https://storage.cloud.google.com/dmybucket/myyaml.yaml
Resolving accounts.google.com (accounts.google.com)...
Connecting to accounts.google.com 
(accounts.google.com) ... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘myyaml.yaml’

myyaml.yaml [ <=>                            ]  xx.xxK  --.-KB/s    in 0.0xxs
...