Kubernetes上にデプロイされたNginxの中身をいじりたいとき


はじめに

この記事は既にNginxをKubernetes上にデプロイしている前提でスタートします.
Kubernetesの構築方法やNginxのデプロイ方法については他記事(※今後記事を追加するかもしれません)をご参照ください.

クラスターのサーバーバージョン:v1.20.5-34+40f5951bd9888a

Nginxの中身を見る

現在立っているpodを確認

$ kubectl get pods -A
NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE
default                nginx-pod                                    1/1     Running   0          4h22m

私の場合はNamaspace:default(指定なし), サービス名:nginx-podと設定しています.

podへアクセス

下記コマンドを使ってpodへアクセスする

$ kubectl exec -it nginx-pod(サービス名) /bin/bash

もしstat /bin/bash: no such file or directory: unknownのようなエラーが発生した場合は

$ kubectl exec -it nginx-pod(サービス名) /bin/ash

/bin/bash を /bin/ash へ変更して実行してください.

上記コマンドを実行すると

/ #

のように出力されていればOKです.

試しにlsコマンドを使ってみます.

/ # ls
bin    dev    etc    home   lib    media  mnt    proc   root   run    sbin   srv    sys    tmp    usr    var

フォルダが見れました

nginxのデフォルトのコンフィグファイルを確認

nginxのデフォルトのコンフィグファイルを確認したい場合は下記.

/ # cat /etc/nginx/conf.d/hello.conf
server {
    listen 80;

    root /usr/share/nginx/html;
    try_files /index.html =404;

    expires -1;

    sub_filter_once off;
    sub_filter 'server_hostname' '$hostname';
    sub_filter 'server_address' '$server_addr:$server_port';
    sub_filter 'server_url' '$request_uri';
    sub_filter 'server_date' '$time_local';
    sub_filter 'request_id' '$request_id';
}

ちゃんと確認できています.

もしrootを/var/www/html/等に変更した場合はリロードをする必要がありますがsystemctlserviceコマンドが使えないので下記コマンドでリロードできます.

/ # nginx -s reload

ページにアクセスしてみる

http://localhost:xxx/(アドレスやポートは各々によって変更してください)

デフォルトでこのような画面が見れればOKですね

終わりに

本当はデプロイする際に設定を変更するのがいいらしいですが,ひとまずこの方法で色々できるんだとわかりました.