Azure上の簡易検証環境で確認する基本機能
本記事では、クラウド上に最小限の検証環境を構築し、Rancher の基本機能を確認します。
Rancher は Kubernetes のクラスタ管理を統合的に行えるプラットフォームですが、まずは UI や主要な機能を手早く体験したいケースも多いでしょう。今回は Azure 上の Ubuntu VM(VM-A)に Docker で Rancher を起動し、別の Ubuntu VM(VM-B)に K3s を構築して Rancher にインポートする 2 台構成で動作を確認しました。
なお、本記事は 検証用の最小構成を前提としており、本番環境での推奨構成・セキュリティ設計とは異なります。目的はあくまで Rancher の UI と基本機能を簡易的に体験することです。
前提環境
※ 本記事の構成は 検証用途 を前提としており、NodePort 公開や単一ノード構成など、本番では推奨されない点が含まれます。
項目 | 内容 |
---|---|
クラウド環境 | Azure |
OS | Ubuntu (Azure VM) |
構成 | 2台構成:VM-A(Rancher サーバー)/VM-B(K3s クラスタ) |
Rancher構築方式 |
VM-A 上で Docker により rancher/rancher コンテナを起動 |
K8s構成 |
VM-B に K3s をインストールし、Rancher に インポート (vm-testk3s-001) |
ネットワーク設定 | VM-A: 80, 443 を開放/VM-B: 22, (実際に使う番号だけ)NodePort 30000–32767 を開放 |
確認内容
- Step1: Rancher UI の起動
- Step2: K3s クラスタの登録と管理機能の検証
- Step3: GitOps を用いたワークロードの自動デプロイ体験
- Step4: Prometheus/Grafana を利用したモニタリングの有効化
Step1: Rancher UI の起動
目的
- Rancher サーバーを Azure VM 上に起動し、Web UI へアクセスできることを確認する。
- 初期セットアップ(パスワード設定や証明書警告スキップ)を行い、管理画面へ到達する。
1-1: Rancher のインストール(Docker)
まずは Rancher サーバーを Docker コンテナとして起動します。
この方法は公式にも「検証用途向け」とされている簡易インストール方式です。
sudo docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
rancher/rancher:latest
- ブラウザで https:// にアクセス
- 初期パスワードを設定し、証明書に関するセキュリティ警告をスキップ(自己署名証明書のため)
注意:本番環境では Docker 方式ではなく、Helm を用いた Kubernetes 上へのデプロイが推奨されています。
1-2: Rancher UI へのアクセス(初期設定、ログイン)
Step2:K3sクラスタの構築・管理機能の検証
目的
- Rancher の管理対象とするための Kubernetes クラスタ(K3s)を Azure VM 上に構築する。
- Rancher UI のダッシュボードで Capacity(Pods / CPU / Memory)を確認する。
- クラスタの削除手順まで実施し、構築から削除までの一連の流れを確認する。
2-1: K3s クラスタのセットアップと登録
まずは Rancher で管理する対象クラスタとして、検証用に K3s を Azure VM上へ導入します。
K3s は軽量な Kubernetes ディストリビューションで、シングルノード環境でも簡単に構築できるのが特徴です。
# K3s インストール(root ユーザで実行)
curl -sfL https://get.k3s.io | sh -
# kubeconfig のパスを確認
sudo cat /etc/rancher/k3s/k3s.yaml
# 必要に応じてユーザー用 kubeconfig にコピー
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
# 動作確認
kubectl get nodes
NAME STATUS ROLES AGE VERSION
vm-testk3s-001 Ready control-plane,master 7d v1.33.3+k3s1
kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-xxxxx 1/1 Running 0 2m
...
2-2: Rancher にクラスタをインポート
- [Rancher UI] → [Cluster Management] → [Clusters] → [Generic] → [インポート対象クラスタの種類を選択]
- 表示されたコマンドを K3s VM(VM-B) 上で実行します。
- 数分後、Rancher にクラスタが登録され UI 上で状態が Active になれば成功です。
sudo curl --insecure -sfL https://<rancher-url>/v3/import/xxxxxxxx.yaml | kubectl apply -f -
clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver created
clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master created
namespace/cattle-system created
serviceaccount/cattle created
clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding created
secret/cattle-credentials-XXXX created
clusterrole.rbac.authorization.k8s.io/cattle-admin created
Warning: spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].key: beta.kubernetes.io/os is deprecated since v1.14; use "kubernetes.io/os" instead
Warning: spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[2].preference.matchExpressions[0].key: node-role.kubernetes.io/master is use "node-role.kubernetes.io/control-plane" instead
deployment.apps/cattle-cluster-agent created
service/cattle-cluster-agent created
# 'cattle-system'の主要 Pod が起動しているかを確認。
kubectl get pods -n cattle-system
NAME READY STATUS RESTARTS AGE
cattle-cluster-agent-XXXX 1/1 Running 0 2m52s
rancher-webhook-XXXX 1/1 Running 0 51s
system-upgrade-controller-XXXX 1/1 Running 0 18s
2-3: クラスタ管理機能の確認
Rancher UI でインポートしたクラスタに入り、基本的な管理画面を確認します。
本ステップでは以下を実施しました。
-
ノードの状態確認:各ノードが
Active
/Ready
と表示されていることを確認 - ワークロードの確認:Pod の一覧表示ができることを確認
- Capacity 表示:クラスタダッシュボードで CPU / メモリ / Pod の容量が確認できることを確認
※ちなみに今回作成したK3sのクラスタは"vm-testk3s-001"となります。
2-4: クラスタの削除と K3s のアンインストール
- Rancher 側からの削除
- Rancher UI → 対象クラスタ → 削除
- K3s のアンインストール
sudo /usr/local/bin/k3s-uninstall.sh
Step3: GitOps によるワークロードの自動デプロイ検証
目的
- Git リポジトリにある YAML マニフェストを利用し、Rancher の GitOps 機能(Fleet)でアプリケーションを自動デプロイする。
- GitOps による変更の自動反映(replica 数の変更やコンテナイメージの更新など)を確認する。
3-1: GitOps 用 Git Repos の作成(Rancher UI)
事前準備: GitHub などにマニフェストを格納用のリポジトリを作成しておきます。
- [Rancher UI] → **「Apps」→「Git Repos」→「Create」**を選択します。
- 以下の設定を入力
項目 | 内容 |
---|---|
Git Repo URL | https://github.com/<your-org>/<your-repo>.git |
Branch |
main (または任意のブランチ) |
Path |
sample-repo (マニフェストが配置されているディレクトリ) |
Target Cluster | インポート済みの k3s クラスタ |
Target Namespace | 任意(例: default ) |
※ 作成後、Git Repos の State
が Active
になれば OK。
3-2: GitHub リポジトリにマニフェストを配置
# nginx/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-fleet
labels:
app: nginx-fleet
spec:
replicas: 1
selector:
matchLabels:
app: nginx-fleet
template:
metadata:
labels:
app: nginx-fleet
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-fleet
spec:
type: NodePort
selector:
app: nginx-fleet
ports:
- port: 80
targetPort: 80
nodePort: 31000
- GitHub に push して Fleet が自動検出できるようにする。
3-3: Git Reposから自動デプロイされることを確認
# Pod 確認
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-fleet-XXXX 1/1 Running 2 (115m ago) 5d23h
# NodePort サービス確認
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP xx.xxx.xxx.xxx <none> 443/TCP 7d2h
nginx-fleet NodePort xx.xxx.xxx.xxx <none> 80:31000/TCP 6d
3-4:GitOps による自動反映の確認
- 例1: replica 数を変更
spec:
replicas: 2
# GitHub に push
# 数分以内に Pod が2つに増加してしていることを確認
- 例2: nginx イメージタグの変更
image: nginx:1.25.0
# GitHub に push
# 自動でローリングアップデートされていることを確認
kubectl get pods -n default
NAME READY STATUS RESTARTS AGE
nginx-fleet-XXXX 1/1 Running 2 (3h5m ago) 6d
nginx-fleet-XXXX 1/1 Running 2 (3h5m ago) 6d
kubectl describe pod nginx-fleet-XXXX -n default | grep -i image
Image: nginx:1.25
Image ID: docker.io/library/nginx@sha256:XXXX
kubectl describe pod nginx-fleet-XXXX -n default | grep -i image
Image: nginx:1.25
Image ID: docker.io/library/nginx@sha256:XXXX
Step4: rancher-monitoring(Prometheus + Grafana)によるモニタリング検証
目的
- Rancher の標準監視機能である rancher-monitoring を導入し、クラスタやノードのメトリクスを可視化する。
- Grafana によるダッシュボードを確認する。
- NodePort 経由で外部から Grafana にアクセスできるように構成する。
構成概要
項目 | 内容 |
---|---|
K3s | Azure VM 上に構築し、Rancher にインポート済み |
Rancher | 別 Azure VM 上に構築(※Step1 で作成した管理基盤) |
Grafana |
rancher-monitoring 経由で自動デプロイ(NodePort で公開) |
Prometheus | 同上、Grafana とともにデプロイされる |
4-1: rancher-monitoring
の Helm Chart 導入
# KUBECONFIG を設定
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
# Helm リポジトリ追加(未追加なら)
helm repo add rancher-charts https://charts.rancher.io
helm repo update
# CRDs 先にインストール
helm upgrade --install rancher-monitoring-crd rancher-charts/rancher-monitoring-crd \
-n cattle-monitoring-system --create-namespace
# 監視本体インストール(NodePort公開設定込み)
helm upgrade --install rancher-monitoring rancher-charts/rancher-monitoring \
-n cattle-monitoring-system -f values.yaml
4-2: values.yaml 内容(NodePort + Grafana root_url 設定)
grafana:
grafana.ini:
server:
root_url: http://<Azure VMのパブリックIP>:<NodePort>
serve_from_sub_path: false
auth.anonymous:
enabled: false
service:
type: NodePort
nodePort: 30447
4-3: Grafana にアクセス
# Grafana の admin パスワード取得(ユーザー名は admin)
kubectl get secret rancher-monitoring-grafana \
-n cattle-monitoring-system -o jsonpath="{.data.admin-password}" | base64 -d; echo
# ブラウザでアクセス
http://<Azure VMのパブリックIP>:30447
4-4: ダッシュボード確認
最後に
本記事では、検証用途の最小構成で Rancher を触ってみました。
本番運用に進む際の詳細(例:Helm での本番導入、Ingress/TLS、監視・GitOps・RBAC など)は、公式ドキュメントをご参照ください。