Рубрики
Uncategorized

Go Application Deployment on Google App Engine Гибкая среда

Google Cloud App Engine — это платформа в качестве сервисного продукта, которая позволяет нам развертывать приложения, написанные в V … Tagged with Googlecloud, Go, DevOps.

Google Cloud App Engine — это платформа в качестве сервисного продукта, которая позволяет нам развертывать приложения, написанные в различных времени запуска, например:

  • Питон
  • PHP
  • Джава
  • Рубин
  • Узел
  • Идти
  • Рубин и т. Д.

App Engine предоставляет нам два варианта: стандартная среда и гибкая среда.

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

Гибкая среда, с другой стороны, отличается благодаря своей среде на основе контейнеров, которая опирается на вычислительные виртуальные машины двигателя. Это важно для многих вариантов использования, поскольку мы можем настроить наш сервер в соответствии с нашим использованием и требованиями. Это может быть установка пользовательских пакетов, таких как ImageMagick, библиотеки MUPDF или SSH в наш сервер или запустить свой собственный скрипт Bash и т. Д. Мы можем использовать любой тип времени выполнения для запуска нашего приложения, и важно то, что наше приложение должно отвечать в порту 8080 по умолчанию, если мы не внесем некоторые изменения.

Вот подробное представление о разнице между ними. Здесь

Здесь мы будем развертывать приложение GO в гибкой среде в пользовательской среде выполнения, а не Google App Engine Default Default Defly, поскольку оно вызывает больше проблем, в отличие от стандартного. Мы будем добавлять два файла One App.yaml и другой файл Docker

Давайте приобрести приложение Simple Go, которое использует веб -структуру джина, чтобы представить Hello World в наш веб -браузер.

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.String(200, "Hello World")
    })
    r.Run()
}

Время показать миру 🤠🤠. Давайте скажем это через нашу гибкую среду двигателя приложения.

App.yaml

runtime: custom
env: flex

Это довольно просто, так как мы определяем наше пользовательское изображение как время выполнения с гибкой средой. Мы можем добавить другие параметры в целях масштабирования и настройки порта. Проверьте здесь

Теперь дайте создать файл Docker, который находится в корневом каталоге.

Докер

# Golang docker image
FROM golang:1.14

# Set necessary environmet variables needed for our image
ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

# install build essentials (optional)
RUN apt-get update && \
    apt-get install -y wget build-essential pkg-config --no-install-recommends

# Move to working directory /build
WORKDIR /build

# Copy and download dependency using go mod
COPY go.mod .
COPY go.sum .
RUN go mod download

# Copy the code into the container
COPY . .
COPY . /dist

# Build the application
RUN go build -o main .

# Move to /dist directory as the place for resulting binary folder
WORKDIR /dist

# Copy binary from build to main folder
RUN cp /build/main .

# Export necessary port, default GCP App Engine Port
EXPOSE 8080

# Command to run when starting the container
CMD ["/dist/main"]

Файл Docker будет содержать всю необходимую настройку конфигурации, необходимую для выставки приложения более 8080. Здесь 8080 — наш порт по умолчанию для GAE.

Также убедитесь, что go.mod и go.sum существует в корневом каталоге, чтобы необходимые пакеты были установлены в системе развертывания

Теперь из проекта GCLOUD CLI SET, на котором будет развернуто приложение.

 gcloud app deploy

После успешного развертывания будет представлен URL -адрес приложения, и мы успешно развернуты на наше приложение в гибкой среде Google App Engine с использованием пользовательского изображения времени выполнения.

Для получения дополнительной информации, если мы хотим, чтобы наше приложение использовало GORM для подключения к Google Cloud SQL, есть некоторые изменения.

Во -первых, включите API API Admin Cloud SQL в проекте в рамках App.yaml, мы должны сообщить наше приложение, чтобы разрешить безопасное соединение, иначе приложение может подключиться к базе данных, внести изменения, следующие следующие

runtime: custom
env: flex
beta_settings:
  cloud_sql_instances: $INSTANCE_CONNECTION_NAME$

$ Exaction_connection_name $ — это имя подключения нашего Cloud SQL, которое мы можем получить из деталей его экземпляра.

Как перед развертыванием приложения.

gcloud app deploy

Как гибкая среда, существует много конфигураций, которые могут быть реализованы, чтобы фактически сделать нашу систему, как мы хотим сделать и вести себя так, как мы собираемся.

Оригинал: «https://dev.to/prajwolpkc/go-application-deployment-on-google-app-engine-flexible-environment-1f2c»