Httpd Deploy in Kubernetes

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

This is a procedure to deploy httpd as a pod in Kubernetes and make it serve content form a local directory, mounted as "hostPath". The procedure was written using Docker Desktop Kubernetes.

Playground

https://github.com/ovidiuf/playground/tree/master/kubernetes/httpd-serving-local-hostPath

Procedure

Local Directory

Create a local directory that will host the content to be served by httpd.

mkdir ~/runtime/httpd-root

Pod and Service Manifest

apiVersion: v1
kind: Pod
metadata:
  name: 'httpd-local'
  labels:
    function: 'httpd-server'
spec:
  containers:
  - name: 'httpd'
    image: docker.io/ovidiufeodorov/httpd:latest
    volumeMounts:
      - name: 'httpd-local-root'
        mountPath: '/usr/local/apache2/htdocs'
  volumes:
    - name: 'httpd-local-root'
      hostPath:
        path: /Users/ovidiu/runtime/httpd-root
---
apiVersion: v1
kind: Service
metadata:
  name: 'httpd-local'
spec:
  type: 'LoadBalancer'
  selector:
    function: 'httpd-server'
  ports:
    - name: 'http'
      protocol: 'TCP'
      port: 80
      targetPort: 80

Deploy

kubectl apply -f ./httpd.yaml

Undeploy

kubectl delete pod httpd-local
kubectl delete service httpd-local

Logs

httpd container image is configured to generate error and access logs at stdout/stderr.