1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rancherを試してみる

Last updated at Posted at 2025-09-30

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-BK3s をインストールし、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 へのアクセス(初期設定、ログイン)

スクリーンショット 2025-09-30 19.52.18.png


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 になれば成功です。

Cluster Management.png

Import.png

実行コマンド.png

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"となります。

Cluster Status.png

Cluster Capacity.png

2-4: クラスタの削除と K3s のアンインストール

  • Rancher 側からの削除
    • Rancher UI → 対象クラスタ → 削除

クラスタ削除画面.png

クラスタ削除後.png

  • 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 の StateActive になれば OK。

Git Repos.png

Git Repos_create.png

Git Repos_edit.png

Git Repos Deploy.png

Git Repos Deploy後.png

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

Git Repos 自動デプロイ.png

3-4:GitOps による自動反映の確認

  • 例1: replica 数を変更

Replica数変更.png

spec:
  replicas: 2

# GitHub に push
# 数分以内に Pod が2つに増加してしていることを確認  
  • 例2: nginx イメージタグの変更

nginxイメージタグの変更.png

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

Git Ops 自動反映後.png

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

Grafanaログイン画面.png

4-4: ダッシュボード確認

Grafanaダッシュボード1.png

Grafanaダッシュボード2.png

Grafanaダッシュボード3.png

Grafanaダッシュボード4.png

最後に

本記事では、検証用途の最小構成で Rancher を触ってみました。
本番運用に進む際の詳細(例:Helm での本番導入、Ingress/TLS、監視・GitOps・RBAC など)は、公式ドキュメントをご参照ください

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?