diff --git a/.drone.yml b/.drone.yml index 1533916..b3109d2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,17 +4,9 @@ type: kubernetes name: build clone: - disable: true + disable: false steps: - - name: git clone - image: drone/git - environment: - REPO_URL: http://gitea-server.gitea.svc.cluster.local:3000/mngomalab/sampleapi.git - commands: - - git clone $REPO_URL . - - git checkout $DRONE_COMMIT - - name: dotnet restore image: mcr.microsoft.com/dotnet/sdk:8.0 commands: @@ -30,7 +22,6 @@ steps: image: mcr.microsoft.com/dotnet/sdk:8.0 commands: - dotnet test --configuration Release - --- kind: pipeline type: kubernetes @@ -43,14 +34,6 @@ clone: disable: true steps: - - name: git clone - image: drone/git - environment: - REPO_URL: http://gitea-server.gitea.svc.cluster.local:3000/mngomalab/sampleapi.git - commands: - - git clone $REPO_URL . - - git checkout $DRONE_COMMIT - - name: dotnet publish image: mcr.microsoft.com/dotnet/sdk:8.0 commands: @@ -70,7 +53,6 @@ steps: from_secret: registry-password dockerfile: Dockerfile context: ./SampleApi/bin/Release/net8.0/publish/ - --- kind: pipeline type: kubernetes @@ -83,22 +65,17 @@ clone: disable: true steps: - - name: git clone - image: drone/git - environment: - REPO_URL: http://gitea-server.gitea.svc.cluster.local:3000/mngomalab/sampleapi.git - commands: - - git clone $REPO_URL . - - git checkout $DRONE_COMMIT - - - name: deploy - image: danielgormly/drone-plugin-kube:0.0.1 + - name: deploy via SSH + image: appleboy/drone-ssh settings: - serviceAccountName: droneci-sa - template: ./manifests/deploy.yml - namespace: sampleapi - ca: - from_secret: k8s-cert - server: https://lead.mngoma.lab:6443 - token: - from_secret: k8s-token + host: lead.mngoma.lab + username: + from_secret: host-username + password: + from_secret: host-password + port: 22 + script: + - set -euo pipefail + - echo "Applying Kubernetes manifest via SSH..." + - cat ./manifests/deploy.yml | kubectl apply -f - + - echo "Manifest applied successfully." diff --git a/manifests/deploy.yml b/manifests/deploy.yml index b3109d2..9d8e0f0 100644 --- a/manifests/deploy.yml +++ b/manifests/deploy.yml @@ -1,81 +1,99 @@ --- -kind: pipeline -type: kubernetes -name: build - -clone: - disable: false - -steps: - - name: dotnet restore - image: mcr.microsoft.com/dotnet/sdk:8.0 - commands: - - dotnet restore - - - name: dotnet build - image: mcr.microsoft.com/dotnet/sdk:8.0 - commands: - - dotnet build --configuration Release - - ls ./SampleApi/bin/Release/net8.0/ - - - name: dotnet test - image: mcr.microsoft.com/dotnet/sdk:8.0 - commands: - - dotnet test --configuration Release +apiVersion: v1 +kind: Namespace +metadata: + name: experiments + labels: + name: experiments --- -kind: pipeline -type: kubernetes -name: package - -depends_on: - - build - -clone: - disable: true - -steps: - - name: dotnet publish - image: mcr.microsoft.com/dotnet/sdk:8.0 - commands: - - dotnet publish --configuration Release - - ls ./SampleApi/bin/Release/net8.0/publish/ - - - name: docker build and push - image: plugins/docker - settings: - repo: registry-server.registry.svc.cluster.local:5000/sampleapi - auto_tag: true - registry: registry-server.registry.svc.cluster.local:5000 - insecure: true - username: - from_secret: registry-username - password: - from_secret: registry-password - dockerfile: Dockerfile - context: ./SampleApi/bin/Release/net8.0/publish/ +apiVersion: v1 +kind: ConfigMap +metadata: + name: sampleapi-config + namespace: experiments +data: + appname: "SampleApi" --- -kind: pipeline -type: kubernetes -name: deploy - -depends_on: - - package - -clone: - disable: true - -steps: - - name: deploy via SSH - image: appleboy/drone-ssh - settings: - host: lead.mngoma.lab - username: - from_secret: host-username - password: - from_secret: host-password - port: 22 - script: - - set -euo pipefail - - echo "Applying Kubernetes manifest via SSH..." - - cat ./manifests/deploy.yml | kubectl apply -f - - - echo "Manifest applied successfully." +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sampleapi + namespace: experiments + labels: + app: sampleapi +spec: + replicas: 1 + selector: + matchLabels: + app: sampleapi + template: + metadata: + labels: + app: sampleapi + spec: + containers: + - name: sampleapi + image: registry.registry.svc.cluster.local:5000/experiments/sampleapi:latest + imagePullPolicy: Always + ports: + - name: http + containerPort: 8080 + - name: https + containerPort: 8081 + resources: + requests: + memory: "128Mi" + cpu: "250m" + limits: + memory: "256Mi" + cpu: "500m" +--- +apiVersion: v1 +kind: Service +metadata: + name: sampleapi + namespace: experiments +spec: + type: ClusterIP + selector: + app: sampleapi + ports: + - name: http + port: 80 + targetPort: 8080 + - name: https + port: 443 + targetPort: 8081 +--- +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: sampleapi-http + namespace: experiments +spec: + entryPoints: + - web + routes: + - match: Host(`sampleapi.apps.mngoma.lab`) + kind: Rule + services: + - name: sampleapi + port: 80 + scheme: http +--- +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: sampleapi-https + namespace: experiments +spec: + entryPoints: + - websecure + routes: + - match: Host(`sampleapi.apps.mngoma.lab`) + kind: Rule + services: + - name: sampleapi + port: 443 + scheme: http + tls: {}