В настоящее время у меня возникают проблемы при попытке развернуть мое приложение (в настоящее время это первая служба моих микросервисов).
Я следовал https://cloud.google.com/go/docs/tutorials/bookshelf-on-compute-engine, но использовал свой собственный сервис, размещенный на gitlab.
Мне, однако, пришлось отредактировать скрипт, так как он не работает (проблема sudo, поэтому я должен дать привилегии для каждой из моих команд):
set -ex
# Talk to the metadata server to get the project id and location of the application binary.
PROJECTID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google")
# Install logging monitor. The monitor will automatically pick up logs send to
# syslog.
sudo curl -s "https://storage.googleapis.com/signals-agents/logging/google-fluentd-install.sh" | sudo bash
sudo service google-fluentd restart &
# Install dependencies from apt
sudo apt-get update
sudo apt-get install -yq ca-certificates supervisor git emacs
echo "alias ne='emacs -nw'" >> .bashrc
source /.bashrc
# Creating .ssh dir
sudo mkdir -p ~/.ssh
# Generating ssh requirements
sudo ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N ''
# Injecting ssh key
sudo echo "ssh-rsa xxxx...... john@doe.com" > micro_service.pub
sudo mv micro_service.pub ~/.ssh/
sudo echo "-----BEGIN OPENSSH PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxx......
-----END OPENSSH PRIVATE KEY-----" > micro_service
sudo mv micro_service ~/.ssh/
# Injecting conf
sudo echo "Host gitlab
Hostname gitlab.com
IdentityFile ~/.ssh/micro_service
User john@doe.com" > config
sudo mv config ~/.ssh/
# adding knows hosts
ssh-keyscan -t rsa gitlab.com >> ~/.ssh/known_hosts
# Get the service's source code.
git clone git@gitlab.com:PROJECT/MY-SERVICE.git service
# Create a goapp user. The application will run as this user.
sudo getent passwd goapp || sudo /usr/sbin/useradd -m -d /home/goapp goapp
sudo chown -R goapp:goapp /service
# Configure supervisor to run the Go app.
sudo echo "
[program:goapp]
directory=/service
command=/service/main argument1 argument2
autostart=true
autorestart=true
user=goapp
environment=HOME=\"/home/goapp\",USER=\"goapp\"
stdout_logfile=syslog
stderr_logfile=syslog
" > goapp.conf
sudo mv goapp.conf /etc/supervisor/conf.d/goapp.conf
sudo supervisorctl reread
sudo supervisorctl update
# Application should now be running under supervisor
После всего этого,это все еще не работает (теперь застрял на некоторых новых проблемах gitlab ..).
У меня есть правильный подход? Действительно ли это путь, потому что кажется действительно трудным, когда это должно быть намного проще ... (Я создаю экземпляр, скрипт запускается. Он клонирует сервис и запускает его, используя supervisor
).
Вот CLI, который я использую для создания своего экземпляра:
gcloud compute instances create my-instance \
--image-family=debian-9 \
--image-project=debian-cloud \
--machine-type=g1-small \
--scopes userinfo-email,cloud-platform \
--metadata-from-file startup-script=startup-script.sh \
--zone us-central1-f \
--tags http-server