この連載が書籍になりました!『RancherによるKubernetes活用完全ガイド

RancherのCatalog機能を詳細に見てみる

2019年3月27日(水)
市川 豊
連載3回目となる今回は、RancherのCatalog機能の実際の使い方について紹介していく。

アプリケーションデプロイ(kubectl)

1. kubectlコマンド

Rancherでは、Catalog機能だけではなくkubectlコマンドを利用したアプリケーションデプロイもUIから実行できます。

Kubernetes公式のチュートリアルでも利用されているGuestbookアプリケーションのデプロイを、RancherUIからkubectlコマンドのapplyで実行してみます。連載2回目までの環境で実践します。

上部メニューの「Global」を選択します(図24)。

図24:ここでは「Global」を選択

図24:ここでは「Global」を選択

クラスタ名をクリックします(図25)。

図25:クラスタ名をクリック

図25:クラスタ名をクリック

「Launch Kubectl」ボタンをクリックします(図26)。

図26:「Launch Kubectl」ボタンをクリック

図26:「Launch Kubectl」ボタンをクリック

すると、コンソール画面が表示されます(図27)。

図27:コンソール画面

図27:コンソール画面

以下のコマンドを実行して、Guestbookアプリケーションをデプロイします。

コンソール画面で実行するコマンド

# Run kubectl commands inside here
# e.g. kubectl get all
> kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook/all-in-one/guestbook-all-in-one.yaml
service "redis-master" created
deployment.apps "redis-master" created
service "redis-slave" created
deployment.apps "redis-slave" created
service "frontend" created
deployment.apps "frontend" created
>

frontend 3個、redis-slave 2個、redis-master 1個のPodがデプロイされてRunnningの状態であることを確認します。

Podの稼働状況を確認

> kubectl get pods --all-namespaces
NAMESPACE       NAME                                                READY     STATUS      RESTARTS   AGE
cattle-system   cattle-cluster-agent-7d5ff8967-qzdp9                1/1       Running     0          5h
cattle-system   cattle-node-agent-9fsz6                             1/1       Running     0          5h
default         frontend-56f7975f44-cftl5                           1/1       Running     0          2m
default         frontend-56f7975f44-kk4r9                           1/1       Running     0          2m
default         frontend-56f7975f44-v5r8l                           1/1       Running     0          2m
default         redis-master-6b464554c8-gsmb5                       1/1       Running     0          2m
default         redis-slave-b58dc4644-b6j4v                         1/1       Running     0          2m
default         redis-slave-b58dc4644-gcggl                         1/1       Running     0          2m
ingress-nginx   default-http-backend-797c5bc547-kdj97               1/1       Running     0          5h
ingress-nginx   nginx-ingress-controller-ksqxg                      1/1       Running     0          5h
kube-system     canal-qjx7n                                         3/3       Running     0          5h
kube-system     kube-dns-7588d5b5f5-44stx                           3/3       Running     0          5h
kube-system     kube-dns-autoscaler-5db9bbb766-zt49c                1/1       Running     0          5h
kube-system     metrics-server-97bc649d5-mcmhc                      1/1       Running     0          5h
kube-system     rke-ingress-controller-deploy-job-r2xzn             0/1       Completed   0          5h
kube-system     rke-kubedns-addon-deploy-job-49c7j                  0/1       Completed   0          5h
kube-system     rke-metrics-addon-deploy-job-4wtwn                  0/1       Completed   0          5h
kube-system     rke-network-plugin-deploy-job-nq6kx                 0/1       Completed   0          5h
weave-scope     weave-scope-agent-weave-scope-wlpht                 1/1       Running     0          4h
weave-scope     weave-scope-frontend-weave-scope-7bcf9bc6bc-rkxbw   1/1       Running     0          4h

2. Ingressの作成

Ingressを作成して、ブラウザから外部アクセス可能にします。

上部メニューの「rancher-kubernetes-cluster」-「Default」を選択します(図28)。

図28:上部のメニューから選択

図28:上部のメニューから選択

「Load Balancing」を選択して、「Add Ingress」ボタンをクリックします(図29)。

図29:「Add Ingress」をクリック

図29:「Add Ingress」をクリック

「Name」に任意名を入力(guestbookとします)します。「Rules」で「Automatically generate a .xip.io hostname」にチェックが入っていることを確認します。「Target」で「frontend」を選択し、「Port」で「80」を入力します。最後に「Save」ボタンをクリックします(図30)。

図30:必要なパラメータを指定

図30:必要なパラメータを指定

「Save」ボタンをクリックしてしばらくすると、ワイルドカードDNSサービスを利用したURLが生成されます(図31)。そのURLをクリックするとGuestbookの画面(図32)が表示されます。

図31:外部からアクセス可能なURLが生成されている

図31:外部からアクセス可能なURLが生成されている

図32:アクセスするとGuestbookが表示される

図32:アクセスするとGuestbookが表示される

Kubernetesの仕組みも含めたシステムの全体像は、図33のようになります。

図33:Kubernetesを含んだシステムの全景

図33:Kubernetesを含んだシステムの全景

連載の第三回では、WordPressをベースにRancherのカタログ機能についての詳細と、RancherUIからkubectlコマンドを実行してGuestbookアプリケーションをデプロイする流れを紹介しました。

この全三回で、Rancherのインストール、Kubernetesクラスタ構築、Ingress作成、カタログ機能によるアプリケーションデプロイ、RancherUIからKubectlコマンド実行という流れで、一部ではありますがRancherの基本的な機能と操作を紹介してきました。

Rancherでは、「Kubernetes Everywhere」をベースに各パブリッククラウドベンダーが展開するマネージドKubernetes、仮想マシンインスタンスやオンプレミスに対してRancherと連携してKubernetesクラスタの構築(Create)および管理(Manage)ができます。さらに、既存のKubernetesクラスタもRancherに取り込んで(Import)、管理(Manage)できます。

The Linux Foundationのエクゼクティブ・ディレクターであるJim Zemlinが「Kubernetes is becoming the Linux of the cloud」と語るように、KubernetesはCloud NativeにおけるLinux OSになっている状況です。現状は、これまでのMulti-CloudからMulti-Kubernetes、Cloud NativeからKubernetes Nativeへの過程なのかもしれません。

Rancher 2.2からの新機能として、Multi-Cluster Appsという複数のMulti-Kubernetes環境にカタログから一括にアプリケーションをデプロイできる機能や、Prometheus+GrafanaもRancherの機能として同梱される予定です。そして、先日SUBMARINER ※1 というオンプレミス、クラウド環境を問わずKubernetesクラスタ間でPodの直接通信を実現する新プロダクトも発表されました。Multi-Kubernetes対応も随時進んでいます。

このMulti-Kubernetes、Kubernetes Nativeな時代、まさに「Kubernetes Everywhere」をRancherで実現して行きましょう(図34)。

図34:Kubernetes Everywhere

図34:Kubernetes Everywhere

次回からは「Rancherで実現するCI/CDパイプライン」という、より実践的な内容へとシフトしていきます。

※1:SUBMARINER "Cross-Cluster Network Connectivity for Kubernetes" Rancher Labsの新プロダクト
https://submariner.io/
https://github.com/rancher/submariner
https://rancher.com/blog/2019/announcing-submariner-multi-cluster-kubernetes-networking/

日本オラクル株式会社

Oracle Groundbreaker Advocate
Principal Cloud Solution Engineer

これまで、インフラエンジニア、フロントエンドエンジニアとして官公庁のシステム基盤を中心としたサーバの設計構築、運用保守、Webシステム開発を担当。技術教育者として専門学校でクラウド技術やOSS(Linux、Docker、Kubernetes)の授業を担当し、企業様向けプライベートトレーニング講師も担当。 アドボケート/エバンジェリストとしてミートアップ、カンファレンスで登壇。現在は、クラウドネイティブ技術を中心とするソリューションエンジニアとして活動。クラウドネイティブ技術に関連するコミュニティの運営にも積極的に参加。

Community:
Oracle Cloud Hangout Cafe メンバー (#ochacafe)
CloudNative Days Tokyo 実行委員会メンバー (#CNDT)

Book:
著書「Dockerコンテナ開発・環境構築の基本」(インプレス)
共著「RancherによるKubernetes活用完全ガイド」(インプレス)、「コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤」(翔泳社)

連載バックナンバー

クラウド技術解説
第11回

Rancherコードリーディング入門(3/3)

2020/2/19
前回に続き、紙面の都合で「RancherによるKubernetes活用完全ガイド」に掲載されなかったパートをご紹介します。
クラウド技術解説
第10回

Rancherコードリーディング入門(2/3)

2019/12/25
前回に続き、紙面の都合で「RancherによるKubernetes活用完全ガイド」に掲載されなかったパートをご紹介します。
クラウド技術解説
第9回

Rancherコードリーディング入門(1/3)

2019/11/5
今回からは、紙面の都合で「RancherによるKubernetes活用完全ガイド」に掲載されなかったパートをご紹介します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています