LoginSignup
0
1

More than 5 years have passed since last update.

VirtualBox上のminikubeにhttp://localhost:xxxxでアクセスする

Posted at

Minikube in VirtualBox on Windows10 な環境で、Minikubeにhttp://localhost:xxxxでアクセスできるようにしたメモ

長いよ!

  • minikube addons enable ingress
  • nginx.ingress.kubernetes.io/ssl-redirect: "false"
  • VMの80にポートフォワード

環境

  • Windows 10 Home 1809
  • virtualBox v5.2.22
  • minikube v0.30.0

アプデさぼってるな...

発端

普通にMinikubeのGetting Startをやっていると、type: NodePortなServiceにアクセスするためにminikube service <service-name> --urlでURLを払い出す記述がどこかで見つかると思う。
ここで吐き出されるIPアドレスはたぶん192.168.99.100で、後ろに適当な30000番台のポート番号がくっついていることだろう。
このURLを叩けばアクセスできることにはできるのだけれど、困る。

というのも、どこの馬の骨とも知れぬプライベートIPアドレスとlocalhostとではブラウザ様の挙動に雲泥の差があるからだ。
具体的には、HTTPであってもlocalhostはセキュアなものとして扱ってくれる。今日のWebはHTTPSが基本。各種Web APIもセキュアな環境でないと動いてくれないとかよくあるのでマジ重要なのだ。

なのでlocalhostでアクセスしたい。こういうときはVirtualBoxのVMの設定でポートフォワードすればいいというのはふんわりと知っていたのだけれど、いかんせん適当に吐き出されるポート番号相手にどうしたものか分からず苦戦した。
"Minikube windows virtualbox localhost"といった検索ワードでggり倒したけれどそれらしい情報が全然見つからず辛い思いをした。

ふとtype: LoadBalancerなる記述に踊らされ、関連してIngressという単語を拾い検索ワードを弄っていると、Minikube で快適に Ingress を利用するという記事を見つけ、参考になった。

Ingress

Ingressが何か全くわからなかったためちょっと調べた。

K8s on Vagrant, NGINX Ingress Controller の利用を参考にすると、クラスタ外部からクラスタ内のサービスにアクセスを橋渡しして、ロードバランシングやSSLの終端を担う存在らしい。k8sでのリバースプロキシみたいな存在なのかな。

MinikubeのIngressアドオン

Minikube で快適に Ingress を利用するに立ち返り、書かれている手順に倣ってIngressを導入する。

まずはMinikubeにIngressアドオンを入れる。minikube addons enable ingressを打ってお茶を淹れてくるだけ。

まったりしている間にnginx-ingress-controllerやらの展開が終わったのを確認して、Ingressの設定を投げる。

ほぼコピペだったけれど、ちょこちょこ弄っている。

k8s-nginx-ingress.yml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - host: localhost
    http:
      paths:
      - backend:
          serviceName: nginx-service
          servicePort: 80

実のところどういう意味かは執筆時点で全然理解できていないけれどこれで動いたのでヨシ。

元記事の定義との変更点は、片方はannotationのnginx.ingress.kubernetes.io/ssl-redirect: "false"
デフォルトの動作だとHTTPSにフォースリダイレクトされてしまったため、ユーザーガイドに従って動作を変更した。
ConfigMapで行う方法とannotationで行う方法が示されていて、今回は後者。ConfigMapはaddonが勝手に入れているようだけれど、弄れるのか?

もう一つの変更はホストの指定。
参考にした記事の設定ではnginx.minikube.devというホスト名を設定し、dnsmasqでそのホスト名で名前解決するようにしていたけれど、今回はlocalhostからポートフォワードして入るため、こんな記述にしてみている。
nginxの知識もIngressの知識も無く、ホスト名の設定がどこにどう利くのかよく理解できていないから、これでいいのかは分からない。どうせホビープロジェクトだし困ってから考える。

あとはVMでポートフォワードの設定をし、ブラウザからhttp://localhost:xxxxにアクセスして指定したServiceに案内されたら成功。
ブラウザのキャッシュを無効化せずに叩いてhttpsに案内されたのにハマったのは内緒だ。一度httpsに通されると勝手にhttps向くんだね。

最後に

k8s全然わかんない

0
1
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
0
1