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を利用したい時などにこの方法を利用しています。良かったら参考にしてみて下さい。