Okteto CLI يك پروژه منبع باز است كه تجربه توسعه محلي را براي برنامه هاي در حال اجرا در Kubernetes فراهم مي كند. با استفاده از آن مي توانيد كد خود را بر روي IDE محلي خود بنويسيد و به محض ذخيره يك فايل ، تغييرات را مي توان به خوشه Kubernetes خود وارد كرد و برنامه شما فوراً بروزرساني خواهد شد. كل اين فرآيند بدون نياز به ساخت تصاوير Docker يا اعمال مانيفست هاي Kubernetes اتفاق مي افتد ، كه مي تواند زمان قابل توجهي طول بكشد.
در اين آموزش ، شما از Okteto براي بهبود بهره وري در هنگام تهيه يك برنامه بومي Kubernetes استفاده خواهيد كرد. ابتدا ، يك خوشه Kubernetes ايجاد مي كنيد و از آن براي اجراي يك برنامه استاندارد “Hello World” استفاده مي كنيد. سپس از Okteto براي توسعه و به روز كردن خودكار برنامه خود بدون نياز به نصب محلي استفاده خواهيد كرد.
پيش نيازها
قبل از شروع اين آموزش ، موارد زير را نياز خواهيد داشت:
⦁ خوشه Kubernetes 1.12+ . در اين آموزش ، از يك خوشه vpsgol Kubernetes با سه گره استفاده مي شود ، اما شما مي توانيد با استفاده از يك روش ديگر ، خوشه ايجاد كنيد.
⦁ kubectl و doctl براي برقراري ارتباط با خوشه شما نصب و تنظيم شده باشند.
⦁ يك حساب كاربري Docker Hub
⦁ Docker در حال اجرا بر روي دستگاه محلي شما.
مرحله 1 – ايجاد برنامه Hello World
برنامه “hello world” يك سنت قديمي در توسعه وب است. در اين حالت ، يك سرويس وب ساده است كه به هر درخواست با ” hello world” پاسخ مي دهد. اكنون كه خوشه Kubernetes خود را ايجاد كرده ايد ، اجازه دهيد يك برنامه “Hello World” را در Golang و مانيفيستي كه براي استقرار آن در Kubernetes استفاده خواهيد كرد ، ايجاد كنيم.
اولين به دايركتوري هوم خود سوييچ كنيد:
⦁ $ cd ~

اكنون يك دايركتوري جديد به نام hello_world تهيه كرده و به داخل آن برويد:
⦁ $ mkdir hello_world

⦁ $ cd hello_world

با IDE يا ويرايشگر متن مورد علاقه خود ، فايل جديدي را با نام main.go ايجاد و باز كنيد:
⦁ $ nano main.go

main.go يك وب سرور مجازي Golang خواهد بود كه پيام hello world را به شما باز مي گرداند !. بنابراين ، اجازه دهيد از كد زير استفاده كنيم:
main.go
package main

import (
“fmt”
“net/http”
)

func main() {
fmt.Println(“Starting hello-world server…”)
http.HandleFunc(“/”, helloServer)
if err := http.ListenAndServe(“:8080”, nil); err != nil {
panic(err)
}
}

func helloServer(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, “Hello world!”)
}

كد main.go موارد زير را انجام مي دهد:
⦁ اولين عبارت در يك فايل منبع Go بايد نام بسته باشد. دستورات اجرايي هميشه بايد از package main استفاده كنند.
⦁ بخش ورودي نشان مي دهد كد بسته به چه مواردي بستگي دارد. در اين حالت از fmt براي دستكاري رشته و net / http براي سرور مجازي HTTP استفاده مي كند.
⦁ تابع main نقطه ورود به باينري شماست. از روش http.HandleFunc براي پيكربندي سرور مجازي جهت فراخواني helloServer در هنگام دريافت درخواست به مسير / استفاده مي شود. http.ListenAndServe يك سرور مجازي HTTP را شروع مي كند كه در تمام رابط هاي شبكه به پورت 8080 گوش مي دهد.
⦁ عملكرد helloServer شامل منطق كنترل كننده درخواست شما است. در اين حالت ، hello world! را به عنوان پاسخ به درخواست خواهد نوشت.
شما بايد يك تصوير Docker ايجاد كرده و آن را به سمت رجيستري Docker خود هدايت كنيد تا Kubernetes بتواند آن را دريافت و سپس برنامه را اجرا كند.
يك فايل جديد با نام Dockerfile را با IDE يا ويرايشگر متن مورد علاقه خود باز كنيد:
⦁ $ nano Dockerfile

Dockerfile شامل دستورات لازم براي ساخت كانتينر Docker برنامه شما مي باشد. اجازه دهيد از كد زير استفاده كنيم:
Dockerfile
FROM golang:alpine as builder
RUN apk –update –no-cache add bash
WORKDIR /app
ADD . .
RUN go build -o app

FROM alpine as prod
WORKDIR /app
COPY –from=builder /app/app /app/app
EXPOSE 8080
CMD [“./app”]
Copy

Dockerfile شامل دو مرحله است builder و  prod:
• مرحله builder  شامل ابزارهاي ساخت Go است. كه مسئول كپي كردن فايل ها و ساخت باينري Go است.
• مرحله prod تصوير نهايي است. فقط شامل يك سيستم تهي و باينري برنامه خواهد بود.
اين يك تمرين خوب ميباشد. كانتينر توليد شما را كوچكتر و ايمن تر مي كند زيرا تنها شامل برنامه شما و دقيقاً آنچه براي اجراي آن لازم است مي باشد.
تصوير كانتينر را بسازيد (نام_DockerHub_usus را با نام كاربري داكر هاب خود جايگزين كنيد):
⦁ $ docker build -t your_DockerHub_username/hello-world:latest

اكنون آن را به Docker Hub وارد كنيد:
⦁ $ docker push your_DockerHub_username/hello-world:latest

سپس ، يك پوشه جديد براي مانيفست Kubernetes ايجاد كنيد:
⦁ $ mkdir k8s

وقتي از مانيفست Kubernetes استفاده مي كنيد ، به Kubernetes مي گوييد كه چگونه برنامه شما اجرا مي شود. اين بار ، يك شيء استقرار ايجاد مي كنيد. بنابراين ، يك فايل جديد deployment.yaml را با IDE يا ويرايشگر متن مورد علاقه خود ايجاد كنيد:
⦁ $ nano k8s/deployment.yaml

مطالب زير يك شيء استقرار Kubernetes را شرح مي دهد كه تصوير داكر okteto/hello-world:latest را اجرا ميكند. اين محتوا را به فايل جديد خود اضافه كنيد ، اما در مورد شما okteto ذكر شده بعد از برچسب image را با your_DockerHub_username جايگزين كنيد:
~/hello_world/k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
selector:
matchLabels:
app: hello-world
replicas: 1
template:
metadata:
labels:
app: hello-world
spec:
containers:
– name: hello-world
image: your_DockerHub_username/hello-world:latest
ports:
– containerPort: 8080

مانيفست استقرار داراي سه بخش اصلي است:
⦁ metadata  نام استقرار شما را مشخص مي كند.
⦁ replicas  مشخص مي كند كه چند نسخه از آن را مي خواهيد اجرا كنيد.
⦁ template  به Kubernetes مي گويد كه چه چيزي را مستقر كند و چه برچسب هايي را اضافه نمايد. در اين حالت ، يك كانتينر واحد ، با تصوير okteto/hello-world:latest ، كه به پورت 8080 گوش ميدهد، و با برچسب app: hello-world همراه است. توجه داشته باشيد كه اين برچسب همان مورد استفاده در بخش selector  است.
اكنون به راهي براي دسترسي به برنامه خود نياز داريد. مي توانيد با ايجاد يك شيء سرويس ، برنامه اي را در Kubernetes قرار دهيد. بياييد با استفاده از مانيفست اين كار را انجام دهيم. با IDE يا ويرايشگر متن مورد علاقه خود فايل جديدي به نام service.yaml ايجاد كنيد:
⦁ nano k8s/service.yaml

محتواي زير سرويس هايي را نشان مي دهد كه شيء استقرار hello world را در معرض ديد شما قرار مي دهد:
k8s/service.yaml
apiVersion: v1
kind: Service
metadata:
name: hello-world
spec:
type: LoadBalancer
ports:
– protocol: TCP
port: 80
targetPort: 8080
name: http
selector:
app: hello-world

مانيفست سرويس چهار بخش اصلي دارد:
⦁ metadata  به Kubernetes مي گويد كه چگونه سرويس خود را نامگذاري كنند.
⦁ type  به Kubernetes مي گويد چگونه مي خواهيد سرويس خود را در معرض ديد قرار دهيد.
⦁ برچسب ports  به Kubernetes مي گويد كه كدام پورت را مي خواهيد در معرض ديد قرار دهيد ، و چگونه مي توانيد آنها را براي استقرار خود نگاشت كنيد. در اين حالت ، پورت 80 را به صورت خارجي در معرض ديد قرار مي دهيد و آن را به پورت 8080 در محل استقرار خود هدايت مي كنيد.
⦁ selector  به Kubernetes مي گويد كه چگونه ترافيك را هدايت كند. در اين حالت ، هر پوسته با برچسب app: hello-world ترافيك دريافت مي كند.
اكنون شما همه چيز را براي استقرار برنامه “hello world” خود در Kubernetes داريد. در ادامه كار استقرار را انجام خواهيم داد.
مرحله 2 – استفاده از برنامه Hello World شما
در اين مرحله برنامه “Hello World” خود را در Kubernetes مستقر مي كنيد ، سپس تأييد مي كنيد كه درست كار مي كند.
با استقرار برنامه خود در Kubernetes كار را شروع كنيد:
⦁ $ kubectl apply -f k8s

خروجي زير را مشاهده خواهيد كرد:
Output
deployment.apps “hello-world” created
service “hello-world” created

بعد از گذشت حدود يك دقيقه يا بيشتر ، مي توانيد IP برنامه خود را بازيابي كنيد. براي بررسي سرويس خود از اين دستور kubectl استفاده كنيد:
⦁ $ kubectl get service hello-world

خروجي مانند اين را مشاهده خواهيد كرد كه اشياء سرويس Kubernetes را ليست ميكند. به IP برنامه خود در ستون EXTERNAL-IP توجه كنيد:
Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-world ClusterIP your_cluster_ip your_external_ip 8080/TCP 37s

مرورگر خود را باز كنيد و به برنامه your_external_ip كه براي برنامه “Hello World” ذكر شده است برويد. قبل از ادامه مرحله بعدي تأييد كنيد كه برنامه شما در حال اجرا است.

تا اين لحظه ، شما يك مسير نسبتاً سنتي را براي توسعه برنامه ها با Kubernetes دنبال كرده ايد. در ادامه ، هر زمان كه مي خواهيد كد را در برنامه خود تغيير دهيد ، بايد يك تصوير جديد Docker بسازيد و وارد كنيد و سپس آن تصوير را از Kubernetes بيرون بكشيد. اين روند مي تواند مدتي طول بكشد. Okteto براي ساده تر ساختن اين حلقه دروني طراحي شده است. بياييد به Okteto CLI نگاهي بيندازيم و ببينيم چگونه مي تواند كمك كند.
مرحله 3 – نصب Okteto CLI
اكنون با نصب Okteto CLI ، بهره وري توسعه Kubernetes را بهبود مي بخشيد. رابط خط فرمان Okteto يك پروژه منبع باز است كه به شما امكان مي دهد تغييرات كد برنامه را با برنامه هاي Kubernetes همزمان كنيد. شما مي توانيد با استفاده از IDE ، اشكال زداگر يا كامپايلرهاي مورد علاقه خود استفاده كنيد بدون اينكه براي تست برنامه خود مجبور به تعهد ، ساخت ، ارائه يا استقرار مجدد كانتينرها باشيد – همانطور كه در مراحل قبلي انجام داديد.
براي نصب Okteto CLI در دستگاه macOS يا Linux ، دستور زير را اجرا كنيد:
⦁ $ curl https://get.okteto.com -sSfL | sh

بياييد نگاهي دقيق تر به اين دستور بياندازيم:
⦁ از دستور curl براي انتقال داده به سرور مجازي استفاده مي شود.
⦁ پرچم -s هر خروجي را سركوب مي كند.
⦁ پرچم -S خطاها را نشان مي دهد.
⦁ پرچم -f باعث عدم موفقيت درخواست در HTTP مي شود.
⦁ پرچم -L باعث مي شود درخواست از تغيير مسير پيروي كند.
⦁ عملگر | اين خروجي را به دستور sh پايپ مي كند ، كه آخرين باينري okteto را در دستگاه محلي شما دانلود و نصب مي كند.
اگر ويندوز را اجرا مي كنيد ، مي توانيد فايل را بطور متناوب از طريق مرورگر وب خود دانلود كرده و به صورت دستي آن را به PATH $ خود اضافه كنيد.
پس از نصب Okteto CLI ، آماده هستيد تا برنامه “hello world” را در حالت توسعه قرار دهيد.
مرحله 4 – قرار دادن برنامه Hello world در حالت توسعه
Okteto CLI به منظور جابجايي برنامه در حال اجرا بر روي خوشه Kubernetes با كد موجود در دستگاه شما طراحي شده است. براي اين كار ، Okteto از اطلاعات ارائه شده از يك فايل مانيفست Okteto استفاده مي كند. اين فايل شيء استقرار Kubernetes را كه با كد محلي شما تعويض مي شود ، اعلام مي كند.
با IDE يا ويرايشگر متن مورد علاقه خود فايل جديدي به نام okteto.yaml ايجاد كنيد:
⦁ $ nano okteto.yaml

بياييد يك مانيفست پايه بنويسيم كه در آن مي توانيد نام شيء استقرار ، تصوير پايه Docker براي استفاده و يك پوسته را تعريف كنيد. بعداً به اين اطلاعات برمي گرديم. از فايل محتواي نمونه زير استفاده كنيد:
okteto.yaml
name: hello-world
image: okteto/golang:1
workdir: /app
command: [“bash”]

با اجراي دستور زير آماده شويد تا برنامه خود را در حالت توسعه قرار دهيد:
⦁ $ okteto up

Output
✓ Development environment activated
✓ Files synchronized
Namespace: default
Name: hello-world

Welcome to your development environment. Happy coding!
default:hello-world /app>

دستور okteto up برنامه “hello world” را در يك محيط توسعه عوض مي كند ، اين بدان معني است كه:
⦁ كانتينر برنامه Hello World با تصويرداكر okteto/golang:1 به روز مي شود. اين تصوير شامل ابزارهاي لازم براي ساخت ، آزمايش ، اشكال زدايي و اجراي برنامه “Hello World” است.
⦁ يك سرويس همگام سازي فايل ايجاد شده است تا تغييرات شما بين سيستم فايل محلي و غلاف برنامه تان را به روز نگه دارد.
⦁ يك پوسته از راه دور در محيط توسعه شما شروع مي شود. اكنون مي توانيد برنامه خود را بگونه اي كه در دستگاه محلي خود هستيد ، بسازيد ، آزمايش و اجرا كنيد.
⦁ هر پردازشي كه در پوسته از راه دور اجرا مي كنيد ، همان ترافيك ورودي ، همان متغيرهاي محيط ، واليوم يا رمزها را به عنوان غلافهاي اصلي برنامه “Hello World” دريافت خواهد كرد. اين به نوبه خود ، يك محيط توسعه كاملاً واقع بينانه و شبيه توليد را به شما مي دهد.
در همان كنسول ، اكنون برنامه را طبق معمول اجرا كنيد (بدون ساختن و ارائه تصوير Docker) ، مانند اين:
⦁ Okteto> go run main.go

Output
Starting hello-world server…

اولين باري كه برنامه را اجرا مي كنيد ، Go متعلقات شما را دانلود و برنامه را كامپايل مي كند. صبر كنيد تا اين فرآيند كامل شود و با باز كردن مرورگر و ريفرش صفحه برنامه خود ، دقيقاً مانند گذشته ، برنامه خود را تست كنيد.
اكنون آماده هستيد تا توسعه را مستقيماً روي Kubernetes شروع كنيد.
مرحله 5 – توسعه مستقيم روي Kubernetes
بياييد شروع به ايجاد تغييراتي در برنامه “hello world” كنيم و سپس ببينيم كه چگونه در Kubernetes بازتاب مي يابند.
فايل main.go را با IDE يا ويرايشگر متن مورد علاقه خود باز كنيد. به عنوان مثال ، يك كنسول جداگانه باز كنيد و دستور زير را اجرا كنيد:
⦁ $ nano main.go

سپس ، پيام پاسخ خود را به Hello world from vpsgol! تغيير دهيد!:
main.go
package main

import (
“fmt”
“net/http”
)

func main() {
fmt.Println(“Starting hello-world server…”)
http.HandleFunc(“/”, helloServer)
if err := http.ListenAndServe(“:8080”, nil); err != nil {
panic(err)
}
}

func helloServer(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, “Hello world from vpsgol!”)
}

اينجاست كه گردش كار شما تغيير مي كند. Okteto به جاي ساختن تصاوير و استفاده مجدد از كانتينر براي به روزرساني برنامه “hello world” ، تغييرات شما را در محيط توسعه خود در Kubernetes همگام سازي مي كند.
از كنسولي كه فرمان okteto up را اجرا كرديد ، با فشار دادن CTRL + C، اجراي go run main.go را لغو كنيد. اكنون برنامه را دوباره اجرا كنيد:
⦁ Okteto> default:hello-world /app> go run main.go

Output
Starting hello-world server…

به مرورگر برگرديد و صفحه برنامه “Hello World” خود را مجدد لود كنيد.

تغييرات كد شما بلافاصله و همه بدون نياز به تعهد ، ايجاد يا ارائه در Kubernetes اعمال شد .
نتيجه
Okteto با كليك روي يك دكمه ، خوشه Kubernetes را به يك پلت فرم توسعه كاملاً برجسته تبديل مي كند. در اين آموزش شما Okteto CLI را نصب و پيكربندي كرده ايد تا كدهاي خود را مستقيماً بر روي Kubernetes تغيير دهيد تا بتوانيد كد را سريعاً تايپ كنيد. اكنون مي توانيد به مخزن نمونه Okteto برويد تا نحوه استفاده از Okteto با زبان هاي مختلف برنامه نويسي و اشكال زدايي را ببينيد.
همچنين ، اگر يك خوشه Kubernetes را با تيم خود به اشتراك مي گذاريد ، ميتوانيد به هر يك از اعضا يك فضاي نام Kubernetes ارائه دهيد كه به گونه اي پيكربندي شده كه از ساير توسعه دهندگان كه بر روي همان خوشه كار ميكنند، جدا باشد. اين قابليت عالي توسط اپليكيشن Okteto در بازار Kubernetes vpsgol نيز ارائه شده است.

 

از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :

 

چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهيد

نحوه ايجاد نماها (Views) براي توسعه وب Django

نصب Mount NFS در اوبونتو 20.04

نحوه توسعه برنامه ها در Kubernetes با Okteto

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

نحوه تنظيم Jupyter Notebook با پايتون در Ubuntu 20.04

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

 

كلمات كليدي خريد سرور

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان