> 백엔드 개발 > Golang > Go 언어를 사용하여 API 게이트웨이 구축

Go 언어를 사용하여 API 게이트웨이 구축

PHPz
풀어 주다: 2023-06-18 09:07:43
원래의
1361명이 탐색했습니다.

마이크로서비스 아키텍처의 인기와 함께 마이크로서비스 아키텍처의 필수 요소인 API 게이트웨이는 기업에서 점점 더 가치를 인정받고 있습니다. API 게이트웨이는 주로 외부 외관 역할을 하고 진입점을 제공하며 프로토콜 변환, 분산 로드 밸런싱, 보안 인증, API 관리와 같은 일련의 기능을 담당합니다. 많은 애플리케이션 시나리오에서 API 게이트웨이는 기술 수준에서 많은 문제를 해결할 뿐만 아니라 비즈니스 수준에서 신속한 반복 및 유연한 확장과 같은 이점을 얻습니다.

이 기사에서는 Kong을 사용하여 API 및 플러그인을 관리하고 Go 언어 및 Kong API를 사용하여 Kong 구성을 작동하는 등 Go 언어를 사용하여 Kong 기반 API 게이트웨이를 구축하는 방법을 소개합니다.

1. Kong 소개

Kong은 완벽한 API 관리 및 보안 기능을 제공하고 다양한 환경에서 실행될 수 있는 오픈 소스 API 게이트웨이입니다. 주로 로드 밸런싱, 서비스 검색, 라우팅, 인증, 권한 부여, 전류 제한, 모니터링 및 플러그인과 같은 관리 도구를 제공합니다. Kong은 Nginx를 프록시 서버로 사용하고 플러그인 메커니즘을 사용하여 HTTP 트래픽에 다양한 고급 기능을 추가합니다. Kong의 플러그인은 필요에 따라 활성화할 수 있으므로 Kong은 다양한 특정 비즈니스 시나리오와 요구 사항을 충족할 수 있어 매우 인기가 높습니다.

2. Kong을 사용하여 API 및 플러그인 관리

  1. Kong 설치

Kong 공식 웹사이트의 설치 가이드를 통해 다양한 설치 환경을 선택할 수 있습니다. 예를 들어 Ubuntu는 다음과 같습니다.

$ echo "deb https://kong.bintray.com/kong-deb `lsb_release -sc` main" | sudo tee -a /etc/apt/sources.list
$ curl -o bintray.key https://bintray.com/user/downloadSubjectPublicKey?username=bintray
$ sudo apt-key add bintray.key
$ sudo apt-get update && sudo apt-get install -y kong
로그인 후 복사

설치가 성공적으로 완료되면 Kong 구성 파일이 /etc/kong 디렉터리에 생성됩니다.

  1. Kong 시작
$ kong start
로그인 후 복사
  1. API 관리

Kong의 Admin API를 사용하여 API를 관리하세요.

$ curl -i -X POST 
  --url http://localhost:8001/apis/ 
  --data 'name=helloworld' 
  --data 'uris=/hello' 
  --data 'upstream_url=http://example.com/hello'
로그인 후 복사

위 예시에서는 Admin API를 통해 helloworld라는 API를 생성하고, 라우팅 URI는 /hello이고, 업스트림 서버 주소는 http://example.com/hello입니다. 이런 식으로 http://localhost에 접속하면 됩니다. :8000/hello , http://example.com/hello에 액세스할 수 있습니다.

  1. 플러그인 관리

Kong을 사용하면 플러그인을 쉽게 추가하여 API 기능을 더욱 향상시킬 수 있습니다.

$ curl -i -X POST 
  --url http://localhost:8001/apis/helloworld/plugins/ 
  --data 'name=key-auth'
로그인 후 복사

위의 예에서는 Admin API를 통해 helloworld API에 key-auth라는 플러그인을 추가합니다. 이 플러그인은 API Key 기반 인증에 사용됩니다.

3. Go 언어 및 Kong API를 사용하여 Kong 구성 운영

Admin API를 사용하여 API 및 플러그인을 관리하는 것 외에도 Kong에서 제공하는 RESTful API를 사용하여 보다 세밀한 제어를 수행할 수도 있습니다. Kong의 내부 데이터 모델을 사용하여 Admin API를 시작하는 것이 더 편리합니다.

여기에서는 Go 언어를 사용하고 이를 Kong Client SDK와 결합하여 Kong 구성을 작동하겠습니다.

  1. Kong 클라이언트 SDK 설치
$ go get github.com/Kong/go-kong/kong
로그인 후 복사
  1. Kong 구성 생성
conf := kong.Configuration{
  KongAdminURL: "http://localhost:8001", // Kong Admin接口地址
  KongURL: "http://localhost:8000", // Kong代理服务地址
}
로그인 후 복사
  1. API 및 경로 생성
api := &kong.Api{
  Name: kong.String("helloworld"),
  RequestHost: kong.String("example.com"),
  UpstreamURL: kong.String("http://example.com/hello"),
}

route := &kong.Route{
  Name: kong.String("hello-route"),
  Paths: kong.StringSlice([]string{"/hello"}),
  Methods: kong.StringSlice([]string{"GET"}),
}
로그인 후 복사

생성 후 다음 코드를 사용하여 연결할 수 있습니다.

service, err := kong.CreateServiceWithDefaults(conf, api) // 用默认配置创建Service
if err != nil {
  panic(err)
}

route, err = kong.CreateRouteWithDefaults(conf, route, service)
if err != nil {
  panic(err)
}
로그인 후 복사

이런 방식으로 이름은 helloworld, 경로 URI는 /hello, 업스트림 서버 주소는 http://example.com/hello, 경로는 GET 요청을 사용하여 액세스됩니다.

  1. 플러그인 추가

플러그인 추가도 매우 간단합니다. 여기서는 사용자 인증을 위한 토큰 기반 인증 플러그인을 추가합니다. 코드는 다음과 같습니다.

plugin := &kong.Plugin{
  Name: kong.String("jwt"),
  Config: kong.Configuration{
    "anonymous": "true",
  },
}
route.Plugins = []*kong.Plugin{plugin}

_, err = kong.UpdateRouteWithDefaults(conf, route, service)
if err != nil {
  panic(err)
}
로그인 후 복사

여기에서는 플러그인 이름을 jwt로 사용하므로 JWT 인증을 추가할 수 있습니다. 여기서는 익명 인증을 사용합니다.

요약

이 글에서는 Go 언어와 Kong Client SDK를 사용하여 API 게이트웨이를 구축하는 과정을 소개합니다. Kong을 사용하면 API 게이트웨이를 빠르게 구축하고, API 및 플러그인을 관리하고, 인증 및 전류 제한과 같은 기능을 구현할 수 있습니다. Kong은 Go 언어와 Kong Client SDK를 사용하여 추가로 제어하고 관리할 수 있습니다. 이러한 도구는 API 게이트웨이의 확장성과 관리를 향상시켜 마이크로서비스가 비즈니스에 더 나은 서비스를 제공할 수 있도록 해줍니다.

위 내용은 Go 언어를 사용하여 API 게이트웨이 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿