やりたいこと
Rancher Desktopを使って、ローカル環境のkubernetesクラスタにnginxをdeployしてローカルPCからアクセスする
環境準備
Macに公式サイトからRancher DesktopをインストールしてRancher Desktopを実行する。
Dockerを使いたかったので、コンテナエンジンをdockerにする。
kubernetes コンテキスト切り替え
Rancher Desctopをインストールした後に、以下のコマンドでコンテキストを確認したらrancher-desktopのコンテキストが作られてた。
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* rancher-desktop rancher-desktop rancher-desktop
コンテキストがあるので、コンテキスト切り替えRancher Desktopにコンテキスト切り替え
$ kubectl config use-context rancher-desktop
Switched to context "rancher-desktop".
#カレントコンテキストの確認
% kubectl config current-context
rancher-desktop
試しにnamespaceを確認してみるとなんか動いてそうだった。
$ kubectl get namespace
NAME STATUS AGE
default Active 9d
kube-system Active 9d
kube-public Active 9d
kube-node-lease Active 9d
とりあえずnginxをデプロイしてみる
$ kubectl run nginx --port=80 --image=nginx
pod/nginx created
#pod確認
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 74s
動いてそう!!
ローカルからアクセスしたいので、ポートフォワードすればいいのかと思い、一応Rancher DesktopのPort Forwardingを確認してみる。
とりあえずまだ表示されてなかった。
サービスがないので当然かなと思いつつ、サービスを作成してみます。
サービス作成
kubectl exposeでサービス作成します。
$ kubectl expose pod nginx --port=8888 --target-port=80 --type=NodePort
service/nginx exposed
service/nginx exposed
#確認
kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 9d
nginx NodePort 10.43.69.34 <none> 8888:32244/TCP 59s
もう一度Rancher Desktopで確認するとnginxが表示されました。
Forward
をクリックしてportがデフォ値で入っていたのでそのまま「チェック」ボタンで設定する。
#最後にローカル環境から疎通確認
curlで疎通確認してみる。localhostの↑で設定した52595 ポートにアクセスしてみる。
$curl http://localhost:52595
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
お、なんか無事出来ました。