1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Kubernetes】Pod内のnginxにローカルのhtmlファイルを表示させる

Posted at

はじめに

<バージョン>
minikube: v1.9.2

 前回の記事、【AWS】Docker内のコンテナにアクセスしたいではdockerコマンドで
httpdにアクセスしましたが、今回はそれをKubernetesで行ってみます。
やりたいこととしては、
(1)ローカルストレージ「/data/html」に、Pod内にあるnginxのディレクトリ
  「/usr/share/nginx/html」をマウントする。
(2)ローカルの「/data/html/index.html」をnginxに表示させる。
※今回は、ローカルPCにVMを作成して作業しています(AWSに構築していません)

1.マニフェストファイル作成

 まずはホームディレクトリ(任意)に以下のマニフェストファイルを作成します。
ポイント
(1)docker imageをdockerhubから持ってくる。
(2)ローカルストレージ「/data/html」に、Pod内にあるnginxのディレクトリ
  「/usr/share/nginx/html」をマウントする。
(3)serviceの種類をNodePortにして、外部からの接続ポート(今回は30000番)を指定する。

nginx-test.yml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: web
    env: test
spec:
  containers:
  - name: nginx
    image: nginx:1.17.2-alpine    # ポイント(1)
    volumeMounts:
    - name: storage
      mountPath: /usr/share/nginx/html    # ポイント(2)
  volumes:
  - name: storage
    hostPath:
      path: "/data/html"    # ポイント(2)
      type: Directory

---
apiVersion: v1
kind: Service
metadata:
  name: web-test
spec:
  type: NodePort     # ポイント(3)
  selector:
    app: web
    env: test
  ports:
  - port: 80
    nodePort: 30000     # ポイント(3)

2. htmlファイル作成

 以下の手順でローカルにindex.htmlを作成します。

mkdir -p /data/html
echo "hello world!" > /data/html/index.html

3. nginxの起動

まずは「kubectl apply」のコマンドでnginxを起動させます。
-f で作成したマニフェストファイルを指定します。

kubectl apply -f nginx-test.yml

nginxを起動させたら、「kubectl get」コマンドで状態確認をします。

[root@localhost ~]# kubectl get -f nginx-test.yml 
NAME        READY   STATUS    RESTARTS   AGE
pod/nginx   1/1     Running   0          3s    # STATUSがRunningになっている

NAME               TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/web-test   NodePort   <ip-addr>   <none>        80:30000/TCP   3s    # ポートフォワーディングが適用されている

実際にPodにアクセスしてマウントされているか確認しましょう。
コマンドは「kubectl exec -it pod/ sh」です。

[root@localhost ~]# kubectl exec -it pod/nginx sh
/ # cd /usr/share/nginx/html
/usr/share/nginx/html # ls
index.html               # ファイルがマウントされていることを確認
/usr/share/nginx/html # cat index.html
hello world!                    # ファイルの中身が正しいことを確認
/usr/share/nginx/html # exit    # exitでPodから抜ける
[root@localhost ~]# 

4. webサイトへアクセス

 ブラウザを起動してアクセスし、「hello world!」が表示されたら完了です。
URLは「http://<作業端末ののIPアドレス>:30000」です。
ちなみに、ローカルでも確認することが可能です。

[root@localhost ~]# curl http://localhost:30000
hello world!

参考資料

dockerhub - nginx
Kubernetes道場 9日目 - Serviceについて

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?