Member-only story
KubernetesでGoアプリケーションをスケーリングする
この記事では、Kubernetes を使用してGo アプリケーションをスケーリングする方法を説明し実際に、
Go でアプリケーションを構築します。そして、開発マシン上でローカルにアプリケーションを起動し、Dockerでコンテナ化し、MinikubeでKubernetesクラスターにデプロイし、公開用エントリポイントとして機能するロードバランサーを作成します。
Dockerは、アプリケーションの実行に必要なものをすべて保持するファイルシステムを提供するために使用される、コンテナ化ツールです。これにより、アプリケーションは一貫したランタイム環境を持ち、どこにデプロイされても同じように動作することが保証されます。Kubernetesは、コンテナ化されたアプリケーションのデプロイメント、スケーリング、および管理を自動化するためのクラウドプラットフォームです。
前提条件
このチュートリアルを完了する前に、次の準備をお願いします。
- Go 1.19
- Kubernetes 1.25
- Minikube 1.26
- お好みのエディターまたは IDE
- コンテナやGoでのアプリケーション開発の経験があれば理想的です。
サンプルWebアプリケーションの構築
まず最初に、Go で書かれたサンプルアプリケーションを構築します。このアプリケーションを Docker でコンテナ化すると、サーバーの IP アドレスである 3000 番ポートにリクエストを送ります。
開発用ワークスペースで以下のコマンドを実行し、プロジェクトファイルを格納するディレクトリを新規に作成します。
mkdir my-go-app
cd- my-go-app
続いて、HTTPリクエストに応答する Ginを使ったサービスを作成します。
package main
import (
"fmt"
"time"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.New()
r.SetTrustedProxies([]string{"192.168.1.*"})
// Example pingog request.
r.GET("/", func(c *gin.Context) {
c.String(200, "pong "+fmt.Sprint(time.Now().Unix()))
})
// Example when panic…