Копировать в pod curl в каталог kubernetes - PullRequest
0 голосов
/ 12 октября 2019

Черт возьми, у кого-нибудь есть идея и она может помочь здесь? - Я не могу выполнить для меня очень сложную команду curl, у меня есть некоторые проблемы, чтобы понять, почему она не работает

Я пытаюсь скопировать данные с помощью curl в Wordpress Directory - на POD из Kubernetes

kubectl exec $WPPOD -- curl --request GET --header 'PRIVATE-TOKEN: *******' 'https://gitlab.com/api/v4/projects/*****/repository/files/infrastructure%2Fwordpress%2Fdeploy%2Fall-in-one-wp-migration-unlimited-extension%2Ezip/raw?ref=Add_WP_MySQL' > /var/www/html/wp-content/ai1wm-backups                                     
sh: 7: cannot create  /var/www/html/wp-content/ai1wm-backups -: Directory nonexistent

Также из куба это не работает

# curl --request GET --header 'PRIVATE-TOKEN: Z7-RByYpUJcnWU_STpuz' 'https://gitlab.com/api/v4/projects/14628452/repository/files/infrastructure%2Fwordpress%2Fdeploy%2Fall-in-one-wp-migration-unlimited-extension%2Ezip/raw?ref=Add_WP_MySQL' > /var/www/html/wp-content/ai1wm-backups/all-in-one-wp-migration-unlimited-extension.zip -O -J -L
sh: 3: cannot create  /var/www/html/wp-content/ai1wm-backups/all-in-one-wp-migration-unlimited-extension.zip -O -J -L: Directory nonexistent

Но если я проверю каталог внутри куба, то все будет в порядке

# cd /var/www/html/wp-content/ai1wm-backups
# ls
index.php  web.config

Благодаря полезному вводу у меня естьтеперь решение

kubectl exec $WPPOD -- curl --fail --output /var/www/html/wp-content/ai1wm-backups/all-in-one-wp-migration-unlimited-extension.zip --request GET --header 'PRIVATE-TOKEN: *******' 'https://gitlab.com/api/v4/projects/*****/repository/files/infrastructure%2Fwordpress%2Fdeploy%2Fall-in-one-wp-migration-unlimited-extension%2Ezip/raw?ref=Add_WP_MySQL'

1 Ответ

3 голосов
/ 12 октября 2019

У вас здесь есть две части плохой оболочки:

Первый - потому что на вашем компьютере происходит перенаправление . Во-вторых, все, что после > является именем файла, но вы включили в них случайные аргументы для curl.

Чтобы решить первый, упакуйте всю команду в литерал оболочки:

kubectl exec $WPPOD -- sh -c "curl --request GET --header 'PRIVATE-TOKEN: *******' 'https://gitlab.com/api/v4/projects/*****/repository/files/infrastructure%2Fwordpress%2Fdeploy%2Fall-in-one-wp-migration-unlimited-extension%2Ezip/raw?ref=Add_WP_MySQL' > /var/www/html/wp-content/ai1wm-backups"

Я бы даже зашел так далеко, чтобы сказать «не использовать перенаправление», поскольку, если вы сообщите curl о выходном файле и добавите к нему --fail, тогда он не будет писать вошибка файла на сервере, что неверно при использовании перенаправления оболочки: оболочка будет создавать этот файл, несмотря ни на что, возможно, делая его пустым;таким образом:

kubectl exec $WPPOD -- curl --fail --output /var/www/html/wp-content/ai1wm-backups --request GET --header 'PRIVATE-TOKEN: *******' 'https://gitlab.com/api/v4/projects/*****/repository/files/infrastructure%2Fwordpress%2Fdeploy%2Fall-in-one-wp-migration-unlimited-extension%2Ezip/raw?ref=Add_WP_MySQL'

Для второй проблемы достаточно просто перестроить аргументы, чтобы они соответствовали синтаксису оболочки:

curl  -O -J -L --request GET --header 'PRIVATE-TOKEN: Z7-RByYpUJcnWU_STpuz' 'https://gitlab.com/api/v4/projects/14628452/repository/files/infrastructure%2Fwordpress%2Fdeploy%2Fall-in-one-wp-migration-unlimited-extension%2Ezip/raw?ref=Add_WP_MySQL' > /var/www/html/wp-content/ai1wm-backups/all-in-one-wp-migration-unlimited-extension.zip

Хотя в этом случае вы конфликтуетеcurl поведения: опция -O собирается записать файл в текущем каталоге , поэтому перенаправление вашей оболочки будет получать только сообщения, написанные curlи не содержимое этого URL

Все это не имеет ничего общего с kubernetes, каталогом или копией, и эти теги следует удалить.

...