我使用IBM Cloud的Helm图表来部署应用程序

首先

本次将整理在IBM Cloud上使用Kubernetes环境和Helm部署应用程序的步骤。
这是为那些没有使用过Kubernetes或者即将开始学习的初学者准备的基础内容。
目的是描述整体流程,并确认应用程序被成功部署而没有出现问题。

前提条件

・本次内容的前提是需要有IBM Cloud账户(可免费使用)。
・本文中的所有命令均适用于MacOS。

关于Helm

ㅇㅇㅇ.png

Helm是一个支持「Kubernetes包管理」的工具,正如其官方网站上所述。
它可以将Kubernetes应用资源打包成一个名为「Chart(图表)」的包,并将其分发到Kubernetes集群中作为一个工具。

建立Kubernetes环境

今回Kubernetes環境はIBM CloudのKubernetesソリューションである、「IBM Cloud Kubernetes Service(IKS)」のクラシック環境を使用します。

スクリーンショット 2023-01-27 14.21.22.png
スクリーンショット 2023-01-27 14.21.40.png
スクリーンショット 2023-01-27 16.27.20.png
FireShot Capture 065 - クラスターの作成 - IBM Cloud - cloud.ibm.com.png
スクリーンショット 2023-01-27 14.33.20.png

请参考过去的文章,了解关于使用命令行而不是控制台来启动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云

スクリーンショット 2023-01-27 14.52.54.png

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」コマンドが数秒間失敗することがあります。
スクリーンショット 2023-01-27 15.05.19.png

使用 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
スクリーンショット 2023-01-27 16.15.36.png

カテゴリーをクリックして情報を確認したり、右上の検索欄なども使えるので、一度いじりながら確認してみてください。

Kubernetesダッシュボードの確認

スクリーンショット 2023-01-27 14.33.20.png
スクリーンショット 2023-01-27 16.19.01.png

最后。

这次我们在IBM Cloud上启动了Kubernetes集群,并使用Helm部署了示例应用程序。
在上一篇文章中,我们使用guestbook作为示例应用程序进行了部署,但通过使用Helm,我们发现可以更轻松地进行部署。
然而,由于Kubernetes仪表板的操作方法还需要进一步学习,因此我打算继续提升技能并发布文章。

请注意

    1. 由於此帳戶已應用折扣,所以顯示價格可能與正常定價不同。

 

    1. 因為費用是根據美元對日元匯率計算,所以即使是相同的服務也可能有費用變動。

 

    在創建Qiita文章時,可能會有環境時間軸前後或實例名稱的差異。

请根据以下内容提供中国本土的表达方式:

・【IBM云服务】在IBM Open Labs上使用Kubernetes部署应用
・IBM云文档-IBM云Kubernetes服务
・Helm HP

广告
将在 10 秒后关闭
bannerAds