১. শুরু করার আগে
কুবারনেটিস একটি ওপেন সোর্স প্রজেক্ট, যা ল্যাপটপ থেকে শুরু করে হাই-অ্যাভেইলেবিলিটি মাল্টি-নোড ক্লাস্টার, পাবলিক ক্লাউড থেকে অন-প্রিমিস ডেপ্লয়মেন্ট, এবং ভার্চুয়াল মেশিন (VM) ইনস্ট্যান্স থেকে বেয়ার মেটাল পর্যন্ত বিভিন্ন পরিবেশে চলতে পারে।
এই কোডল্যাবে, আপনি GKE- তে থাকা Kubernetes-এ একটি সাধারণ Spring Boot Java ওয়েব অ্যাপ ডেপ্লয় করবেন, যার মূল লক্ষ্য হলো আপনার ওয়েব অ্যাপটিকে Kubernetes-এ একটি রেপ্লিকেটেড অ্যাপ হিসেবে চালানো। আপনি আপনার মেশিনে তৈরি করা কোডকে একটি Docker কন্টেইনার ইমেজে রূপান্তর করবেন এবং সেই ইমেজটি GKE-তে চালাবেন।
আপনি GKE ব্যবহার করবেন, যা গুগল ক্লাউডের একটি সম্পূর্ণভাবে পরিচালিত Kubernetes পরিষেবা। এর ফলে আপনি অন্তর্নিহিত পরিকাঠামো স্থাপন করার পরিবর্তে Kubernetes-এর অভিজ্ঞতা অর্জনের উপর আরও বেশি মনোযোগ দিতে পারবেন।
আপনি যদি আপনার লোকাল মেশিনে, যেমন একটি ডেভেলপমেন্ট ল্যাপটপে, কুবারনেটিস চালাতে আগ্রহী হন, তাহলে মিনিকিউব (Minikube) দেখতে পারেন, যা ডেভেলপমেন্ট এবং টেস্টিংয়ের উদ্দেশ্যে একটি সিঙ্গেল-নোড কুবারনেটিস ক্লাস্টারের সহজ সেটআপের সুবিধা দেয়। আপনি চাইলে কোডল্যাবটি অনুশীলন করার জন্য মিনিকিউব ব্যবহার করতে পারেন।
এই কোডল্যাবে "Building an App with Spring Boot" গাইড থেকে নমুনা কোড ব্যবহার করা হবে।
পূর্বশর্ত
- জাভা প্রোগ্রামিং ভাষা এবং টুলস সম্পর্কে পরিচিতি
- Vim, Emacs, এবং nano-এর মতো প্রচলিত লিনাক্স টেক্সট এডিটর সম্পর্কে জ্ঞান।
আপনি যা করবেন
- একটি সাধারণ জাভা অ্যাপকে ডকার কন্টেইনার হিসেবে প্যাকেজ করুন।
- GKE-তে আপনার Kubernetes ক্লাস্টার তৈরি করুন।
- আপনার জাভা অ্যাপটি GKE-তে Kubernetes-এ ডেপ্লয় করুন।
- আপনার পরিষেবার পরিধি বাড়ান এবং একটি আপগ্রেড চালু করুন।
- ড্যাশবোর্ড অ্যাক্সেস করুন, যা একটি ওয়েব-ভিত্তিক কুবারনেটিস ইউজার ইন্টারফেস।
আপনার যা যা লাগবে
- একটি গুগল ক্লাউড প্রকল্প
- একটি ব্রাউজার, যেমন গুগল ক্রোম
২. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে। - আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
- এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
ক্লাউড শেল সক্রিয় করুন
- ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন।
.

আপনি যদি প্রথমবারের মতো ক্লাউড শেল চালু করেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন আপনার সামনে আসবে। যদি একটি মধ্যবর্তী স্ক্রিন আসে, তাহলে 'চালিয়ে যান' (Continue) এ ক্লিক করুন।

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

এই ভার্চুয়াল মেশিনটিতে প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই একটি ব্রাউজার দিয়ে করা সম্ভব।
ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।
- আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
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].
৩. সোর্স কোড সংগ্রহ করুন
ক্লাউড শেল চালু হওয়ার পর, আপনি কমান্ড লাইন ব্যবহার করে হোম ডিরেক্টরিতে থাকা উদাহরণ সোর্স কোডটি ক্লোন করতে পারবেন।
$ git clone https://github.com/spring-guides/gs-spring-boot.git $ cd gs-spring-boot/complete
৪. স্থানীয়ভাবে অ্যাপটি চালান
- নিশ্চিত করুন যে JAVA_HOME সঠিক সংস্করণে সেট করা আছে:
$ export JAVA_HOME=/usr/lib/jvm/java-1.17.0-openjdk-amd64
- আপনি Spring Boot প্লাগইন ব্যবহার করে স্বাভাবিকভাবে Spring Boot অ্যাপটি চালু করতে পারেন।
$ ./mvnw -DskipTests spring-boot:run
- অ্যাপটি চালু হওয়ার পর, ওয়েব প্রিভিউ- তে ক্লিক করুন।
ক্লাউড শেল টুলবারে এবং পোর্ট ৮০৮০-তে প্রিভিউ নির্বাচন করুন।

আপনার ব্রাউজারে একটি ট্যাব খোলে এবং আপনার এইমাত্র চালু করা সার্ভারটির সাথে সংযোগ স্থাপন করে।

৫. জাভা অ্যাপটিকে একটি ডকার কন্টেইনার হিসেবে প্যাকেজ করুন।
এরপরে, কুবারনেটিসে চালানোর জন্য আপনাকে আপনার অ্যাপটি প্রস্তুত করতে হবে। প্রথম ধাপ হলো কন্টেইনার এবং এর বিষয়বস্তু নির্ধারণ করা।
- অ্যাপটির জন্য ডিপ্লয়েবল JAR তৈরি করুন।
$ ./mvnw -DskipTests package
- আপনার তৈরি করা কন্টেইনার ইমেজটি সংরক্ষণ করতে আর্টিফ্যাক্ট রেজিস্ট্রি এপিআই (Artifact Registry API) সক্রিয় করুন।
$ 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}
উদাহরণস্বরূপ, যদি আপনি us-central1 লোকেশনে codelabrepo নামে রিপোজিটরিটি তৈরি করে থাকেন এবং আপনার ইমেজটির নাম hello-java:v1 রাখতে চান, তাহলে ইমেজটি হবে:
us-central1-docker.pkg.dev/{PROJECT-ID}/codelabrepo/hello-java:v1
- Jib ব্যবহার করে কন্টেইনার ইমেজ তৈরি করুন এবং এটিকে আর্টিফ্যাক্ট রেজিস্ট্রি-তে পুশ করুন।
$ 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-dockerus-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চেপে চলমান কন্টেইনারটি বন্ধ করতে পারেন।
৬. আপনার ক্লাস্টার তৈরি করুন
আপনি আপনার GKE ক্লাস্টার তৈরি করার জন্য প্রস্তুত। একটি ক্লাস্টারে গুগল দ্বারা পরিচালিত একটি কুবারনেটিস এপিআই সার্ভার এবং এক সেট ওয়ার্কার নোড থাকে। ওয়ার্কার নোডগুলো হলো কম্পিউট ইঞ্জিন ভিএম।
- প্রথমে, নিশ্চিত করুন যে সংশ্লিষ্ট 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 কমান্ড লাইন ব্যবহার করবেন (যা আপনার ক্লাউড শেল এনভায়রনমেন্টে আগে থেকেই সেট আপ করা আছে)। কোডল্যাবের বাকি অংশের জন্য কুবারনেটিস ক্লায়েন্ট এবং সার্ভার ভার্সন ১.২ বা তার বেশি হতে হবে। kubectl version কমান্ডটি আপনাকে এর বর্তমান ভার্সন দেখাবে।
৭. আপনার অ্যাপটি কুবারনেটিসে স্থাপন করুন
- একটি Kubernetes deployment আপনার তৈরি করা কন্টেইনার ইমেজ ব্যবহার করে আপনার অ্যাপের একাধিক ইনস্ট্যান্স তৈরি, পরিচালনা এবং স্কেল করতে পারে।
kubectl runকমান্ড ব্যবহার করে আপনার অ্যাপের একটি ইনস্ট্যান্স Kubernetes-এ ডিপ্লয় করুন।
$ 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
এই পর্যায়ে, আপনার কন্টেইনারটি কুবারনেটিসের নিয়ন্ত্রণে চালু থাকার কথা, কিন্তু এটিকে বহির্বিশ্বের জন্য অ্যাক্সেসযোগ্যও করতে হবে।
৮. বাহ্যিক ট্র্যাফিকের অনুমতি দিন
ডিফল্টরূপে, ক্লাস্টারের মধ্যে পডটি শুধুমাত্র তার অভ্যন্তরীণ আইপি দ্বারা অ্যাক্সেসযোগ্য। কুবারনেটিস ভার্চুয়াল নেটওয়ার্কের বাইরে থেকে hello-java কন্টেইনারটিকে অ্যাক্সেসযোগ্য করার জন্য, আপনাকে পডটিকে একটি কুবারনেটিস সার্ভিস হিসেবে এক্সপোজ করতে হবে।
- ক্লাউড শেলে, আপনি একটি কুবারনেটিস লোডব্যালেন্সার সার্ভিস তৈরি করার মাধ্যমে পডটিকে পাবলিক ইন্টারনেটে উন্মুক্ত করতে পারেন।
$ kubectl create service loadbalancer hello-java --tcp=8080:8080
লক্ষ্য করুন যে আপনি সরাসরি ডিপ্লয়মেন্টটি এক্সপোজ করছেন, পডটি নয়। এর ফলে তৈরি হওয়া সার্ভিসটি ডিপ্লয়মেন্ট দ্বারা পরিচালিত সমস্ত পডের মধ্যে ট্র্যাফিক লোড ব্যালেন্স করবে (এই ক্ষেত্রে, শুধুমাত্র একটি পড, কিন্তু আপনি পরে আরও রেপ্লিকা যোগ করবেন)।
গুগল ক্লাউডের বাইরে থেকে পরিষেবাটিকে সম্পূর্ণরূপে অ্যাক্সেসযোগ্য করার জন্য কুবারনেটিস মাস্টার লোড ব্যালেন্সার এবং সংশ্লিষ্ট কম্পিউট ইঞ্জিন ফরওয়ার্ডিং রুল, টার্গেট পুল ও ফায়ারওয়াল রুল তৈরি করে।
- সার্ভিসটির সর্বজনীনভাবে অ্যাক্সেসযোগ্য আইপি অ্যাড্রেস খুঁজে পেতে, কেবল
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লিখে পরিষেবাটি ব্যবহার করতে পারবেন।
৯. আপনার পরিষেবার পরিধি বাড়ান।
কুবারনেটিসের অন্যতম শক্তিশালী একটি বৈশিষ্ট্য হলো আপনার অ্যাপকে স্কেল করা কতটা সহজ। ধরুন, হঠাৎ আপনার অ্যাপের জন্য আরও ধারণক্ষমতার প্রয়োজন হলো। আপনি খুব সহজেই রেপ্লিকেশন কন্ট্রোলারকে আপনার অ্যাপ ইনস্ট্যান্সগুলোর জন্য নতুন সংখ্যক রেপ্লিকা পরিচালনা করতে বলতে পারেন।
$ 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 আপনার ব্যবহারকারীদের প্রভাবিত না করেই প্রোডাকশনে একটি নতুন ভার্সন ডেপ্লয় করতে সাহায্য করতে পারে।
- ওপেন এডিটর-এ ক্লিক করে কোড এডিটরটি খুলুন।
ক্লাউড শেল মেনুতে। -
src/main/java/com/example/springboot/HelloController.javaতে যান এবং response-এর মান আপডেট করুন।
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
আপনার রেপ্লিকেশন কন্ট্রোলারকে অ্যাপটির নতুন সংস্করণে মসৃণভাবে আপডেট করার জন্য আপনি এখন কুবারনেটিসের জন্য প্রস্তুত!
- আপনার চলমান কন্টেইনারের ইমেজ লেবেল পরিবর্তন করতে, আপনাকে বিদ্যমান
hello-javaডিপ্লয়মেন্টটি এডিট করতে হবে এবংus-central1-docker.pkg.dev/PROJECT_ID/codelabrepo/hello-java:v1থেকে ইমেজটি পরিবর্তন করতে হবে।
us-central1-docker.pkg.dev/PROJECT_ID/codelabrepo/hello-java:v2 এ
- আপনি
kubectl set imageকমান্ড ব্যবহার করে Kubernetes-কে আপনার অ্যাপের নতুন সংস্করণটি রোলিং আপডেটের মাধ্যমে একবারে একটি করে ইনস্ট্যান্সে পুরো ক্লাস্টার জুড়ে ডেপ্লয় করতে বলতে পারেন।
$ 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আবার পরীক্ষা করুন।
১১. রোল ব্যাক
ওহ! আপনি কি অ্যাপটির নতুন সংস্করণে কোনো ভুল করেছেন? সম্ভবত নতুন সংস্করণটিতে কোনো ত্রুটি ছিল এবং আপনাকে দ্রুত এটিকে আগের অবস্থায় ফিরিয়ে আনতে হবে। Kubernetes-এর সাহায্যে, আপনি সহজেই এটিকে আগের অবস্থায় ফিরিয়ে আনতে পারেন। নিম্নলিখিত কমান্ডটি চালিয়ে অ্যাপটি রোল ব্যাক করুন:
$ kubectl rollout undo deployment/hello-java
আপনি যখন আবার http://EXTERNAL_IP:8080 চেক করবেন, তখন পুরনো প্রতিক্রিয়াটি দেখতে পাবেন।
১২. অভিনন্দন
আপনি 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