0
0

Kubernetes+Golnag+gRPC+Terraformでクライアントからサーバーに接続する方法

Posted at

クライアントからサーバーにgRPC接続する際に以下のようなコードを書くと思います。ローカル環境で開発する際はSERVER_URLとしてlocalhost:ポート番号を指定すれば良かったのですが、Kubernetesにデプロイする際に何を指定すればよいのかについて説明します。terraformで構築するものとして説明します。

client.go
	conn, err := grpc.Dial(os.Getenv("SERVER_URL"), grpc.WithTransportCredentials(insecure.NewCredentials()))

解決法

まず、サーバー側のアプリケーションのサービスを以下のように作ります。「cluster_ip = "None"」とするのが重要です。自分は「type = "NodePort"」としていて色々試してずっとうまくいきませんでし。。。

server_service.tf
resource "kubernetes_service_v1" "server_service" {
  metadata {
    name = "server-service"
    namespace = "namespace1"  
        
        
        
      spec {
        
        
        
        port {
          name        = "http"
          port        = 80
          target_port = 8000
        }
        cluster_ip = "None"
        
        
        
      }
  }
}

次に、クライアント側のSERVER_URLの環境変数を以下のように設定します。

client_deployment.tf
resource "kubernetes_deployment_v1" "client_deployment" {
      metadata {
        name = "client_deployment"
        namespace = "namespace1"    
        labels = {
          app = "client_deployment"
        }
      } 
    
    
    
   spec {
    
    
    
    template {
    
    
    

      spec {
    
    
    
       container {
    
    
    
  
          env {
            name = "SERVER_URL"
            value = "server-service.namespace1.svc.cluster.local:8080"
          }
    
    
    
}

以上でKubernetesでもgRPC通信ができるようになりました。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0