From b6dbcefa0f0aea1c6c402bbc509ea0c5d850d23f Mon Sep 17 00:00:00 2001 From: cdchen Date: Sat, 20 Jun 2026 02:00:45 +0800 Subject: [PATCH] Add Kubernetes Helm deployment pipeline --- .drone.yml | 17 ++++++++++------- chart/Chart.yaml | 6 ++++++ chart/templates/deployment.yaml | 27 +++++++++++++++++++++++++++ chart/templates/service.yaml | 17 +++++++++++++++++ chart/values.yaml | 19 +++++++++++++++++++ 5 files changed, 79 insertions(+), 7 deletions(-) create mode 100644 chart/Chart.yaml create mode 100644 chart/templates/deployment.yaml create mode 100644 chart/templates/service.yaml create mode 100644 chart/values.yaml diff --git a/.drone.yml b/.drone.yml index d3a1827..84a0b06 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,13 +1,13 @@ kind: pipeline type: docker -name: backend-docker +name: backend-k8s clone: depth: 50 trigger: branch: - - docker + - k8s event: - push @@ -15,10 +15,13 @@ steps: - name: build-image image: docker.m.daocloud.io/library/docker:27-cli commands: - - docker build -t cdchen-backend:docker . + - docker build -t cdchen-backend:k8s-${DRONE_COMMIT_SHA:0:8} . - - name: deploy - image: docker.m.daocloud.io/library/docker:27-cli + - name: deploy-k8s + image: cdchen-k8s-tools:latest + network_mode: teaching-k8s + environment: + HOME: /home/cdchen commands: - - docker rm -f cdchen-backend || true - - docker run -d --name cdchen-backend --restart unless-stopped --network gitea_default -p 8089:8080 cdchen-backend:docker + - minikube image load cdchen-backend:k8s-${DRONE_COMMIT_SHA:0:8} -p teaching-k8s + - helm upgrade --install backend ./chart --namespace demo --create-namespace --set image.repository=cdchen-backend --set image.tag=k8s-${DRONE_COMMIT_SHA:0:8} diff --git a/chart/Chart.yaml b/chart/Chart.yaml new file mode 100644 index 0000000..9463d1e --- /dev/null +++ b/chart/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v2 +name: backend +description: Backend teaching chart +type: application +version: 0.1.0 +appVersion: "0.1.0" diff --git a/chart/templates/deployment.yaml b/chart/templates/deployment.yaml new file mode 100644 index 0000000..a882504 --- /dev/null +++ b/chart/templates/deployment.yaml @@ -0,0 +1,27 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }} + labels: + app.kubernetes.io/name: {{ .Chart.Name }} + app.kubernetes.io/instance: {{ .Release.Name }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app.kubernetes.io/name: {{ .Chart.Name }} + app.kubernetes.io/instance: {{ .Release.Name }} + template: + metadata: + labels: + app.kubernetes.io/name: {{ .Chart.Name }} + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: backend + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - containerPort: 8080 + resources: + {{- toYaml .Values.resources | nindent 12 }} diff --git a/chart/templates/service.yaml b/chart/templates/service.yaml new file mode 100644 index 0000000..4bec65a --- /dev/null +++ b/chart/templates/service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ .Release.Name }} + labels: + app.kubernetes.io/name: {{ .Chart.Name }} + app.kubernetes.io/instance: {{ .Release.Name }} +spec: + type: {{ .Values.service.type }} + selector: + app.kubernetes.io/name: {{ .Chart.Name }} + app.kubernetes.io/instance: {{ .Release.Name }} + ports: + - name: http + port: {{ .Values.service.port }} + targetPort: 8080 + nodePort: {{ .Values.service.nodePort }} diff --git a/chart/values.yaml b/chart/values.yaml new file mode 100644 index 0000000..b1b950c --- /dev/null +++ b/chart/values.yaml @@ -0,0 +1,19 @@ +replicaCount: 1 + +image: + repository: cdchen-backend + tag: latest + pullPolicy: IfNotPresent + +service: + type: NodePort + port: 8080 + nodePort: 30089 + +resources: + requests: + cpu: 200m + memory: 256Mi + limits: + cpu: 600m + memory: 512Mi