近年、クラウド コンピューティング テクノロジの急速な発展に伴い、アプリケーションの展開にクラウド コンピューティングを使用する企業がますます増えています。 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 サイトの他の関連記事を参照してください。