Vamos explorar os microsserviços Mercari que consistem em Go, gRPC, Kubernetes e Istio em seu laptop !
Você pode encontrar a implementação de cada microsserviço e as definições da API gRPC no diretório /services
.
make cluster
Este make target executa as seguintes tarefas:
/services
. Após a conclusão deste make target, você pode verificar o status dos microsserviços com ./script/kubectl
que é apenas um pequeno wrapper para kubectl
como abaixo:
./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
Agora, o serviço Mercari-ish está escutando na porta 30000
e você pode explorá-lo como abaixo!
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