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!