使用Alpine Linux构建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(以及同时创建Service)。

[root@t_kyn029 apachedocker]# kubectl apply -f apache-deployment.yml
service/apache-service created
deployment.apps/apache-deployment created
[root@t_kyn029 apachedocker]# 

确认联络

试着从主操作系统上运行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]# 

以上。

广告
将在 10 秒后关闭
bannerAds