ホームページ  >  記事  >  バックエンド開発  >  golang を使用してアプリケーションをデプロイする方法

golang を使用してアプリケーションをデプロイする方法

PHPz
PHPzオリジナル
2023-04-25 18:28:14605ブラウズ

近年、クラウド コンピューティング テクノロジの急速な発展に伴い、アプリケーションの展開にクラウド コンピューティングを使用する企業がますます増えています。 Go (golang とも呼ばれる) は、高速かつ効率的で学びやすいプログラミング言語として、クラウド ネイティブ開発においてますます注目を集めています。この記事では、初心者が golang のクラウド デプロイ スキルをすぐにマスターできるように、golang を使用してアプリケーションをデプロイする方法を詳しく紹介します。

パート 1: Golang クラウド デプロイメント戦略

現在、企業がクラウド コンピューティング サービス プロバイダー (CSP) のサービスを使用してアプリケーションをパブリック クラウドにデプロイすることは非常に一般的です。もちろん、各 CSP は異なるクラウド展開戦略を提供する場合があります。クラウド デプロイメントに Golang を使用する場合、主に 2 つの戦略があります。1 つはコンテナーに Golang アプリケーションをデプロイする方法、もう 1 つはサーバーレス アーキテクチャを使用して Golang アプリケーションをデプロイする方法です。

以下では、これら 2 つのクラウド導入戦略について詳しく紹介します。

パート 2: コンテナーを使用した golang アプリケーションのデプロイメント

コンテナー仮想化は、コンピューターのオペレーティング システム レベルで仮想化を実装するために使用されるテクノロジです。コンテナテクノロジーを使用すると、複数の環境が同じ物理ホスト上に共存できるため、展開と管理のコストが節約されます。この場合、Golang アプリケーションは Docker や Kubernetes などの管理ツールを使用してコンテナ イメージにパッケージ化され、コンテナはクラウドまたはローカル ホストにデプロイされます。以下では、Docker と Kubernetes を使用して golang アプリケーションをデプロイする方法について説明します。

2.1 Docker を使用して golang アプリケーションをデプロイする

Docker は非常に人気のあるコンテナ化プラットフォームです。 golang アプリケーションを Docker コンテナにデプロイしたい開発者は、次の手順を使用してこれを実現できます。

ステップ 1: Docker をインストールする

使用するオペレーティング システムに応じて、Docker 公式 Web サイトにアクセスして、対応する Docker インストール プログラムをダウンロードしてインストールできます。

ステップ 2: Dockerfile を作成する

Dockerfile では、Docker イメージの構築方法を定義する必要があります。以下は、「hello-world」という名前の golang アプリケーションをデプロイする方法を示す簡単な Dockerfile の例です。

FROM golang:latest

ADD . /go/src/hello-world
WORKDIR /go/src/hello-world

RUN go install

ENTRYPOINT /go/bin/hello-world

EXPOSE 8080

この Dockerfile はいくつかの部分に分かれています。まず、最新バージョンの golang イメージをベースイメージとして使用します。次に、ADD ディレクティブを使用して、アプリケーションをコンテナ内の /go/src/hello-world パスに追加します。次に、WORKDIR コマンドを使用して現在のディレクトリを /go/src/hello-world に変更し、RUN コマンドを使用してアプリケーションをインストールおよびビルドします。最後に、ENTRYPOINT ディレクティブを使用してアプリケーションをコンテナーのエントリ ポイントにし、EXPOSE ディレクティブを使用してコンテナーがリッスンするポートを指定します。

ステップ 3: Docker を使用してイメージを構築する

次のコマンドを使用して、アプリケーション フォルダーのルート ディレクトリにある Dockerfile から「hello-world」という名前のイメージを構築します。

$ docker build -t hello-world .

このコマンドは、現在のディレクトリ内の Dockerfile を使用して「hello-world」という名前のイメージを構築するように Docker に指示します。

ステップ 4: アプリケーションのコンテナを実行する

これで、アプリケーションはコンテナに正常にパッケージ化され、「hello-world」イメージとして保存されました。これで、次のコマンドを使用してコンテナを実行できるようになります。

$ docker run -p 8080:8080 hello-world

このコマンドは、新しいコンテナを起動し、コンテナの 8080 ポートをローカル マシンの 8080 ポートにマップします。この時点で、Docker コンテナ内で実行される golang アプリケーションにアクセスできるようになります。

2.2 Kubernetes を使用して golang アプリケーションをデプロイする

Kubernetes は、コンテナーのデプロイ、管理、拡張を自動化するオープンソース管理ツールです。 Kubernetes を使用すると、Golang アプリケーションのコンテナ化されたデプロイ、スケーリング、管理を簡単に実行できます。以下は、golang アプリケーションを Kubernetes にデプロイする簡単な手順です。

ステップ 1: デプロイメント ファイルを作成する

次の yaml の例を使用して、golang アプリケーションのデプロイメントとコンテナを Kubernetes クラスターにデプロイする方法を定義するデプロイメント ファイルを作成します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
  labels:
    app: hello-world
spec:
  replicas: 2
  selector:
    matchLabels:
      app: hello-world
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-world
        image: golang:latest
        command: ["/bin/bash", "-c"]
        args: ["go run main.go"]
        ports:
        - containerPort: 8080

この yaml サンプルでは、​​「hello-world」という名前のデプロイメントが定義され、アプリケーションのコンテナー イメージが指定され、コンテナーのパラメーターとポートが定義され、それを Kubernetes にデプロイする方法が示されています。クラスターコンテナー。

ステップ 2: Kubernetes を使用して golang アプリケーションをデプロイする

kubectl apply コマンドを使用して、デプロイメント ファイルを Kubernetes クラスターに適用します。

$ kubectl apply -f deployment.yaml

デプロイメント操作が完了すると、Kubernetes は構成されたコンテナー イメージに接続し、golang アプリケーションの 2 つのコンテナー インスタンスをインスタンス化します。

ステップ 3: アプリケーションにアクセスする

次の kubectl コマンドを使用して、新しくデプロイされたデプロイメントのステータスを表示します。

$ kubectl get deployments

このコマンドは、クラスター内で現在実行されているすべてのデプロイメントを表示します。

次のコマンドを使用して、アプリケーションのポッドを表示します。

$ kubectl get pods

このコマンドは、実行中のすべての Pod を表示します。

次の kubectl コマンドを使用して、公開されたサービスを表示します。

$ kubectl expose deployment hello-world --type=LoadBalancer --port=8080

このコマンドは、「hello-world」という名前のサービスを作成し、それを Kubernetes クラスター内の LoadBalancer の背後で公開します。

次の kubectl コマンドを使用して、現時点で公開されているサービスのステータスを確認します。

$ kubectl get services

このコマンドは、実行中のすべてのサービスを表示します。

ステップ 4: アプリケーションのスケーリング

次のコマンドを使用して、アプリケーションのレプリカの数を 5 に拡張できます。

$ kubectl scale deployments/hello-world --replicas=5

このコマンドは、Kubernetes クラスターに 5 つのコンテナーを作成し、golang アプリケーションの負荷をすべてのコンテナー インスタンスに分散します。

パート 3: サーバーレス アーキテクチャを使用した golang アプリケーションのデプロイ

サーバーレス アーキテクチャはフルマネージド コンピューティング モデルであり、クラウド サービス プロバイダーはアプリケーション コードを引き継ぐだけであり、サーバー側の構成やサービスについては責任を負いません。メンテナンス。サーバーレス アーキテクチャを使用すると、アプリケーション全体をクラウド上でホストし、リソース消費を最小限に抑えて管理できます。 AWS Lambda などのサーバーレス クラウド サービス プロバイダーは、優れた価格性能比を備えているため、インフラストラクチャの詳細を気にせずに、使用量に応じた料金のみを支払うことができます。

AWS Lambda を使用して golang アプリケーションをデプロイする方法の簡単な手順を次に示します。

ステップ 1: AWS Lambda 関数を作成する

golang を次のように使用して、新しい Lambda 関数を作成します。ランタイム。関数実行の構成とコードを定義し、関数を zip アーカイブ ファイルにパッケージ化します。

ステップ 2: 関数のアップロードとテスト

zip ファイルを AWS Lambda にアップロードし、AWS Lambda のオンライン IDE を使用してアプリケーション コードをテストします。

ステップ 3: API を構成する

API ゲートウェイを作成し、Lambda 関数に関連付けます。

ステップ 4: API Gateway のテスト

AWS API Gateway のデプロイメント機能を使用して、アプリケーションをクラウドにデプロイし、ブラウザでアクセスします。

これらの手順は、クラウド展開に golang の使用を開始するための良いガイドです。もちろん、実際の実装では、アプリケーションを最適化する方法、操作をコンテナ化する方法など、より詳細な問題や課題に直面することになります。ただし、この記事で提供される情報は、初心者にクラウド展開の基礎を確立し、より詳細なトピックへの扉を開くのに十分な知識を提供します。

以上がgolang を使用してアプリケーションをデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。