Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Melaksanakan jaringan perkhidmatan dalam Beego menggunakan Kubernetes dan Istio

Melaksanakan jaringan perkhidmatan dalam Beego menggunakan Kubernetes dan Istio

王林
王林asal
2023-06-22 10:20:16706semak imbas

Dalam beberapa tahun kebelakangan ini, Kubernetes dan Istio telah menjadi dua alat yang sangat diperlukan dalam perjalanan ke aplikasi asli awan. Kubernetes ialah alat orkestrasi kontena yang membantu pengguna menggunakan secara automatik, mengembangkan dan mengurus aplikasi kontena, manakala Istio ialah rangkaian perkhidmatan yang membolehkan pengguna mengurus dan memantau seni bina perkhidmatan mikro dengan lebih baik. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan mesh perkhidmatan menggunakan Kubernetes dan Istio dalam rangka kerja Beego.

Pertama, kami perlu menggunakan aplikasi Beego kami pada Kubernetes. Untuk kemudahan, kami menggunakan Minikube untuk menjalankan gugusan Kubernetes tempatan. Selepas memasang Minikube dan klien Kubernetes, kami boleh memulakan kluster menggunakan arahan berikut:

minikube start

Kemudian, kami perlu mencipta kerahan Kubernetes untuk menggunakan aplikasi Beego kami. Kami boleh mentakrifkan penggunaan kami menggunakan fail YAML berikut:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: beego-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: beego-app
  template:
    metadata:
      labels:
        app: beego-app
    spec:
      containers:
      - name: beego-app
        image: my-beego-app-image
        ports:
        - containerPort: 8080

Dalam fail YAML ini, kami mentakrifkan penggunaan yang dipanggil "beego-app" untuk menjalankan aplikasi Beego kami, yang akan Berjalan dalam bekas dan mendedahkan perkhidmatan pada port 8080.

Seterusnya, kami perlu mencipta perkhidmatan Kubernetes untuk mengakses aplikasi Beego kami dari luar gugusan Kubernetes. Kami boleh mentakrifkan perkhidmatan kami menggunakan fail YAML berikut:

apiVersion: v1
kind: Service
metadata:
  name: beego-app-service
spec:
  selector:
    app: beego-app
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 8080
  type: NodePort

Dalam fail YAML ini kami mentakrifkan perkhidmatan yang dipanggil "beego-app-service" yang akan menghala ke penempatan Beego kami dan akan Port 80 memetakan ke port kontena 8080 . Selain itu, kami menetapkan jenis perkhidmatan sebagai NodePort, yang bermaksud Kubernetes akan menetapkan IP nod dan port nod untuk mengakses perkhidmatan.

Kini kami boleh membuat penempatan dan perkhidmatan dengan menggunakan arahan berikut:

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

Selepas langkah ini, aplikasi Beego kami kini boleh diakses di luar kelompok Kubernetes. Walau bagaimanapun, kami juga perlu melaksanakan penemuan perkhidmatan dan pengimbangan beban dalam kelompok.

Di sinilah Istio berperanan. Menggunakan Istio, kami boleh melaksanakan komunikasi dan pengimbangan beban antara perkhidmatan dalaman dengan mudah. Selepas memasang Istio dalam gugusan Kubernetes, kami boleh mendayakan suntikan auto Istio menggunakan arahan berikut:

kubectl label namespace default istio-injection=enabled

Kemudian, kami boleh menggunakan fail YAML berikut untuk menentukan perkhidmatan maya Istio untuk menghalakan permintaan HTTP ke aplikasi Beego kami :

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: beego-app-virtual-service
spec:
  hosts:
  - "*"
  gateways:
  - istio-system/ingressgateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: beego-app-service.default.svc.cluster.local
        port:
          number: 80

Dalam fail YAML ini, kami mentakrifkan perkhidmatan maya yang dipanggil "beego-app-virtual-service" yang mengarahkan permintaan HTTP ke perkhidmatan "beego-app-service" yang kami buat sebelum ini dan memetakannya ke pelabuhan 80.

Dengan perkhidmatan maya didayakan, kami kini boleh mengakses aplikasi Beego kami dari dalam kelompok. Walau bagaimanapun, untuk mengurus rangkaian perkhidmatan kami dengan lebih baik, kami juga boleh menggunakan keupayaan pemantauan dan pengesanan Istio. Sebagai contoh, kami boleh menggunakan fail YAML berikut untuk mentakrifkan Istio DestinationRule yang membolehkan penjejakan dan metrik untuk semua trafik masuk dan keluar:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: beego-app-destination-rule
spec:
  host: beego-app-service.default.svc.cluster.local
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
    portLevelSettings:
    - port:
        number: 80
      tls:
        mode: ISTIO_MUTUAL
    connectionPool:
      http:
        http1MaxPendingRequests: 100
        maxRequestsPerConnection: 5
      tcp:
        maxConnections: 1000
    outlierDetection:
      consecutiveErrors: 5
      interval: 5s
      baseEjectionTime: 30s
      maxEjectionPercent: 50

Dalam fail YAML ini, kami mentakrifkan Istio DestinationRule yang dipanggil "beego- app- destination-rule" DestinationRule, digunakan untuk menentukan kawalan trafik Istio dan strategi pengesanan ralat.

Menggunakan Kubernetes dan Istio untuk melaksanakan jaringan perkhidmatan membolehkan kami mengurus dan memantau seni bina perkhidmatan mikro kami dengan lebih baik. Dalam siaran ini, kami membincangkan cara untuk menggunakan dan mengurus aplikasi kami menggunakan Kubernetes dan Istio dalam rangka kerja Beego.

Atas ialah kandungan terperinci Melaksanakan jaringan perkhidmatan dalam Beego menggunakan Kubernetes dan Istio. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn