我使用IBM Cloud的Helm图表来部署应用程序
首先
本次将整理在IBM Cloud上使用Kubernetes环境和Helm部署应用程序的步骤。
这是为那些没有使用过Kubernetes或者即将开始学习的初学者准备的基础内容。
目的是描述整体流程,并确认应用程序被成功部署而没有出现问题。
前提条件
・本次内容的前提是需要有IBM Cloud账户(可免费使用)。
・本文中的所有命令均适用于MacOS。
关于Helm
Helm是一个支持「Kubernetes包管理」的工具,正如其官方网站上所述。
它可以将Kubernetes应用资源打包成一个名为「Chart(图表)」的包,并将其分发到Kubernetes集群中作为一个工具。
建立Kubernetes环境
今回Kubernetes環境はIBM CloudのKubernetesソリューションである、「IBM Cloud Kubernetes Service(IKS)」のクラシック環境を使用します。
请参考过去的文章,了解关于使用命令行而不是控制台来启动Kubernetes环境的方法。
通过这个步骤,Kubernetes环境已经成功搭建完毕。
应用程序部署的过程
Helm的安装
首先,如果尚未安装Helm,则按照步骤在开发环境中(例如个人电脑)安装Helm。
确保Helm的版本是3.0.2或更高。(截至2023年01月27日,最新版本是v3.11.0。)
安装完成后,通过命令确认Helm的版本。
helm version
version.BuildInfo{Version:"v3.11.0", GitCommit:"472c5736ab01133de504a826bd9ee12cbe4e7904", GitTreeState:"clean", GoVersion:"go1.18.10"}
登录IBM云
Kubernetes集群指定
我們要指定部署應用程式的集群。
要設定Kubernetes環境,需要使用`export`指令。可以通過輸入`ibmcloud ks cluster config`指令來獲取`export`指令。
需要注意的是,集群ID顯示在集群畫面上。
ibmcloud ks cluster config --cluster <cluster-id>
<cluster-id> のコンテキストを現在の kubeconfig ファイルに追加しました。
これで、クラスターに対して「kubectl」コマンドを実行できます。 例えば、「kubectl get nodes」を実行します。
クラスターに初めてアクセスする場合、RBAC の同期中に「kubectl」コマンドが数秒間失敗することがあります。
使用 Helm 克隆一个使用 Helm 部署的应用程序的副本。
这次使用Helm图表部署的应用程序是”JpetStore”应用程序。
“JpetStore”是一个包含简洁电商网站功能的示例应用程序。
Gitコマンドを使って、JpetStoreリポジトリをクローンします。
git clone https://github.com/ibm-cloud-labs/jpetstore-kubernetes-compact.git --depth 1
在jpetstore-kubernetes-compact/helm目录下部署「JpetStore」应用程序。
cd ../helm
helm install jpetstore ./modernpets/
NAME: jpetstore
LAST DEPLOYED: Fri Jan 27 15:57:43 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Get Cluster Public IP Adress:
$ ibmcloud ks workers mycluster
我們將進行部署的確認。
helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
jpetstore default 1 2023-01-26 19:03:06.402354 +0900 JST deployed modernpets-0.1.5 1.0
我也会检查已部署的Pods。
kubectl get pods
NAME READY STATUS RESTARTS AGE
jpetstore-modernpets-jpetstoredb-54644d98f5-lgwfr 1/1 Running 0 117s
jpetstore-modernpets-jpetstoreweb-68f5bd5d79-6bhnt 1/1 Running 0 117s
jpetstore-modernpets-jpetstoreweb-68f5bd5d79-lzbjl 1/1 Running 0 117s
上記出力から、Webコンテナ(jpetstoreweb)のPodsが2つ,DBコンテナ(jpetstoredb)のPodsが1つがデプロイされていることが分かります。
我们还要确认部署和服务的情况。
kubectl get all
NAME READY STATUS RESTARTS AGE
jpetstore-modernpets-jpetstoredb-54644d98f5-lgwfr 1/1 Running 0 117s
jpetstore-modernpets-jpetstoreweb-68f5bd5d79-6bhnt 1/1 Running 0 117s
jpetstore-modernpets-jpetstoreweb-68f5bd5d79-lzbjl 1/1 Running 0 117s
sungyunmoon@SungyunnoMacBook-Pro helm % kubectl get all
NAME READY STATUS RESTARTS AGE
pod/jpetstore-modernpets-jpetstoredb-54644d98f5-lgwfr 1/1 Running 0 2m33s
pod/jpetstore-modernpets-jpetstoreweb-68f5bd5d79-6bhnt 1/1 Running 0 2m33s
pod/jpetstore-modernpets-jpetstoreweb-68f5bd5d79-lzbjl 1/1 Running 0 2m33s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/db ClusterIP 172.21.198.176 <none> 3306/TCP 2m33s
service/kubernetes ClusterIP 172.21.0.1 <none> 443/TCP 15m
service/web NodePort 172.21.67.242 <none> 80:31000/TCP 2m33s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/jpetstore-modernpets-jpetstoredb 1/1 1 1 2m33s
deployment.apps/jpetstore-modernpets-jpetstoreweb 2/2 2 2 2m33s
NAME DESIRED CURRENT READY AGE
replicaset.apps/jpetstore-modernpets-jpetstoredb-54644d98f5 1 1 1 2m33s
replicaset.apps/jpetstore-modernpets-jpetstoreweb-68f5bd5d79 2 2 2 2m33s
ブラウザーでのアプリケーションの確認
アプリケーションのデプロイが完了すると、次はブラウザーでの状態を確認します。現在「Jpetstore」アプリケーションは、Kubernetesクラスター上で動作していて、インターネットに公開されている状態です。
確認のために、ワーカーノードのパブリックIPアドレス(Public IP)とノードポートを取得します。
ibmcloud ks worker ls --cluster <cluster-id>
OK
ID パブリック IP プライベート IP フレーバー 状態 状況 ゾーン バージョン
kube-cf9n2nnt0ven2m0lmlqg-moonmyclust-default-0000019d 169.56.0.231 10.132.238.120 u3c.2x4.encrypted normal Ready tok02 1.25.5_1528
kube-cf9n2nnt0ven2m0lmlqg-moonmyclust-default-00000280 165.192.80.43 10.193.189.3 u3c.2x4.encrypted normal Ready tok05 1.25.5_1528
kube-cf9n2nnt0ven2m0lmlqg-moonmyclust-default-0000033b 128.168.82.163 10.192.64.52 u3c.2x4.encrypted normal Ready tok04 1.25.5_1528
kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
db ClusterIP 172.21.198.176 <none> 3306/TCP 13m
kubernetes ClusterIP 172.21.0.1 <none> 443/TCP 26m
web NodePort 172.21.67.242 <none> 80:31000/TCP 13m
ブラウザでPublic IP:NodePortを開きます。
今回の場合のPublic IP:NodePortは以下の通りです。
-
- Public IP: 169.56.0.231 (3つとも可能ですが、今回は1行目のIPアドレスを使用します。)
- NodePort: 31000
カテゴリーをクリックして情報を確認したり、右上の検索欄なども使えるので、一度いじりながら確認してみてください。
Kubernetesダッシュボードの確認
最后。
这次我们在IBM Cloud上启动了Kubernetes集群,并使用Helm部署了示例应用程序。
在上一篇文章中,我们使用guestbook作为示例应用程序进行了部署,但通过使用Helm,我们发现可以更轻松地进行部署。
然而,由于Kubernetes仪表板的操作方法还需要进一步学习,因此我打算继续提升技能并发布文章。
请注意
-
- 由於此帳戶已應用折扣,所以顯示價格可能與正常定價不同。
-
- 因為費用是根據美元對日元匯率計算,所以即使是相同的服務也可能有費用變動。
- 在創建Qiita文章時,可能會有環境時間軸前後或實例名稱的差異。
请根据以下内容提供中国本土的表达方式:
・【IBM云服务】在IBM Open Labs上使用Kubernetes部署应用
・IBM云文档-IBM云Kubernetes服务
・Helm HP