노트북에서 Go, gRPC, Kubernetes 및 Istio로 구성된 Mercari 같은 마이크로서비스를 살펴보겠습니다!
/services
디렉터리에서 각 마이크로서비스의 구현 및 gRPC API 정의를 찾을 수 있습니다.
make cluster
이 make 대상은 다음 작업을 수행합니다.
/services
디렉터리에 있는 모든 마이크로서비스의 Docker 이미지를 빌드합니다. 이 make 대상이 완료된 후 아래와 같이 kubectl
에 대한 작은 래퍼인 ./script/kubectl
을 사용하여 마이크로서비스 상태를 확인할 수 있습니다.
./script/kubectl get pods --all-namespaces | grep -E '^(gateway|authority|catalog|customer|item)'
authority app-7b559dfd9f-dcr2v 2/2 Running 0 44s
authority app-7b559dfd9f-z8c54 2/2 Running 0 44s
catalog app-67cc897d9c-dhcv7 2/2 Running 0 36s
catalog app-67cc897d9c-nfk7x 2/2 Running 0 36s
customer app-565bfc5884-bgb8r 2/2 Running 0 28s
customer app-565bfc5884-lt6q2 2/2 Running 0 28s
gateway app-cc456cf4d-nsghg 2/2 Running 0 51s
gateway app-cc456cf4d-wq47s 2/2 Running 0 51s
item app-84db48bdf-h7q7b 2/2 Running 0 19s
item app-84db48bdf-l5mnl 2/2 Running 0 19s
이제 Mercari-ish 서비스는 포트 30000
에서 수신 대기하고 있으며 아래와 같이 탐색할 수 있습니다!
curl -s -XPOST -d '{"name":"gopher"}' localhost:30000/auth/signup | jq .
{
"customer" : {
"id" : " ec1fcc77-b565-4477-b609-62bf0c403903 " ,
"name" : " gopher "
}
}
TOKEN=$(curl -s -XPOST -d '{"name":"gopher"}' localhost:30000/auth/signin | jq .access_token -r)
curl -s -XPOST -d '{"title":"Keyboard","price":30000}' -H "authorization: bearer $TOKEN" localhost:30000/catalog/items | jq .
{
"item" : {
"id" : " bda92da6-3270-4255-a756-dbe7d0aa333e " ,
"customer_id" : " ec1fcc77-b565-4477-b609-62bf0c403903 " ,
"title" : " Keyboard " ,
"price" : " 30000 "
}
}
curl -s -XGET -H "authorization: bearer $TOKEN" localhost:30000/catalog/items | jq .
{
"items" : [
{
"id" : " 3c287306-6753-4ab6-acde-d17297e2939e " ,
"title" : " Keyboard " ,
"price" : " 30000 "
},
{
"id" : " e0e58243-4138-48e5-8aba-448a8888e2ff " ,
"title" : " Mobile Phone " ,
"price" : " 10000 "
},
{
"id" : " 0b185d96-d6fa-4eaf-97f6-3f6d2c1649b6 " ,
"title" : " Laptop " ,
"price" : " 20000 "
}
]
}
curl -s -XGET -H "authorization: bearer $TOKEN" localhost:30000/catalog/items/e0e58243-4138-48e5-8aba-448a8888e2ff | jq .
{
"item" : {
"id" : " e0e58243-4138-48e5-8aba-448a8888e2ff " ,
"customer_id" : " 7c0cde05-4df0-47f4-94c4-978dd9f56e5c " ,
"customer_name" : " goldie " ,
"title" : " Mobile Phone " ,
"price" : " 10000 "
}
}
make clean