From 35f993b53051e677262c7ba8f878d77e2b994897 Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Sat, 4 Nov 2023 22:13:02 +0100 Subject: [PATCH 1/4] Testing kubernetes ci --- .drone.yml | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index be8f349..e1215e7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,19 +8,19 @@ platform: arch: amd64 steps: - - name: lint + - name: Lint project image: node:21-alpine3.17 commands: - yarn - yarn lint - - name: build + - name: Build app image: node:21-alpine3.17 commands: - yarn - yarn build - - name: Build and publish docker image + - name: Publish docker image image: plugins/docker settings: registry: ghcr.io @@ -39,3 +39,32 @@ steps: - pull_request branch: - main + + - name: Deploy app to kubernetes + image: alpine/k8s:1.25.15 + commands: + - kubectl config set-cluster $KUBE_CLUSTER --server=$KUBE_SERVER + - kubectl config set-credentials $KUBE_USER --token=$KUBE_TOKEN + - kubectl config set-context $KUBE_CONTEXT --cluster=$KUBE_CLUSTER --user=$KUBE_USER + - kubectl config use-context $KUBE_CONTEXT + - kubectl get pods + environment: + KUBE_CLUSTER: + from_secret: KUBE_CLUSTER + KUBE_USER: + from_secret: KUBE_USER + KUBE_SERVER: + from_secret: KUBE_SERVER + KUBE_TOKEN: + from_secret: KUBE_TOKEN + KUBE_CONTEXT: + from_secret: KUBE_CONTEXT + when: + event: + include: + - push + exclude: + - pull_request + branch: + - main + - kube From 114a715285a1cfe2fe867aa2542301ed54d68374 Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Sat, 4 Nov 2023 23:13:25 +0100 Subject: [PATCH 2/4] Created pipeline for deploy, use .kube/config --- .drone.yml | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/.drone.yml b/.drone.yml index e1215e7..fd82b5c 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,7 +1,7 @@ --- kind: pipeline type: docker -name: Build and publish +name: Build platform: os: linux @@ -40,25 +40,25 @@ steps: branch: - main +--- +kind: pipeline +type: docker +name: Deploy + +platform: + os: linux + arch: amd64 + +steps: - name: Deploy app to kubernetes image: alpine/k8s:1.25.15 commands: - - kubectl config set-cluster $KUBE_CLUSTER --server=$KUBE_SERVER - - kubectl config set-credentials $KUBE_USER --token=$KUBE_TOKEN - - kubectl config set-context $KUBE_CONTEXT --cluster=$KUBE_CLUSTER --user=$KUBE_USER - - kubectl config use-context $KUBE_CONTEXT - - kubectl get pods + - mkdir -p /root/.kube + - echo $KUBE_CONFIG | base64 -di > /root/.kube/config + - kubectl --kubeconfig=/root/.kube/config get pods environment: - KUBE_CLUSTER: - from_secret: KUBE_CLUSTER - KUBE_USER: - from_secret: KUBE_USER - KUBE_SERVER: - from_secret: KUBE_SERVER - KUBE_TOKEN: - from_secret: KUBE_TOKEN - KUBE_CONTEXT: - from_secret: KUBE_CONTEXT + KUBE_CONFIG: + from_secret: KUBE_CONFIG when: event: include: @@ -68,3 +68,6 @@ steps: branch: - main - kube + +depends_on: + - Build From d4cb81397f7d0698f06052b034e57b1835c96368 Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Sat, 4 Nov 2023 23:24:51 +0100 Subject: [PATCH 3/4] Kuberentes ns, deploy & service files --- .drone.yml | 2 +- .kubernetes/0-namespace.yml | 5 +++++ .kubernetes/deployment.yml | 39 +++++++++++++++++++++++++++++++++++++ .kubernetes/service.yml | 18 +++++++++++++++++ 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 .kubernetes/0-namespace.yml create mode 100644 .kubernetes/deployment.yml create mode 100644 .kubernetes/service.yml diff --git a/.drone.yml b/.drone.yml index fd82b5c..76ffb96 100644 --- a/.drone.yml +++ b/.drone.yml @@ -55,7 +55,7 @@ steps: commands: - mkdir -p /root/.kube - echo $KUBE_CONFIG | base64 -di > /root/.kube/config - - kubectl --kubeconfig=/root/.kube/config get pods + - kubectl --kubeconfig=/root/.kube/config apply -f .kubernetes environment: KUBE_CONFIG: from_secret: KUBE_CONFIG diff --git a/.kubernetes/0-namespace.yml b/.kubernetes/0-namespace.yml new file mode 100644 index 0000000..60d7e43 --- /dev/null +++ b/.kubernetes/0-namespace.yml @@ -0,0 +1,5 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: k9e diff --git a/.kubernetes/deployment.yml b/.kubernetes/deployment.yml new file mode 100644 index 0000000..29c2875 --- /dev/null +++ b/.kubernetes/deployment.yml @@ -0,0 +1,39 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + deployment.kubernetes.io/revision: '1' + labels: + app: k9e + name: k9e + namespace: k9e +spec: + progressDeadlineSeconds: 600 + replicas: 2 + revisionHistoryLimit: 10 + selector: + matchLabels: + app: k9e + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + creationTimestamp: null + labels: + app: k9e + spec: + containers: + - image: ghcr.io/kevinmidboe/k9e.no:latest + imagePullPolicy: IfNotPresent + name: k9e + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 diff --git a/.kubernetes/service.yml b/.kubernetes/service.yml new file mode 100644 index 0000000..5986f38 --- /dev/null +++ b/.kubernetes/service.yml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: k9e + name: k9e-service + namespace: k9e +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 80 + selector: + app: k9e + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} From 8cb98f0848642986349448670379eafff5c49111 Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Sat, 4 Nov 2023 23:39:24 +0100 Subject: [PATCH 4/4] Seperated install, lint and build steps --- .drone.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.drone.yml b/.drone.yml index 76ffb96..4d0529f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,19 +8,22 @@ platform: arch: amd64 steps: + - name: Install dependencies + image: node:21-alpine3.17 + commands: + - yarn + - name: Lint project image: node:21-alpine3.17 commands: - - yarn - yarn lint - - name: Build app + - name: Build image: node:21-alpine3.17 commands: - - yarn - yarn build - - name: Publish docker image + - name: Publish to ghcr image: plugins/docker settings: registry: ghcr.io @@ -50,7 +53,7 @@ platform: arch: amd64 steps: - - name: Deploy app to kubernetes + - name: Deploy to kubernetes image: alpine/k8s:1.25.15 commands: - mkdir -p /root/.kube @@ -67,7 +70,6 @@ steps: - pull_request branch: - main - - kube depends_on: - Build