Rumah >pembangunan bahagian belakang >Golang >Penjelasan terperinci tentang orkestrasi kontena dan penggunaan automatik rangka kerja Gin
Rangka kerja Gin ialah rangka kerja web ringan yang sesuai untuk pembangunan pesat API dan aplikasi web. Ia dicirikan oleh prestasi tinggi, kebolehskalaan mudah, dan banyak fungsi yang dilaksanakan melalui perisian tengah, seperti pengesahan, penghalaan, log permintaan, dsb. Dalam pembangunan sebenar, kami boleh menggunakan bekas Docker untuk mengurus aplikasi Gin dan mengerahkannya secara automatik menggunakan kluster Kubernetes.
1. Orkestrasi kontena Docker
Docker ialah teknologi kontena yang cekap dan ringan yang membolehkan kami menggunakan dan menjalankan aplikasi dengan pantas pada mana-mana platform. Kami boleh menggunakan Docker untuk membungkus aplikasi Gin dan menggunakan aplikasi tersebut pada pelayan tempatan atau awan. Langkah-langkah khusus adalah seperti berikut:
1 Tulis Fail Docker
Pertama, kita perlu menulis Fail Docker, yang menerangkan proses pembinaan bekas Docker. Dalam Dockerfile, kita perlu menentukan imej asas, memasang pakej bergantung, menyalin aplikasi ke bekas dan operasi lain. Berikut ialah contoh fail Docker yang mudah:
FROM golang:1.16-alpine WORKDIR /app COPY . . RUN go build -o main . EXPOSE 8080 CMD ["./main"]
Dalam Fail Docker ini, kami menggunakan imej rasmi Golang 1.16 sebagai imej asas, tetapkan direktori kerja ke /app, dan salin semua fail dalam direktori semasa ke Dalam direktori /apl bekas. Kami kemudian menjalankan arahan go build untuk menyusun aplikasi dan menamakannya sebagai utama. Akhirnya, kami mendedahkan port 8080 dalam bekas dan memulakan aplikasi melalui arahan CMD.
2. Bina imej Docker
Selepas menulis fail Docker, kita perlu menggunakan arahan binaan docker untuk membina imej Docker. Jalankan arahan berikut dalam terminal:
docker build -t gin-app:latest .
Arahan ini akan membina imej Docker bernama gin-app dalam direktori semasa dan label imej ini adalah terkini.
3. Jalankan bekas Docker
Selepas membina imej Docker, kita boleh menggunakan arahan docker run untuk menjalankan bekas. Sebelum menjalankan kontena, kita harus menentukan port mana yang ingin kita dedahkan aplikasinya. Dalam contoh ini, kami akan memetakan port kontena 8080 ke port hos tempatan 8080. Jalankan arahan berikut:
docker run -d -p 8080:8080 gin-app:latest
Arahan ini akan menjalankan bekas bernama gin-app di latar belakang dan memetakan port 8080 dalam bekas ke port 8080 pada hos. Pada langkah ini, aplikasi Gin seharusnya sudah boleh diakses pada localhost melalui port 8080.
2. Penggunaan automatik Kubernetes
Kubernetes ialah sistem orkestrasi kontena yang boleh membantu kami menggunakan, mengembangkan dan mengurus aplikasi secara automatik. Dalam Kubernetes, kami boleh mentakrifkan penggunaan dan perkhidmatan aplikasi melalui fail yaml. Langkah-langkah khusus adalah seperti berikut:
1 Tulis fail Deployment
Deployment ialah konsep teras yang digunakan oleh Kubernetes untuk menggunakan dan mengemas kini aplikasi. Dalam Deployment, kami mentakrifkan atribut seperti bilangan salinan aplikasi, imej bekas, pembolehubah persekitaran dan volum yang dipasang. Berikut ialah contoh Deployment yang mudah:
apiVersion: apps/v1 kind: Deployment metadata: name: gin-app-deployment spec: replicas: 2 selector: matchLabels: app: gin-app template: metadata: labels: app: gin-app spec: containers: - name: gin-app image: gin-app:latest ports: - containerPort: 8080
Dalam contoh ini, kami mentakrifkan objek Deployment bernama gin-app-deployment dan menentukan bilangan replika aplikasi menjadi 2. Pemilih digunakan untuk memilih Pod untuk digunakan Di sini kami memilih Pod dengan label app=gin-app. Dalam templat Pod, kami mentakrifkan bekas bernama gin-app, mengaitkannya dengan imej Docker yang dibina sebelum ini gin-app:latest, dan menentukan bahawa port dalam bekas yang terdedah kepada bekas lain ialah 8080.
2. Tulis fail Perkhidmatan
Perkhidmatan ialah objek yang digunakan dalam Kubernetes untuk menyediakan perkhidmatan pengimbangan beban Ia boleh menghalakan permintaan dalam kelompok ke Pod yang betul. Berikut ialah contoh Perkhidmatan mudah:
apiVersion: v1 kind: Service metadata: name: gin-app-service spec: selector: app: gin-app ports: - name: http port: 80 targetPort: 8080 type: LoadBalancer
Dalam contoh ini, kami mentakrifkan objek Perkhidmatan bernama gin-app-service dan menentukan Pod dengan label app=gin-app sebagai hujung belakang , port bagi perkhidmatan ialah 80, dan permintaan dimajukan ke port 8080 kontena. Pilihan jenis menentukan jenis Perkhidmatan sebagai LoadBalancer, jadi Kubernetes akan mencipta pengimbang beban luaran untuk Perkhidmatan ini supaya kami boleh mengakses perkhidmatan ini dari luar.
3. Penggunaan aplikasi
Selepas menulis fail Deployment dan Service, kami boleh menggunakan perintah kubectl untuk menggunakan mereka ke gugusan Kubernetes. Laksanakan arahan berikut dalam terminal:
kubectl create -f gin-app-deployment.yaml kubectl create -f gin-app-service.yaml
Kedua-dua arahan ini akan mencipta dua objek Kubernetes gin-app-deployment dan gin-app-service masing-masing dan menggunakan mereka ke gugusan Kubernetes. Selepas penempatan selesai, kita boleh menggunakan perintah kubectl get untuk melihat statusnya:
kubectl get deployments kubectl get services
Dalam output kedua-dua arahan ini, kita sepatutnya dapat melihat objek Deployment dan Service yang kami buat dan melihat setiap mereka Bilangan salinan, alamat IP, nombor port dan maklumat lain.
3. Ringkasan
Melalui orkestrasi kontena Docker yang dinyatakan di atas dan penggunaan automatik Kubernetes, kami boleh menggunakan aplikasi Gin dengan cepat dalam sebarang persekitaran. Pendekatan ini boleh meningkatkan kecekapan pembangunan dan mengurangkan beban kerja penempatan dan penyelenggaraan. Pada masa yang sama, ciri ketersediaan dan skalabiliti tinggi Kubernetes juga membolehkan kami mengembangkan skala aplikasi dengan mudah untuk memenuhi keperluan perniagaan yang berubah-ubah.
Atas ialah kandungan terperinci Penjelasan terperinci tentang orkestrasi kontena dan penggunaan automatik rangka kerja Gin. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!