bump py
diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml
index a56ea8b..a95d0d9 100644
--- a/.github/workflows/CI.yaml
+++ b/.github/workflows/CI.yaml
@@ -45,7 +45,7 @@
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
-          python-version: 3.8
+          python-version: 3.9
       - name: Lint codes
         run: |
           make env
@@ -65,7 +65,7 @@
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
-          python-version: 3.8
+          python-version: 3.9
       - name: Check plugin doc
         run: |
           make env
@@ -169,7 +169,7 @@
     runs-on: ubuntu-latest
     strategy:
       matrix: # may support pypy in the future
-        python-version: [ "3.8-slim", "3.9-slim", "3.10-slim", "3.11-slim", "3.12-slim", "3.13-slim" ]
+        python-version: [ "3.9-slim", "3.10-slim", "3.11-slim", "3.12-slim", "3.13-slim" ]
       fail-fast: false
     env:
       BASE_PYTHON_IMAGE: ${{ matrix.python-version }}
@@ -208,7 +208,7 @@
     timeout-minutes: 20
     strategy:
       matrix:
-        python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12", "3.13" ]
+        python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13" ]
         test-path: ${{fromJson(needs.prep-plugin-and-unit-tests.outputs.matrix)}}
       fail-fast: false
     env:
@@ -263,7 +263,7 @@
     timeout-minutes: 10
     strategy:
       matrix:
-        python-image-variant: [ "3.8-slim", "3.9-slim", "3.10-slim", "3.11-slim", "3.12-slim", "3.13-slim" ]
+        python-image-variant: [ "3.9-slim", "3.10-slim", "3.11-slim", "3.12-slim", "3.13-slim" ]
       fail-fast: false
     env:
       BASE_PYTHON_IMAGE: ${{ matrix.python-image-variant }}
@@ -300,7 +300,7 @@
     timeout-minutes: 20
     strategy:
       matrix:
-        python-image-variant: [ "3.8-slim", "3.9-slim", "3.10-slim", "3.11-slim", "3.12-slim", "3.13-slim" ]
+        python-image-variant: [ "3.9-slim", "3.10-slim", "3.11-slim", "3.12-slim", "3.13-slim" ]
         case:
           - name: gRPC-single-process
             path: tests/e2e/case/grpc/single/e2e.yaml
diff --git a/docker/Makefile b/docker/Makefile
index 8f197ab..6372516 100644
--- a/docker/Makefile
+++ b/docker/Makefile
@@ -21,35 +21,29 @@
 
 P := grpc http kafka
 
-TARGETS := py3.8 py3.9 py3.10 py3.8-slim py3.9-slim py3.10-slim
+TARGETS := py3.9 py3.10 py3.9-slim py3.10-slim
 
-py3.8: BASE_PYTHON_IMAGE = python:3.8
 py3.9: BASE_PYTHON_IMAGE = python:3.9
 py3.10: BASE_PYTHON_IMAGE = python:3.10
 py3.11: BASE_PYTHON_IMAGE = python:3.11
 py3.12: BASE_PYTHON_IMAGE = python:3.12
 py3.13: BASE_PYTHON_IMAGE = python:3.13
-py3.8-slim: BASE_PYTHON_IMAGE = python:3.8-slim
 py3.9-slim: BASE_PYTHON_IMAGE = python:3.9-slim
 py3.10-slim: BASE_PYTHON_IMAGE = python:3.10-slim
 py3.11-slim: BASE_PYTHON_IMAGE = python:3.11-slim
 py3.12-slim: BASE_PYTHON_IMAGE = python:3.12-slim
 py3.13-slim: BASE_PYTHON_IMAGE = python:3.13-slim
 
-push-py3.8: BASE_PYTHON_IMAGE = python:3.8
 push-py3.9: BASE_PYTHON_IMAGE = python:3.9
 push-py3.10: BASE_PYTHON_IMAGE = python:3.10
 push-py3.11: BASE_PYTHON_IMAGE = python:3.11
-push-py3.8-slim: BASE_PYTHON_IMAGE = python:3.8-slim
 push-py3.9-slim: BASE_PYTHON_IMAGE = python:3.9-slim
 push-py3.10-slim: BASE_PYTHON_IMAGE = python:3.10-slim
 push-py3.11-slim: BASE_PYTHON_IMAGE = python:3.11-slim
 
-push-py3.8: BUILDER_PYTHON_IMAGE = python:3.8
 push-py3.9: BUILDER_PYTHON_IMAGE = python:3.9
 push-py3.10: BUILDER_PYTHON_IMAGE = python:3.10
 push-py3.11: BUILDER_PYTHON_IMAGE = python:3.11
-push-py3.8-slim: BUILDER_PYTHON_IMAGE = python:3.8
 push-py3.9-slim: BUILDER_PYTHON_IMAGE = python:3.9
 push-py3.10-slim: BUILDER_PYTHON_IMAGE = python:3.10
 push-py3.11-slim: BUILDER_PYTHON_IMAGE = python:3.11