diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..6cdbde0 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,88 @@ +kind: pipeline +name: deploy +steps: +- name: kustomize build hoylogo (prod + staging) + image: git.ar21.de/aaron/kustomize-ci + commands: + - cd /deployment-repo + - git clone https://git.ar21.de/aaron/k8s-deployments.git . + - cd /deployment-repo/hoylogo/overlays/prod + - kustomize build -o /deployment-repo/hoylogo/prod/hoylogo.yaml + - cd /deployment-repo/hoylogo/overlays/staging + - kustomize build -o /deployment-repo/hoylogo/staging/hoylogo.yaml + volumes: + - name: deployment-repo + path: /deployment-repo + when: + branch: + - main + event: + - push +- name: kustomize build hoylogo (staging) + image: git.ar21.de/aaron/kustomize-ci + commands: + - cd /deployment-repo + - git clone https://git.ar21.de/aaron/k8s-deployments.git . + - cd /staging-repo + - git clone -b $DRONE_BRANCH https://git.ar21.de/aaron/k8s-deployments.git . + - cd /staging-repo/hoylogo/overlays/staging + - kustomize build -o /deployment-repo/hoylogo/staging/hoylogo.yaml + volumes: + - name: deployment-repo + path: /deployment-repo + - name: staging-repo + path: /staging-repo + when: + branch: + exclude: + - main + event: + - push +- name: kustomize push hoylogo changes (prod + staging) + image: appleboy/drone-git-push + settings: + branch: main + remote: ssh://git@git.ar21.de:2222/aaron/k8s-deployments.git + path: /deployment-repo + force: false + commit: true + commit_message: "KUSTOMIZE BUILD: rebuild hoylogo deployment with kustomize ${DRONE_BUILD_NUMBER} (done automagically via Drone pipeline) [CI SKIP]" + ssh_key: + from_secret: GITEA_SSH_KEY + volumes: + - name: deployment-repo + path: /deployment-repo + when: + branch: + - main + event: + - push +- name: kustomize push hoylogo changes (staging) + image: appleboy/drone-git-push + settings: + branch: main + remote: ssh://git@git.ar21.de:2222/aaron/k8s-deployments.git + path: /deployment-repo + force: false + commit: true + commit_message: "KUSTOMIZE BUILD STAGING: rebuild hoylogo deployment with kustomize ${DRONE_BUILD_NUMBER} [CI SKIP]" + ssh_key: + from_secret: GITEA_SSH_KEY + volumes: + - name: deployment-repo + path: /deployment-repo + when: + branch: + exclude: + - main + event: + - push +volumes: +- name: deployment-repo + temp: {} +- name: staging-repo + temp: {} +when: + event: + exclude: + - pull_request \ No newline at end of file diff --git a/app-files/apps.yaml b/app-files/apps.yaml index 3513b95..b17eada 100644 --- a/app-files/apps.yaml +++ b/app-files/apps.yaml @@ -68,3 +68,43 @@ spec: - CreateNamespace=true automated: prune: false +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: hoylogo + namespace: argocd +spec: + project: default + source: + repoURL: https://git.ar21.de/aaron/k8s-deployments.git + targetRevision: HEAD + path: hoylogo/prod + destination: + server: https://kubernetes.default.svc + namespace: hoylogo + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + prune: true +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: hoylogo-staging + namespace: argocd +spec: + project: default + source: + repoURL: https://git.ar21.de/aaron/k8s-deployments.git + targetRevision: HEAD + path: hoylogo/staging + destination: + server: https://kubernetes.default.svc + namespace: hoylogo-staging + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + prune: true diff --git a/hoylogo/base/hoylogo.yaml b/hoylogo/base/hoylogo.yaml new file mode 100644 index 0000000..14a49dd --- /dev/null +++ b/hoylogo/base/hoylogo.yaml @@ -0,0 +1,71 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: hoylogo +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: hoylogo-deployment + namespace: hoylogo + labels: + app: hoylogo +spec: + replicas: 3 + selector: + matchLabels: + app: hoylogo + template: + metadata: + labels: + app: hoylogo + spec: + containers: + - name: hoylogo + image: git.ar21.de/aaron/hoylogo:latest + imagePullPolicy: Always + ports: + - containerPort: 80 + livenessProbe: + httpGet: + path: / + port: 80 + initialDelaySeconds: 4 + periodSeconds: 3 +--- +apiVersion: v1 +kind: Service +metadata: + name: hoylogo-service + namespace: hoylogo +spec: + selector: + app: hoylogo + ports: + - protocol: TCP + port: 80 + targetPort: 80 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: hoylogo-ingress + namespace: hoylogo + annotations: + kubernetes.io/tls-acme: "true" +spec: + rules: + - host: "hoylogo.de" + http: + paths: + - pathType: Prefix + path: "/" + backend: + service: + name: hoylogo-service + port: + number: 80 + tls: + - hosts: + - hoylogo.de + secretName: hoylogo-tls-key diff --git a/hoylogo/base/kustomization.yaml b/hoylogo/base/kustomization.yaml new file mode 100644 index 0000000..49a2c0e --- /dev/null +++ b/hoylogo/base/kustomization.yaml @@ -0,0 +1,4 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- hoylogo.yaml \ No newline at end of file diff --git a/hoylogo/overlays/prod/kustomization.yaml b/hoylogo/overlays/prod/kustomization.yaml new file mode 100644 index 0000000..30954bc --- /dev/null +++ b/hoylogo/overlays/prod/kustomization.yaml @@ -0,0 +1,20 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- ../../base +images: +- name: git.ar21.de/aaron/hoylogo + newName: git.ar21.de/aaron/hoylogo + newTag: "21" +namespace: hoylogo +patches: +- patch: |- + - op: replace + path: /spec/rules/0/host + value: "hoylogo-prod.apps.yolokube.de" + - op: replace + path: /spec/tls/0/hosts/0 + value: "hoylogo-prod.apps.yolokube.de" + target: + kind: Ingress + name: hoylogo-ingress diff --git a/hoylogo/overlays/staging/kustomization.yaml b/hoylogo/overlays/staging/kustomization.yaml new file mode 100644 index 0000000..944da61 --- /dev/null +++ b/hoylogo/overlays/staging/kustomization.yaml @@ -0,0 +1,27 @@ +resources: +- ../../base +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +images: +- name: git.ar21.de/aaron/hoylogo + newName: git.ar21.de/aaron/hoylogo + newTag: staging-20 +namespace: hoylogo-staging +patches: +- patch: |- + - op: replace + path: /spec/rules/0/host + value: "staging.hoylogo.de" + - op: replace + path: /spec/tls/0/hosts/0 + value: "staging.hoylogo.de" + target: + kind: Ingress + name: hoylogo-ingress +- patch: |- + - op: replace + path: /spec/replicas + value: 1 + target: + kind: Deployment + name: hoylogo-deployment diff --git a/hoylogo/prod/.gitkeep b/hoylogo/prod/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/hoylogo/prod/hoylogo.yaml b/hoylogo/prod/hoylogo.yaml new file mode 100644 index 0000000..3266b1b --- /dev/null +++ b/hoylogo/prod/hoylogo.yaml @@ -0,0 +1,71 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: hoylogo +--- +apiVersion: v1 +kind: Service +metadata: + name: hoylogo-service + namespace: hoylogo +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 80 + selector: + app: hoylogo +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: hoylogo + name: hoylogo-deployment + namespace: hoylogo +spec: + replicas: 3 + selector: + matchLabels: + app: hoylogo + template: + metadata: + labels: + app: hoylogo + spec: + containers: + - image: git.ar21.de/aaron/hoylogo:21 + imagePullPolicy: Always + livenessProbe: + httpGet: + path: / + port: 80 + initialDelaySeconds: 4 + periodSeconds: 3 + name: hoylogo + ports: + - containerPort: 80 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + kubernetes.io/tls-acme: "true" + name: hoylogo-ingress + namespace: hoylogo +spec: + rules: + - host: hoylogo-prod.apps.yolokube.de + http: + paths: + - backend: + service: + name: hoylogo-service + port: + number: 80 + path: / + pathType: Prefix + tls: + - hosts: + - hoylogo-prod.apps.yolokube.de + secretName: hoylogo-tls-key diff --git a/hoylogo/staging/.gitkeep b/hoylogo/staging/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/hoylogo/staging/hoylogo.yaml b/hoylogo/staging/hoylogo.yaml new file mode 100644 index 0000000..f4a27d0 --- /dev/null +++ b/hoylogo/staging/hoylogo.yaml @@ -0,0 +1,71 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: hoylogo-staging +--- +apiVersion: v1 +kind: Service +metadata: + name: hoylogo-service + namespace: hoylogo-staging +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 80 + selector: + app: hoylogo +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: hoylogo + name: hoylogo-deployment + namespace: hoylogo-staging +spec: + replicas: 1 + selector: + matchLabels: + app: hoylogo + template: + metadata: + labels: + app: hoylogo + spec: + containers: + - image: git.ar21.de/aaron/hoylogo:staging-20 + imagePullPolicy: Always + livenessProbe: + httpGet: + path: / + port: 80 + initialDelaySeconds: 4 + periodSeconds: 3 + name: hoylogo + ports: + - containerPort: 80 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + kubernetes.io/tls-acme: "true" + name: hoylogo-ingress + namespace: hoylogo-staging +spec: + rules: + - host: staging.hoylogo.de + http: + paths: + - backend: + service: + name: hoylogo-service + port: + number: 80 + path: / + pathType: Prefix + tls: + - hosts: + - staging.hoylogo.de + secretName: hoylogo-tls-key