VK Cloud logo

Kgateway пайдалану

Kgateway аддонын Kubernetes кластеріндегі трафикті Gateway API арқылы бағыттау және сұрауларды тестілік қолданбаға жіберу үшін пайдаланыңыз.

Дайындық қадамдары

  1. Егер әлі жасалмаған болса, өзекті нұсқадағы кластерді жасаңыз.
  2. Егер әлі жасалмаған болса, kubectl утилитасын орнатып, баптаңыз.
  3. kubectl көмегімен кластерге қосылыңыз.
  4. Егер әлі жасалмаған болса, Kgateway аддонын орнатыңыз.

1. Тестілік қолданбаны жасаңыз

  1. httpbin тестілік қолданбасы үшін httpbin.yaml манифест файлын жасаңыз:

    apiVersion: v1kind: Namespacemetadata:  name: httpbin---apiVersion: v1kind: Servicemetadata:  name: httpbin  namespace: httpbinspec:  ports:    - port: 8000      targetPort: 8080  selector:    app: httpbin---apiVersion: apps/v1kind: Deploymentmetadata:  name: httpbin  namespace: httpbinspec:  replicas: 1  selector:    matchLabels:      app: httpbin  template:    metadata:      labels:        app: httpbin    spec:      containers:        - name: httpbin          image: docker.io/mccutchen/go-httpbin:v2.6.0          ports:            - containerPort: 8080
  2. Жасалған манифесті кластерде қолданыңыз:

    kubectl apply -f httpbin.yaml

Манифесті қолдану нәтижесінде httpbin тестілік қолданбасы Deployment түрінде іске қосылады, сондай-ақ осы қолданбаға ішкі қолжетімділік үшін сервис жасалады. Kgateway кейіннен сыртқы HTTP-трафикті қабылдап, оны бағыттап, осы сервиске қайта жібереді.

2. Gateway объектісін жасаңыз

  1. Gateway API түріндегі Gateway ресурсы үшін my-gateway.yaml манифест файлын жасаңыз:

    apiVersion: gateway.networking.k8s.io/v1kind: Gatewaymetadata:  name: http  namespace: httpbinspec:  gatewayClassName: kgateway  listeners:    - name: http      protocol: HTTP      port: 8080
  2. Жасалған манифесті кластерде қолданыңыз:

    kubectl apply -f my-gateway.yaml

Манифесті қолдану нәтижесінде Kgateway LoadBalancer түріндегі сервисті жасайды. VK Cloud трафикті қабылдау үшін стандартты жүктеме теңгергішін автоматты түрде жасап, оған жария Floating IP-мекенжайын тағайындайды.

3. HTTPRoute объектісін жасаңыз

  1. Kgateway үшін HTTP-трафикті бағыттау ережесін сипаттайтын Gateway API түріндегі HTTPRoute ресурсы үшін my-route.yaml манифест файлын жасаңыз:

    apiVersion: gateway.networking.k8s.io/v1kind: HTTPRoutemetadata:  name: httpbin  namespace: httpbinspec:  parentRefs:    - name: http  rules:    - backendRefs:        - name: httpbin          port: 8000
  2. Жасалған манифесті кластерде қолданыңыз:

    kubectl apply -f my-route.yaml

Манифесті қолдану нәтижесінде HTTP-сұраулар httpbin сервисіне жіберіледі.

4. Kgateway жұмысын тексеріңіз

  1. Жүктеме теңгергіші сыртқы IP-мекенжайын алғанша бірнеше минут күтіңіз және оны білу үшін келесі команданы орындаңыз:

    kubectl get svc -n httpbin

    Шығарылған кестеден осы теңгергіш үшін EXTERNAL-IP мәнін табыңыз:

    NAME     TYPE             ...     EXTERNAL-IP        PORT(S)            ...http     LoadBalancer     ...     100.70.151.108     8080:30000/TCP     ...
  2. Жүктеме теңгергішінің сыртқы IP-мекенжайына тестілік сұрау жіберіңіз:

    curl http://100.70.151.108:8080/get

    Сұрауға сәтті жауап Kgateway Gateway API ресурстарын дұрыс өңдеп, трафикті httpbin сервисіне бағыттайтынын білдіреді.

Пайдаланылмайтын ресурстарды жойыңыз

Жұмыс істеп тұрған кластер тарифтеледі және есептеу ресурстарын тұтынады. Егер Kgateway аддонының жұмысын тексеру үшін жасалған Kubernetes ресурстары енді қажет болмаса, оларды жойыңыз:

  1. httpbin атаулар кеңістігін және онымен байланысты ресурстарды, соның ішінде жасалған теңгергіш пен Floating IP-мекенжайын жойыңыз:

    kubectl delete namespace httpbin
  2. Тоқтатыңыз жасалған кластерді, оны кейінірек пайдалану үшін, немесе жойыңыз оны біржола.