예제를 테스트중인데 막혀서 이렇게 질문드려 봅니다. 예제는 간단합니다. kind로 k8s 클러스터를 만들고 helm으로 docker image를 실행시킨 다음 gRPC 클라이언트로 요청하나를 보내는 것입니다.
- 윈도우 WLS2 에서 실습
- 테스트 코드: https://github.com/varunbpatil/proglog.git
- 사용툴: kubectl, kind, kubectl, docker desktop 등등
-
도커 데스크탑 실행
-
$ kind create cluster
로 클러스터 생성 -
$ make init gencert compile build-docker
로 도커 이미지 생성 -
$ make init load-docker
로 도커를 kind에 로드 -
$ helm install proglog deploy/proglog
로 클러스터로 배포 -
$ kubectl get pods
로 proglog-0, 1, 2 모두 running하는 걸 확인한 다음 -
$ kubectl port-forward pod/proglog-0 8400
으로 포트 포워딩. 클러스터의 proglog-0 pod의 :8400 포트로 전달된다. -
아래 코드를 cmd/getservers/main.go 파일을 생성하여 넣고 실행
$ go run cmd/getservers/main.go
package main
import (
"context"
"flag"
"fmt"
"log"
api "github.com/varunbpatil/proglog/api/v1"
"google.golang.org/grpc"
)
func main() {
addr := flag.String("addr", ":8400", "service address")
flag.Parse()
conn, err := grpc.Dial(*addr, grpc.WithInsecure())
if err != nil {
log.Fatal(err)
}
client := api.NewLogClient(conn)
ctx := context.Background()
res, err := client.GetServers(ctx, &api.GetServersRequest{})
if err != nil {
log.Fatal(err)
}
fmt.Println("servers:")
for _, server := range res.Servers {
fmt.Printf("\t- %v\n", server)
}
코드를 따락가보니 클러스터로 배포되는 녀석은 TLS 보안을 쓰지 않는 녀석이었고, 따라서 위의 getservers/main.go 파일로 연결이 되어야 하는데 연결이 실패하고 port-forwarding도 끊겨버립니다. helm으로 간단한 nginx를 배포하고 포트포워딩 해보았을때에 문제없이 되는 것을 포면 포트포워딩 자체는 또 문제가 아닌것 같구요.