0. 前提

  • minikube, Docker, Nginxに関する基礎的な知識があるとなお良いです

1. 動作環境

  • EC2(t3.2xlarge)
  • Ubuntu 20.04.2
  • Docker 20.10.9
  • minikube v1.23.2
  • Nginx 1.18.0

2. リモートサーバでMinikubeを起動する

minikube start --driver=docker

3. 外部に公開したいServiceをリモートサーバにType NodePortでデプロイする

  • 正常にデプロイできているか確認する
ubuntu@ip-172-31-24-235:~/tmp/faas-netes$ kubectl get svc -A
NAMESPACE     NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes          ClusterIP   10.96.0.1       <none>        443/TCP                  3m30s
kube-system   kube-dns            ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP   3m29s
openfaas      gateway-external    NodePort    10.98.7.182     <none>        8080:31112/TCP           53s
  • リモートサーバ上でcurlでアクセスできるか確認します。
ubuntu@ip-172-31-24-235:~/tmp/faas-netes$ minikube ip
192.168.49.2

ubuntu@ip-172-31-24-235:~/tmp/faas-netes$ curl 192.168.49.2:31112
<a href="/ui/">Moved Permanently</a>.

4. Nginxをリモートサーバ上にインストールする

sudo apt update
sudo apt install nginx

5. NginxにリバースProxyの設定を入れる

  • /etc/nginx/nginx.conf に下記の内容を記載する。listenにはリモートサーバのIPアドレスを、proxyにはminikube ipで確認したIPアドレスを記載する
stream {
  server {
      listen 172.31.24.235:51999;
      #TCP traffic will be forwarded to the specified server
      proxy_pass 192.168.49.2:31112;
  }
}
  • nginx.confのファイルの構文チェックを行い、Nginxを再起動する
sudo nginx -t
sudo systemctl restart nginx

6. ローカルサーバーからアクセスしてみる。

<リモートサーバのIPアドレス>:51999 # EC2のグローバルIP

をwebブラウザで開く。

7. 最後に

これでリモートサーバ上のMinikubeで公開しているアプリにもアクセスすることができます。私はM1チップのMacを利用しており、x86_64のサーバ上でMinikubeを利用したい時などにこの方法を利用しています。良かったら参考にしてみて下さい。

. 参考にしたサイト