1. আপনি শুরু করার আগে
Kubernetes হল একটি ওপেন সোর্স প্রজেক্ট, যা ল্যাপটপ থেকে শুরু করে উচ্চ-উপলভ্যতা মাল্টি-নোড ক্লাস্টার, পাবলিক ক্লাউড থেকে অন-প্রিমিস ডিপ্লোয়মেন্ট এবং ভার্চুয়াল মেশিন (VM) উদাহরণ থেকে বেয়ার মেটাল পর্যন্ত বিভিন্ন পরিবেশে চলতে পারে।
এই কোডল্যাবে, আপনি একটি সাধারণ স্প্রিং বুট জাভা ওয়েব অ্যাপ GKE- তে Kubernetes-এ স্থাপন করবেন, যার লক্ষ্য হল আপনার ওয়েব অ্যাপটিকে Kubernetes-এ একটি প্রতিলিপিকৃত অ্যাপ হিসেবে চালানো। আপনি আপনার মেশিনে বিকাশ করা কোডটি নেবেন, এটিকে একটি ডকার কন্টেইনার ইমেজে পরিণত করবেন এবং GKE-তে ছবিটি চালান।
আপনি অন্তর্নিহিত অবকাঠামো সেট আপ করার পরিবর্তে কুবারনেটের অভিজ্ঞতার উপর আরও বেশি ফোকাস করার অনুমতি দিতে আপনি Google ক্লাউডে একটি সম্পূর্ণরূপে পরিচালিত Kubernetes পরিষেবা GKE ব্যবহার করবেন।
আপনি যদি আপনার স্থানীয় মেশিনে কুবারনেটস চালাতে আগ্রহী হন, যেমন একটি ডেভেলপমেন্ট ল্যাপটপ, তাহলে Minikube দেখুন, যা বিকাশ এবং পরীক্ষার উদ্দেশ্যে একটি একক-নোড কুবারনেটস ক্লাস্টারের একটি সাধারণ সেটআপ অফার করে। আপনি চাইলে কোডল্যাবের মাধ্যমে যেতে Minikube ব্যবহার করতে পারেন।
কোডল্যাব স্প্রিং বুট দিয়ে একটি অ্যাপ তৈরি করার নির্দেশিকা থেকে নমুনা কোড ব্যবহার করবে।
পূর্বশর্ত
- জাভা প্রোগ্রামিং ভাষা এবং সরঞ্জামগুলির সাথে পরিচিতি
- স্ট্যান্ডার্ড লিনাক্স টেক্সট এডিটর, যেমন Vim, Emacs এবং ন্যানো সম্পর্কে জ্ঞান
আপনি কি করবেন
- ডকার কন্টেইনার হিসাবে একটি সাধারণ জাভা অ্যাপ প্যাকেজ করুন।
- GKE-তে আপনার Kubernetes ক্লাস্টার তৈরি করুন।
- আপনার জাভা অ্যাপটি GKE-তে Kubernetes-এ স্থাপন করুন।
- আপনার পরিষেবা স্কেল করুন এবং একটি আপগ্রেড রোল আউট করুন৷
- অ্যাক্সেস ড্যাশবোর্ড, একটি ওয়েব-ভিত্তিক Kubernetes ব্যবহারকারী ইন্টারফেস।
আপনি কি প্রয়োজন হবে
- একটি Google ক্লাউড প্রকল্প
- একটি ব্রাউজার, যেমন গুগল ক্রোম
2. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
- প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
- প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত
PROJECT_ID
হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে। - আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
ক্লাউড শেল সক্রিয় করুন
- ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন .
যদি এটি আপনার প্রথমবার ক্লাউড শেল শুরু হয়, তাহলে এটি কী তা বর্ণনা করে আপনাকে একটি মধ্যবর্তী স্ক্রীন উপস্থাপন করা হবে। যদি আপনি একটি মধ্যবর্তী স্ক্রীনের সাথে উপস্থাপিত হন, তবে চালিয়ে যান ক্লিক করুন।
ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷
এই ভার্চুয়াল মেশিনটি প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জাম দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5 GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, ব্রাউজার দিয়ে করা যেতে পারে।
একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি প্রমাণীকৃত হয়েছেন এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে।
- আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
কমান্ড আউটপুট
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project
কমান্ড আউটপুট
[core] project = <PROJECT_ID>
যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:
gcloud config set project <PROJECT_ID>
কমান্ড আউটপুট
Updated property [core/project].
3. সোর্স কোড পান
ক্লাউড শেল চালু হওয়ার পরে, আপনি হোম ডিরেক্টরিতে উদাহরণ সোর্স কোড ক্লোন করতে কমান্ড লাইন ব্যবহার করতে পারেন।
$ git clone https://github.com/spring-guides/gs-spring-boot.git $ cd gs-spring-boot/complete
4. স্থানীয়ভাবে অ্যাপটি চালান
- নিশ্চিত করুন যে JAVA_HOME সঠিক সংস্করণে সেট করা আছে:
$ export JAVA_HOME=/usr/lib/jvm/java-1.17.0-openjdk-amd64
- আপনি স্প্রিং বুট প্লাগইন দিয়ে সাধারণত স্প্রিং বুট অ্যাপ শুরু করতে পারেন।
$ ./mvnw -DskipTests spring-boot:run
- অ্যাপটি শুরু হওয়ার পরে, ওয়েব প্রিভিউতে ক্লিক করুন ক্লাউড শেল টুলবারে এবং পোর্ট 8080-এ পূর্বরূপ নির্বাচন করুন।
আপনার ব্রাউজারে একটি ট্যাব খোলে এবং আপনি যে সার্ভারটি শুরু করেছেন তার সাথে সংযোগ স্থাপন করে৷
5. জাভা অ্যাপটিকে ডকার কন্টেইনার হিসেবে প্যাকেজ করুন
এর পরে, আপনাকে কুবারনেটে চালানোর জন্য আপনার অ্যাপ প্রস্তুত করতে হবে। প্রথম ধাপ হল ধারক এবং এর বিষয়বস্তু সংজ্ঞায়িত করা।
- অ্যাপের জন্য মোতায়েনযোগ্য JAR তৈরি করুন।
$ ./mvnw -DskipTests package
- আপনি যে কন্টেইনার ইমেজটি তৈরি করবেন সেটি সঞ্চয় করতে আর্টিফ্যাক্ট রেজিস্ট্রি এপিআই সক্ষম করুন।
$ gcloud services enable artifactregistry.googleapis.com
- একটি বিদ্যমান না থাকলে একটি নতুন ডকার সংগ্রহস্থল তৈরি করুন । আপনি এটিতে কোনো ছবি পুশ করার আগে আপনাকে অবশ্যই একটি সংগ্রহস্থল তৈরি করতে হবে:
$ gcloud artifacts repositories create codelabrepo --repository-format=docker --location=us-central1
- আপনার ছবি বিন্যাস হতে যাচ্ছে:
{LOCATION}-docker.pkg.dev/{PROJECT-ID}/{REPOSITORY}/{IMAGE-NAME}
উদাহরণস্বরূপ, যদি আপনি codelabrepo
নামে us-central1
অবস্থানে সংগ্রহস্থল তৈরি করেন এবং আপনি আপনার ছবির নাম hello-java:v1
রাখতে চান, তাহলে ছবিটি হবে:
us-central1-docker.pkg.dev/{PROJECT-ID}/codelabrepo/hello-java:v1
- কন্টেইনার ইমেজ তৈরি করতে জিব ব্যবহার করুন এবং আর্টিফ্যাক্ট রেজিস্ট্রিতে এটি পুশ করুন।
$ export GOOGLE_CLOUD_PROJECT=`gcloud config list --format="value(core.project)"` $ ./mvnw -DskipTests com.google.cloud.tools:jib-maven-plugin:build -Dimage=us-central1-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/codelabrepo/hello-java:v1
- আপনি ক্লাউড কনসোলের আর্টিফ্যাক্টস রেজিস্ট্রি চিত্র পৃষ্ঠায় নেভিগেট করে কনসোলে তালিকাভুক্ত কন্টেইনার চিত্রটি দেখতে সক্ষম হবেন। আপনার কাছে এখন একটি প্রজেক্ট-ওয়াইড ডকার ইমেজ উপলব্ধ রয়েছে, যা কুবারনেটস অ্যাক্সেস করতে এবং অর্কেস্ট্রেট করতে পারে যেমন আপনি কয়েক মিনিটের মধ্যে দেখতে পাবেন।
- (ঐচ্ছিক) সমাপ্তির পরে (সবকিছু ডাউনলোড করতে এবং বের করতে কিছু সময় লাগবে), নিম্নলিখিত কমান্ডের সাহায্যে ইমেজটি পরীক্ষা করুন, যা আপনার নতুন তৈরি কন্টেইনার ইমেজ থেকে পোর্ট 8080-এ ডেমন হিসেবে একটি ডকার কন্টেইনার চালাবে। আপনি যদি অনুমতি সংক্রান্ত সমস্যায় পড়েন, প্রথমে
gcloud auth configure-docker
us-central1-docker.pkg.dev
চালান:
$ docker run -ti --rm -p 8080:8080 \ us-central1-docker.pkg.dev/$GOOGLE_CLOUD_PROJECT/codelabrepo/hello-java:v1
- আবার, ক্লাউড শেলের ওয়েব প্রিভিউ বৈশিষ্ট্যের সুবিধা নিন।
- আপনি একটি নতুন ট্যাবে ডিফল্ট পৃষ্ঠা দেখতে হবে. অ্যাপটি স্থানীয়ভাবে একটি ডকার কন্টেইনারে চলছে তা যাচাই করার পরে, আপনি
Control+C
টিপে চলমান কন্টেইনারটি বন্ধ করতে পারেন।
6. আপনার ক্লাস্টার তৈরি করুন
আপনি আপনার GKE ক্লাস্টার তৈরি করতে প্রস্তুত৷ একটি ক্লাস্টারে Google দ্বারা পরিচালিত একটি Kubernetes API সার্ভার এবং কর্মী নোডের একটি সেট থাকে। কর্মী নোডগুলি হল কম্পিউট ইঞ্জিন ভিএম।
- প্রথমে, নিশ্চিত করুন যে সম্পর্কিত API বৈশিষ্ট্যগুলি সক্ষম করা আছে।
$ gcloud services enable compute.googleapis.com container.googleapis.com
- দুটি
n1-standard-1
নোড সহ একটি ক্লাস্টার তৈরি করুন (এটি সম্পূর্ণ হতে কয়েক মিনিট সময় লাগবে)।
$ gcloud container clusters create hello-java-cluster \ --num-nodes 2 \ --machine-type n1-standard-1 \ --zone us-central1-c
শেষ পর্যন্ত, আপনি ক্লাস্টার তৈরি দেখতে হবে.
Creating cluster hello-java-cluster...done. Created [https://container.googleapis.com/v1/projects/...]. kubeconfig entry generated for hello-dotnet-cluster. NAME ZONE MASTER_VERSION hello-java-cluster us-central1-c ...
আপনার এখন GKE দ্বারা চালিত একটি সম্পূর্ণরূপে কার্যকরী Kubernetes ক্লাস্টার থাকা উচিত।
এখন আপনার কন্টেইনারাইজড অ্যাপটিকে কুবারনেটস ক্লাস্টারে স্থাপন করার সময়! এখন থেকে, আপনি kubectl
কমান্ড লাইন ব্যবহার করবেন (ইতিমধ্যে আপনার ক্লাউড শেল পরিবেশে সেট আপ)। বাকি কোডল্যাবের জন্য Kubernetes ক্লায়েন্ট এবং সার্ভার সংস্করণ 1.2 বা উচ্চতর হতে হবে। kubectl
version
আপনাকে কমান্ডের বর্তমান সংস্করণ দেখাবে।
7. Kubernetes-এ আপনার অ্যাপ স্থাপন করুন
- একটি Kubernetes স্থাপনা আপনার তৈরি করা কন্টেইনার ইমেজ ব্যবহার করে আপনার অ্যাপের একাধিক দৃষ্টান্ত তৈরি, পরিচালনা এবং স্কেল করতে পারে।
kubectl run
কমান্ড ব্যবহার করে কুবারনেটসে আপনার অ্যাপের একটি উদাহরণ স্থাপন করুন।
$ kubectl create deployment hello-java --image=us-central1-docker.pkg.dev/$GOOGLE_CLOUD_PROJECT/codelabrepo/hello-java:v1
- আপনি যে স্থাপনাটি তৈরি করেছেন তা দেখতে, কেবল নিম্নলিখিত কমান্ডটি চালান:
$ kubectl get deployments NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-java 1 1 1 1 37s
- স্থাপনার দ্বারা তৈরি অ্যাপের উদাহরণগুলি দেখতে, নিম্নলিখিত কমান্ডটি চালান:
$ kubectl get pods NAME READY STATUS RESTARTS AGE hello-java-714049816-ztzrb 1/1 Running 0 57s
এই মুহুর্তে, আপনার ধারকটি কুবারনেটসের নিয়ন্ত্রণে চলা উচিত, তবে আপনাকে এখনও এটিকে বাইরের বিশ্বের কাছে অ্যাক্সেসযোগ্য করতে হবে।
8. বহিরাগত ট্র্যাফিকের অনুমতি দিন
ডিফল্টরূপে, পড শুধুমাত্র ক্লাস্টারের মধ্যে তার অভ্যন্তরীণ আইপি দ্বারা অ্যাক্সেসযোগ্য। কুবারনেটস ভার্চুয়াল নেটওয়ার্কের বাইরে থেকে hello-java
কন্টেইনার অ্যাক্সেসযোগ্য করার জন্য, আপনাকে কুবারনেটস পরিষেবা হিসাবে পডকে প্রকাশ করতে হবে।
- ক্লাউড শেল-এ, আপনি কুবারনেটস লোডব্যালেন্সার পরিষেবা তৈরি করে পডটিকে সর্বজনীন ইন্টারনেটে প্রকাশ করতে পারেন।
$ kubectl create service loadbalancer hello-java --tcp=8080:8080
নোট করুন যে আপনি সরাসরি স্থাপনা প্রকাশ করেন, পড নয়। এটি ফলস্বরূপ পরিষেবাটি স্থাপনার দ্বারা পরিচালিত সমস্ত পড জুড়ে ব্যালেন্স ট্র্যাফিক লোড করবে (এই ক্ষেত্রে, শুধুমাত্র একটি পড, তবে আপনি পরে আরও প্রতিলিপি যোগ করবেন)।
কুবারনেটস মাস্টার লোড ব্যালেন্সার এবং সংশ্লিষ্ট কম্পিউট ইঞ্জিন ফরওয়ার্ডিং নিয়ম, টার্গেট পুল এবং ফায়ারওয়াল নিয়ম তৈরি করে যাতে Google ক্লাউডের বাইরে থেকে পরিষেবাটি সম্পূর্ণরূপে অ্যাক্সেসযোগ্য হয়৷
- পরিষেবাটির সর্বজনীনভাবে অ্যাক্সেসযোগ্য IP ঠিকানা খুঁজে পেতে, কেবলমাত্র সমস্ত ক্লাস্টার পরিষেবাগুলি তালিকাভুক্ত করার জন্য
kubectl
অনুরোধ করুন৷
$ kubectl get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-java 10.3.253.62 aaa.bbb.ccc.ddd 8080/TCP 1m kubernetes 10.3.240.1 <none> 443/TCP 5m
- আপনি এখন আপনার ব্রাউজারকে
http://<EXTERNAL_IP>:8080
এ নির্দেশ করে পরিষেবাটিতে পৌঁছতে সক্ষম হবেন।
9. আপনার পরিষেবা স্কেল
Kubernetes দ্বারা অফার করা শক্তিশালী বৈশিষ্ট্যগুলির মধ্যে একটি হল আপনার অ্যাপ স্কেল করা কতটা সহজ। ধরুন আপনার অ্যাপের জন্য হঠাৎ করে আরও ক্ষমতার প্রয়োজন। আপনি কেবল আপনার অ্যাপের উদাহরণগুলির জন্য একটি নতুন সংখ্যক প্রতিলিপি পরিচালনা করতে প্রতিলিপি নিয়ন্ত্রককে বলতে পারেন।
$ kubectl scale deployment hello-java --replicas=3 deployment "hello-java" scaled $ kubectl get deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-java 3 3 3 3 22m
ঘোষণামূলক পদ্ধতির লক্ষ্য করুন। নতুন দৃষ্টান্ত শুরু বা বন্ধ করার পরিবর্তে, আপনি সর্বদা কতগুলি দৃষ্টান্ত চালানো উচিত তা ঘোষণা করুন। Kubernetes reconciliation loops সহজভাবে নিশ্চিত করুন যে বাস্তবতা আপনার অনুরোধের সাথে মেলে এবং প্রয়োজনে ব্যবস্থা নিন।
10. আপনার পরিষেবাতে একটি আপগ্রেড রোল আউট করুন৷
কিছু সময়ে, আপনি যে অ্যাপটি প্রোডাকশনে স্থাপন করেছেন তার বাগ ফিক্স বা অতিরিক্ত বৈশিষ্ট্যের প্রয়োজন হবে। কুবারনেটস আপনাকে আপনার ব্যবহারকারীদের প্রভাবিত না করেই উৎপাদনে একটি নতুন সংস্করণ স্থাপনে সহায়তা করতে পারে।
- ওপেন এডিটর এ ক্লিক করে কোড এডিটর খুলুন ক্লাউড শেল মেনুতে।
-
src/main/java/com/example/springboot/HelloController.java
এ নেভিগেট করুন এবং প্রতিক্রিয়ার মান আপডেট করুন।
package com.example.springboot;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
@RestController
public class HelloController {
@RequestMapping("/")
public String index() {
return "Greetings from Google Kubernetes Engine!";
}
}
- কন্টেইনার ইমেজের একটি নতুন সংস্করণ তৈরি এবং পুশ করতে Jib ব্যবহার করুন। আপনি ক্যাশিংয়ের সম্পূর্ণ সুবিধা গ্রহণ করার সাথে সাথে আপডেট করা চিত্রটি তৈরি করা এবং পুশ করা আরও দ্রুত হওয়া উচিত।
$ ./mvnw -DskipTests package com.google.cloud.tools:jib-maven-plugin:build -Dimage=us-central1-docker.pkg.dev/$GOOGLE_CLOUD_PROJECT/codelabrepo/hello-java:v2
অ্যাপের নতুন সংস্করণে আপনার রেপ্লিকেশন কন্ট্রোলারকে মসৃণভাবে আপডেট করার জন্য আপনি Kubernetes-এর জন্য প্রস্তুত!
- আপনার চলমান কন্টেইনারের জন্য ইমেজ লেবেল পরিবর্তন করার জন্য, আপনাকে বিদ্যমান
hello-java
ডিপ্লয়মেন্ট এডিট করতে হবে এবংus-central1-docker.pkg.dev/PROJECT_ID/codelabrepo/hello-java:v1
থেকে ইমেজ পরিবর্তন করতে হবে
to us-central1-docker.pkg.dev/PROJECT_ID/codelabrepo/hello-java:v2
- আপনি কুবারনেটসকে আপনার অ্যাপের নতুন সংস্করণটি পুরো ক্লাস্টার জুড়ে এক সময়ে রোলিং আপডেটের সাথে স্থাপন করতে বলার জন্য
kubectl set image
কমান্ড ব্যবহার করতে পারেন।
$ kubectl set image deployment/hello-java hello-java=us-central1-docker.pkg.dev/$GOOGLE_CLOUD_PROJECT/codelabrepo/hello-java:v2 deployment "hello-java" image updated
- এটি নতুন প্রতিক্রিয়া ফিরিয়ে দিচ্ছে তা দেখতে আবার
http://EXTERNAL_IP:8080
চেক করুন৷
11. পিছনে রোল
উফ! আপনি অ্যাপের একটি নতুন সংস্করণের সাথে ভুল করেছেন? সম্ভবত নতুন সংস্করণে একটি ত্রুটি রয়েছে এবং আপনাকে দ্রুত এটি ফিরিয়ে আনতে হবে। Kubernetes এর সাহায্যে, আপনি সহজেই এটিকে আগের অবস্থায় ফিরিয়ে আনতে পারেন। নিম্নলিখিত কমান্ডটি চালিয়ে অ্যাপটি রোল ব্যাক করুন:
$ kubectl rollout undo deployment/hello-java
আপনি যখন আবার http://EXTERNAL_IP:8080
চেক করবেন তখন আপনার পুরানো প্রতিক্রিয়া দেখতে হবে।
12. অভিনন্দন
আপনি GKE-তে Kubernetes-এ একটি নতুন জাভা-ভিত্তিক ওয়েব অ্যাপ তৈরি এবং স্থাপন করতে শিখেছেন।
পরিষ্কার করুন
$ gcloud container clusters delete hello-java-cluster --zone us-central1-c $ gcloud container images delete us-central1-docker.pkg.dev/$GOOGLE_CLOUD_PROJECT/codelabrepo/hello-java:v1 us-central1-docker.pkg.dev/$GOOGLE_CLOUD_PROJECT/codelabrepo/hello-java:v2