API шлюз KONG на GKE

pic

KONG API шлюз на GKE

Всеосяжний посібник з налаштування кластера GKE за допомогою Terraform, встановлення Kong API Gateway та розгортання додатка з аутентифікацією OIDC.

Kong API широко використовується, оскільки він пропонує масштабоване та гнучке рішення для управління і забезпечення API. Ось кілька причин, чому люди вибирають Kong для керування своїми API:

Масштабованість: Kong розроблений для роботи з великими середовищами. Він здатний обробляти мільйони запитів за секунду, що робить його ідеальним для підприємств чи стартапів із швидко зростаючим трафіком.

Відкритий код і розширюваність: Kong є відкритим програмним забезпеченням, що означає, що ви можете використовувати його безкоштовно і налаштовувати під свої потреби. До того ж, у нього є багата екосистема плагінів, що дозволяє розширювати його функціональність для таких задач, як аутентифікація, лімітування запитів, ведення журналів і моніторинг.

API шлюз: Kong працює як API шлюз, надаючи єдину точку входу для ваших API-сервісів. Це допомагає з маршрутизацією, балансуванням навантаження та виявленням сервісів, спрощуючи архітектуру.

Безпека: Kong поставляється з вбудованими функціями безпеки, такими як аутентифікація, авторизація та шифрування.
Він підтримує OAuth2, JWT та інші стандарти безпеки, що дозволяє легко захистити ваші API.

Дружелюбність до мікросервісів: Якщо ви працюєте з мікросервісами, Kong є відмінним вибором, оскільки підтримує виявлення сервісів, динамічну маршрутизацію та безшовну інтеграцію з контейнеризованими додатками (наприклад, Docker, Kubernetes).

Моніторинг і аналітика: Kong має вбудовані можливості моніторингу та логування, а також інтегрується з інструментами третьої сторони, такими як Prometheus, Grafana і Datadog, для глибшого аналізу продуктивності API.

Мультихмарні та гібридні розгортання: Kong добре працює як у локальних, так і в хмарних середовищах, дозволяючи розгортати його в будь-якому місці, де знаходиться ваша інфраструктура.

Легкість у використанні: Хоча він потужний, інтерфейс Kong (особливо з Kong Manager і Kong CLI) є зручним, і вам легко почати використовувати базову функціональність.

Підтримка спільноти та підприємств: Існує велика та активна спільнота, а також можливість використовувати Kong Enterprise для додаткової підтримки та функцій, таких як просунута аналітика та корпоративний рівень безпеки.

Попередні вимоги:

  • Обліковий запис Google Cloud
  • Встановлений Terraform
  • Налаштований gcloud CLI
  • Встановлений Helm
  • Kubernetes CLI (kubectl)

Ключові кроки:

  • Замініть заповнювачі для ID проекту, деталей клієнта OIDC
  • Переконайтеся, що у вас встановлені Terraform, gcloud CLI і kubectl
  • Налаштуйте ваш постачальник ідентифікації (наприклад, Auth0, Keycloak, Google) для OIDC

Примітка: Вам потрібно буде налаштувати деталі вашого конкретного постачальника OIDC в конфігурації Kong.

# Налаштування постачальника  
provider "google" {  
 project = var.project_id  
 region = var.region  
}  

# Увімкнення необхідних API  
resource "google_project_service" "services" {  
 for_each = toset([  
 "container.googleapis.com",  
 "compute.googleapis.com",  
 "cloudresourcemanager.googleapis.com"  
 ])  
 service = each.key  
 disable_on_destroy = false  
}  

# Мережа VPC  
resource "google_compute_network" "vpc_network" {  
 name = "kong-network"  
 auto_create_subnetworks = false  
}  

resource "google_compute_subnetwork" "subnet" {  
 name = "kong-subnet"  
 ip_cidr_range = "10.0.0.0/24"  
 region = var.region  
 network = google_compute_network.vpc_network.id  
}  

# GKE Кластер  
resource "google_container_cluster" "primary" {  
 name = "kong-cluster"  
 location = var.region  

 network = google_compute_network.vpc_network.name  
 subnetwork = google_compute_subnetwork.subnet.name  

 remove_default_node_pool = true  
 initial_node_count = 1  

 workload_identity_config {  
 workload_pool = "${var.project_id}.svc.id.goog"  
 }  
}  

# Пул вузлів  
resource "google_container_node_pool" "primary_nodes" {  
 name = "kong-node-pool"  
 location = var.region  
 cluster = google_container_cluster.primary.name  
 node_count = 3  

 node_config {  
 machine_type = "e2-medium"  
 oauth_scopes = [  
 "https://www.googleapis.com/auth/cloud-platform"  
 ]  
 }  
}  

# Змінні  
variable "project_id" {  
 description = "GCP Project ID"  
 type = string  
}  

variable "region" {  
 description = "GCP Region"  
 type = string  
 default = "us-central1"  
}
# Значення Helm для Kong  
apiVersion: v1  
kind: Namespace  
metadata:  
 name: kong-system  

---  
apiVersion: helm.sh/v2  
kind: HelmRelease  
metadata:  
 name: kong  
 namespace: kong-system  
spec:  
 chart:  
 spec:  
 chart: kong  
 sourceRef:  
 kind: HelmRepository  
 name: kong  
 values:  
 env:  
 database: "off"  

 # Налаштування плагіна OIDC  
 plugins:  
 - name: oidc  
 config:  
 client_id: ${OIDC_CLIENT_ID}  
 client_secret: ${OIDC_CLIENT_SECRET}  
 discovery: https://your-identity-provider/.well-known/openid-configuration  
 introspection_endpoint: https://your-identity-provider/token/introspect  
 bearer_only: "yes"  

# Приклад розгортання додатка  
---  
apiVersion: apps/v1  
kind: Deployment  
metadata:  
 name: sample-app  
 namespace: default  
spec:  
 replicas: 2  
 selector:  
 matchLabels:

app: sample-app  
 template:  
 metadata:  
 labels:  
 app: sample-app  
 spec:  
 containers:  
 - name: sample-app  
 image: nginx:latest  
 ports:  
 - containerPort: 80  

## Kong Ingress з OIDC  
---  
apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  
 name: sample-app-ingress  
 annotations:  
 konghq.com/plugins: oidc  
spec:  
 rules:  
 - http:  
 paths:  
 - path: /  
 pathType: Prefix  
 backend:  
 service:  
 name: sample-app  
 port:  
 number: 80
apiVersion: v1  
kind: Service  
metadata:  
 name: sample-app-service  
 namespace: default  
 labels:  
 app: sample-app  
spec:  
 selector:  
 app: sample-app  
 ports:  
 - protocol: TCP  
 port: 80  
 targetPort: 80  
 type: ClusterIP
#!/bin/bash  

# Встановіть GCP Project та Region  
export PROJECT_ID="your-project-id"  
export REGION="us-central1"  

# Аутентифікація з GCP  
gcloud auth login  
gcloud config set project $PROJECT_ID  

# Увімкніть Terraform  
terraform init  
terraform apply  

# Налаштуйте kubectl  
gcloud container clusters get-credentials kong-cluster \  
 --region $REGION \  
 --project $PROJECT_ID  

# Встановіть Helm  
helm repo add kong https://charts.konghq.com  
helm repo update  

# Налаштуйте змінні середовища OIDC  
export OIDC_CLIENT_ID="your-client-id"  
export OIDC_CLIENT_SECRET="your-client-secret"  

# Розгорніть Kong та додаток  
kubectl apply -f kong-deployment.yaml  

# Перевірте розгортання  
kubectl get pods -n kong-system  
kubectl get ingress

Сподобалась стаття? Не соромтесь купити мені кави ☕ ваша підтримка дуже важлива!

pic

Перекладено з: KONG API gateway on GKE

Leave a Reply

Your email address will not be published. Required fields are marked *