alphineLinuxを用いたk8s構築（web/ap/dbサーバ）～Apacheのイメージビルド・DeploymentPod作成編～

## 目的
公開するWebサーバの前段にIngressを構築したら、
Tomcat転送するための設定も追加したApache(httpd)のPodを作成するためです。

## 事前準備・構築方法
* Apache（t_kyn_apache）イメージは、15.4MBしかなく非常に軽量です
Alpineline3.17に、必要なものをインストールしたうえで、ビルドしています。
https://hub.docker.com/_/httpd/tags

* Dockerfile
```
FROM alpine:3.17

RUN apk add apache2; \
    apk add apache2-ssl; \
    apk add apache2-proxy; \
    apk add apache2-http2;

COPY httpd.conf /etc/apache2/httpd.conf
COPY optionalconf/httpd-proxy.conf /etc/apache2/conf.d/httpd-proxy.conf
COPY htdocs /var/www/localhost/htdocs

EXPOSE 【★Apacheの起動ポート★】

# ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["httpd", "-D", "FOREGROUND"]
```

* ビルドに関しては以下のコマンドで実行します。
`
docker build -t t_kyn_apache .
`
ここで、設定ファイルについてカスタマイズが必要なので、以下の通りカスタマイズしますが、
注意点として、以下がありますので確認の上修正します。
* httpd.conf /etc/apache2/httpd.conf
※起動ポートを修正（Podを起動する際のhttpdプロセスのポートと合わせないと起動に失敗します。

* optionalconf/httpd-proxy.conf /etc/apache2/conf.d/httpd-proxy.conf
※httpd-proxy.confで、転送先ポートTomcatの起動ポートへ指定しないと
HTTP通信を転送できません。

* htdocs /var/www/localhost/htdocs
静的コンテンツファイルを配置しないと、404エラーになることがあります。
とはいえ、静的コンテンツのアクセス想定がなければそのままでもOKです。
（本作業では、静的コンテンツは、予めコンテナホスト上に用意したファイルを
コンテナにコピー（配布）します。
今回取り上げないですが、コンテナホスト上のディレクトリをマウントし、
複数のコンテナから静的コンテンツ自体を共有することも可能です。）

## 実施内容
イメージを作成（ビルド）します。

```
[root@t_kyn029 apachedocker]# docker image build -t t_kyn_apache:v1.1.0 .
Sending build context to Docker daemon  32.26kB
Step 1/7 : FROM alpine:3.17
 ---> 9ed4aefc74f6
Step 2/7 : RUN apk add apache2;     apk add apache2-ssl;     apk add apache2-proxy;     apk add apache2-http2;
 ---> Running in f703492ed7b1
fetch https://dl-cdn.alpinelinux.org/alpine/v3.17/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.17/community/x86_64/APKINDEX.tar.gz
(1/6) Installing libuuid (2.38.1-r1)
(2/6) Installing apr (1.7.2-r0)
(3/6) Installing libexpat (2.5.0-r0)
(4/6) Installing apr-util (1.6.3-r0)
(5/6) Installing pcre (8.45-r2)
(6/6) Installing apache2 (2.4.57-r0)
Executing apache2-2.4.57-r0.pre-install
Executing busybox-1.35.0-r29.trigger
OK: 11 MiB in 21 packages
(1/2) Installing openssl (3.0.8-r3)
(2/2) Installing apache2-ssl (2.4.57-r0)
Executing apache2-ssl-2.4.57-r0.post-install
Executing busybox-1.35.0-r29.trigger
OK: 12 MiB in 23 packages
(1/1) Installing apache2-proxy (2.4.57-r0)
OK: 13 MiB in 24 packages
(1/2) Installing nghttp2-libs (1.51.0-r0)
(2/2) Installing apache2-http2 (2.4.57-r0)
OK: 13 MiB in 26 packages
Removing intermediate container f703492ed7b1
 ---> b77f3945630e
Step 3/7 : COPY httpd.conf /etc/apache2/httpd.conf
 ---> 942ae5fc3518
Step 4/7 : COPY optionalconf/httpd-proxy.conf /etc/apache2/conf.d/httpd-proxy.conf
 ---> b509ac7a2097
Step 5/7 : COPY htdocs /var/www/localhost/htdocs
 ---> ba0f07cfe61d
Step 6/7 : EXPOSE 80
 ---> Running in ad2e35364c94
Removing intermediate container ad2e35364c94
 ---> 7995b199df85
Step 7/7 : CMD ["httpd", "-D", "FOREGROUND"]
 ---> Running in 225896fd31ba
Removing intermediate container 225896fd31ba
 ---> 0a2b4277df31
Successfully built 0a2b4277df31
Successfully tagged t_kyn_apache:v1.1.0
[root@t_kyn029 apachedocker]# 

```

Kubectlのapplyで、マニフェストファイルで定義する
ApacheDeploymentを作成。
（ついでにServiveも作成。）
```
[root@t_kyn029 apachedocker]# kubectl apply -f apache-deployment.yml
service/apache-service created
deployment.apps/apache-deployment created
[root@t_kyn029 apachedocker]# 
```

## 疎通確認
試しにホストOS上から、curlを実行する。
```
[root@t_kyn029 fluentddocker]# curl http://[★IPアドレス][ポート番号]/
<html><body><h1>It works!ORIGINAL_HOGE_TEST</h1></body></html>
[root@t_kyn029 fluentddocker]#
```

## 事後作業
どっちでもよいですが、削除するのであれば、
kubectl delete -f apache-deployment.yml
を実行します。
```
[root@t_kyn029 apachedocker]# kubectl delete -f apache-deployment.yml
service "apache-service" deleted
deployment.apps/apache-deployment deleted
[root@t_kyn029 apachedocker]# 
```

以上です。