From 1c9faa604b10de41e284f4556b280928ff9fac96 Mon Sep 17 00:00:00 2001 From: Taekyu Date: Tue, 12 Apr 2022 22:57:15 +0900 Subject: [PATCH 1/2] update readme --- README.md | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 43170fa..51f98de 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,34 @@ -[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) - # tks-info -TKS (Taco Kubernetes Service) - information +[![Go Report Card](https://goreportcard.com/badge/github.com/openinfradev/tks-info?style=flat-square)](https://goreportcard.com/report/github.com/openinfradev/tks-info) +[![Go Reference](https://pkg.go.dev/badge/github.com/openinfradev/tks-info.svg)](https://pkg.go.dev/github.com/openinfradev/tks-info) +[![Release](https://img.shields.io/github/release/sktelecom/tks-info.svg?style=flat-square)](https://github.com/openinfradev/tks-info/releases/latest) + +TKS는 TACO Kubernetes Service의 약자로, SK Telecom이 만든 GitOps기반의 서비스 시스템을 의미합니다. 그 중 tks-info는 클러스터 및 서비스의 메타데이터를 다루는 서비스이며, 다른 tks service들과 gRPC 기반으로 통신합니다. +RPC 호출을 위한 proto 파일은 [tks-proto](https://github.com/openinfradev/tks-proto)에서 확인할 수 있습니다. + + +## Quick Start + +### Prerequisite +* docker 20.x 설치 +* postgresql을 설치하고 database를 초기화합니다. + ``` + docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password -d postgres + docker cp scripts/script.sql postgres:/script.sql + docker exec -ti postgres psql -U postgres -a -f script.sql + ``` + +### 서비스 구동 (For go developers) + +``` +$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/tks-info ./cmd/server/ +$ bin/tks-info -port 9110 +``` + +### 서비스 구동 (For docker users) +``` +$ docker pull sktcloud/tks-info +$ docker run --name tks-info -p 9110:9110 -d \ + sktcloud/tks-info server -port 9110 +``` From ab0768f21744944b855b612a3db7951ed32f6f33 Mon Sep 17 00:00:00 2001 From: Taekyu Date: Wed, 13 Apr 2022 14:58:55 +0900 Subject: [PATCH 2/2] feature. update readme --- README.md | 69 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 51f98de..66c992c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ [![Go Reference](https://pkg.go.dev/badge/github.com/openinfradev/tks-info.svg)](https://pkg.go.dev/github.com/openinfradev/tks-info) [![Release](https://img.shields.io/github/release/sktelecom/tks-info.svg?style=flat-square)](https://github.com/openinfradev/tks-info/releases/latest) -TKS는 TACO Kubernetes Service의 약자로, SK Telecom이 만든 GitOps기반의 서비스 시스템을 의미합니다. 그 중 tks-info는 클러스터 및 서비스의 메타데이터를 다루는 서비스이며, 다른 tks service들과 gRPC 기반으로 통신합니다. +TKS는 Taco Kubernetes Service의 약자로, SK Telecom이 만든 GitOps기반의 서비스 시스템을 의미합니다. 그 중 tks-info는 사용자 클러스터 및 서비스의 정보를 다루는 서비스이며, 다른 tks service들과 gRPC 기반으로 통신합니다. + RPC 호출을 위한 proto 파일은 [tks-proto](https://github.com/openinfradev/tks-proto)에서 확인할 수 있습니다. @@ -12,23 +13,71 @@ RPC 호출을 위한 proto 파일은 [tks-proto](https://github.com/openinfradev ### Prerequisite * docker 20.x 설치 +* tks-contract 설치 + * tks-contract: https://github.com/openinfradev/tks-contract * postgresql을 설치하고 database를 초기화합니다. ``` - docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password -d postgres - docker cp scripts/script.sql postgres:/script.sql - docker exec -ti postgres psql -U postgres -a -f script.sql + $ docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password -d postgres + $ docker cp scripts/script.sql postgres:/script.sql + $ docker exec -ti postgres psql -U postgres -a -f script.sql ``` -### 서비스 구동 (For go developers) - +### 서비스 구동 +#### For go developers ``` -$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/tks-info ./cmd/server/ +$ go build -o bin/tks-info ./cmd/server/ $ bin/tks-info -port 9110 ``` -### 서비스 구동 (For docker users) +#### For docker users ``` -$ docker pull sktcloud/tks-info +$ docker pull sktcloud/tks-info:latest $ docker run --name tks-info -p 9110:9110 -d \ - sktcloud/tks-info server -port 9110 + sktcloud/tks-info:latest -port 9110 ``` + +### gRPC API 호출 예제 (golang) + +```go +import ( + "google.golang.org/grpc" + pb "github.com/openinfradev/tks-proto/tks_pb" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/types/known/timestamppb" + ... +) + func YOUR_FUNCTION(YOUR_PARAMS...) { + var conn *grpc.ClientConn + tksInfoUrl = viper.GetString("tksInfoUrl") + if tksInfoUrl == "" { + fmt.Println("You must specify tksInfoUrl at config file") + os.Exit(1) + } + conn, err := grpc.Dial(tksInfoUrl, grpc.WithInsecure()) + if err != nil { + log.Fatalf("Couldn't connect to tks-info: %s", err) + } + defer conn.Close() + client := pb.NewClusterInfoServiceClient(conn) + ctx, cancel := context.WithTimeout(context.Background(), 30*time.Minute) + defer cancel() + data := pb.GetClustersRequest{} + data.ContractId = viper.GetString("contractId") + m := protojson.MarshalOptions{ + Indent: " ", + UseProtoNames: true, + } + jsonBytes, _ := m.Marshal(&data) + r, err := client.GetClusters(ctx, &data) + if err != nil { + fmt.Println(err) + } else { + if len(r.Clusters) == 0 { + fmt.Println("No cluster exists for specified contract!") + } else { + /* print cluster info from 'r' */ + + } + } +} +``` \ No newline at end of file