Compare commits
1 Commits
main
...
testing-ex
Author | SHA1 | Date | |
---|---|---|---|
52ec04c9ea |
@ -1,93 +0,0 @@
|
|||||||
---
|
|
||||||
when:
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- image: alpine/helm
|
|
||||||
name: Publish the Helm chart
|
|
||||||
commands:
|
|
||||||
- helm plugin install https://github.com/chartmuseum/helm-push
|
|
||||||
- helm package chart -d chart-package
|
|
||||||
- helm repo add --username allanger --password $GITEA_TOKEN badhouseplants-net https://git.badhouseplants.net/api/packages/badhouseplants/helm
|
|
||||||
- helm cm-push "./chart-package/$(ls chart-package)" badhouseplants-net
|
|
||||||
secrets:
|
|
||||||
- gitea_token
|
|
||||||
|
|
||||||
- name: Test a build
|
|
||||||
image: git.badhouseplants.net/badhouseplants/hugo-container
|
|
||||||
commands:
|
|
||||||
- hugo -s ./src
|
|
||||||
|
|
||||||
- name: Build and push the docker image
|
|
||||||
image: git.badhouseplants.net/badhouseplants/badhouseplants-builder:latest
|
|
||||||
privileged: true
|
|
||||||
depends_on:
|
|
||||||
- Test a build
|
|
||||||
secrets:
|
|
||||||
- gitea_token
|
|
||||||
environment:
|
|
||||||
BUILDER_COMMIT: 2449b73b13a62ae916c6703778d096e5290157b3
|
|
||||||
commands:
|
|
||||||
- rm -rf $DRONE_WORKSPACE/src/assets/
|
|
||||||
- ./scripts/build-container.pl
|
|
||||||
backend_options:
|
|
||||||
kubernetes:
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 500Mi
|
|
||||||
cpu: 200m
|
|
||||||
limits:
|
|
||||||
memory: 1000Mi
|
|
||||||
cpu: 1000m
|
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
|
|
||||||
- name: Sync pictures from lfs to Minio
|
|
||||||
image: git.badhouseplants.net/badhouseplants/badhouseplants-builder:latest
|
|
||||||
depends_on:
|
|
||||||
- Test a build
|
|
||||||
secrets:
|
|
||||||
- rclone_config_content
|
|
||||||
environment:
|
|
||||||
RCLONE_CONFIG: /tmp/rclone.conf
|
|
||||||
commands:
|
|
||||||
- echo "$RCLONE_CONFIG_CONTENT" > $RCLONE_CONFIG
|
|
||||||
- ./scripts/upload-media.pl
|
|
||||||
|
|
||||||
- name: Deploy the application
|
|
||||||
image: git.badhouseplants.net/badhouseplants/badhouseplants-builder:latest
|
|
||||||
depends_on:
|
|
||||||
- Build and push the docker image
|
|
||||||
- Sync pictures from lfs to Minio
|
|
||||||
secrets:
|
|
||||||
- gitea_token
|
|
||||||
- argocd_auth_token
|
|
||||||
- argo_github_oauth_key
|
|
||||||
- argo_google_oauth_key
|
|
||||||
environment:
|
|
||||||
ARGOCD_SERVER: https://argo.badhouseplants.net:443
|
|
||||||
commands:
|
|
||||||
- ./scripts/deploy-app.pl
|
|
||||||
|
|
||||||
- name: Cleanup everything
|
|
||||||
image: git.badhouseplants.net/badhouseplants/badhouseplants-builder:latest
|
|
||||||
depends_on:
|
|
||||||
- Deploy the application
|
|
||||||
secrets:
|
|
||||||
- gitea_token
|
|
||||||
- argocd_auth_token
|
|
||||||
- rclone_config_content
|
|
||||||
environment:
|
|
||||||
ARGOCD_SERVER: argo.badhouseplants.net:443
|
|
||||||
RCLONE_CONFIG: /tmp/rclone.conf
|
|
||||||
commands:
|
|
||||||
- echo "$RCLONE_CONFIG_CONTENT" > $RCLONE_CONFIG
|
|
||||||
- ./scripts/cleanup.pl
|
|
||||||
|
|
||||||
- name: Spell-Checker
|
|
||||||
failure: ignore
|
|
||||||
image: node
|
|
||||||
commands:
|
|
||||||
- npm i markdown-spellcheck -g
|
|
||||||
- mdspell "src/content/**/*.md" -n -r
|
|
@ -2,10 +2,10 @@ apiVersion: v2
|
|||||||
name: badhouseplants-net
|
name: badhouseplants-net
|
||||||
description: A Helm chart for Kubernetes
|
description: A Helm chart for Kubernetes
|
||||||
type: application
|
type: application
|
||||||
version: 0.9.0
|
version: 0.8.6
|
||||||
appVersion: "4.20.0"
|
appVersion: "4.20.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: remark42
|
- name: remark42
|
||||||
version: 0.7.0
|
version: 0.5.5
|
||||||
repository: https://groundhog2k.github.io/helm-charts/
|
repository: https://groundhog2k.github.io/helm-charts/
|
||||||
condition: remark42.enabled
|
condition: remark42.enabled
|
||||||
|
57
chart/templates/virtual-service.yaml
Normal file
57
chart/templates/virtual-service.yaml
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{{- if .Values.istio.enabled -}}
|
||||||
|
apiVersion: networking.istio.io/v1beta1
|
||||||
|
kind: VirtualService
|
||||||
|
metadata:
|
||||||
|
name: {{ include "badhouseplants-net.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "badhouseplants-net.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.istio.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
gateways:
|
||||||
|
- istio-system/badhouseplants-net
|
||||||
|
hosts:
|
||||||
|
{{- range .Values.istio.hosts}}
|
||||||
|
- {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
http:
|
||||||
|
- match:
|
||||||
|
- uri:
|
||||||
|
prefix: {{ .Values.istio.prefix }}
|
||||||
|
route:
|
||||||
|
- destination:
|
||||||
|
host: {{ include "badhouseplants-net.fullname" . }}
|
||||||
|
port:
|
||||||
|
number: {{ .Values.service.port }}
|
||||||
|
{{- end }}
|
||||||
|
---
|
||||||
|
{{- if .Values.remark42.istio.enabled -}}
|
||||||
|
apiVersion: networking.istio.io/v1beta1
|
||||||
|
kind: VirtualService
|
||||||
|
metadata:
|
||||||
|
name: {{ include "remark42.fullname" . }}-remark42
|
||||||
|
labels:
|
||||||
|
{{- include "badhouseplants-net.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.remark42.istio.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
gateways:
|
||||||
|
- istio-system/badhouseplants-net
|
||||||
|
hosts:
|
||||||
|
{{- range .Values.remark42.istio.hosts}}
|
||||||
|
- {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
http:
|
||||||
|
- match:
|
||||||
|
- uri:
|
||||||
|
prefix: {{ .Values.remark42.istio.prefix }}
|
||||||
|
route:
|
||||||
|
- destination:
|
||||||
|
host: {{ .Release.Name }}-remark42
|
||||||
|
port:
|
||||||
|
number: {{ .Values.remark42.service.port }}
|
||||||
|
{{- end }}
|
@ -39,6 +39,14 @@ hugo:
|
|||||||
env:
|
env:
|
||||||
HUGO_PARAMS_GITBRANCH: main
|
HUGO_PARAMS_GITBRANCH: main
|
||||||
|
|
||||||
|
istio:
|
||||||
|
annotations: {}
|
||||||
|
enabled: true
|
||||||
|
hosts:
|
||||||
|
- badhouseplants.net
|
||||||
|
- www.badhouseplants.net
|
||||||
|
prefix: /
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
# ----------------------------------------------
|
# ----------------------------------------------
|
||||||
# -- An emptydir volume where hugo should
|
# -- An emptydir volume where hugo should
|
||||||
|
@ -6,10 +6,10 @@ metadata:
|
|||||||
branch: $ARGO_APP_BRANCH
|
branch: $ARGO_APP_BRANCH
|
||||||
commit_sha: $ARGO_APP_IMAGE_TAG
|
commit_sha: $ARGO_APP_IMAGE_TAG
|
||||||
name: badhouseplants-$ARGO_APP_BRANCH
|
name: badhouseplants-$ARGO_APP_BRANCH
|
||||||
namespace: platform
|
namespace: argo-system
|
||||||
spec:
|
spec:
|
||||||
destination:
|
destination:
|
||||||
namespace: $ARGO_APP_NAMESPACE
|
namespace: badhouseplants-$ARGO_APP_NAMESPACE
|
||||||
server: https://kubernetes.default.svc
|
server: https://kubernetes.default.svc
|
||||||
project: badhouseplants
|
project: badhouseplants
|
||||||
source:
|
source:
|
||||||
|
@ -2,7 +2,7 @@ apiVersion: argoproj.io/v1alpha1
|
|||||||
kind: AppProject
|
kind: AppProject
|
||||||
metadata:
|
metadata:
|
||||||
name: badhouseplants
|
name: badhouseplants
|
||||||
namespace: platform
|
namespace: argo-system
|
||||||
finalizers:
|
finalizers:
|
||||||
- resources-finalizer.argocd.argoproj.io
|
- resources-finalizer.argocd.argoproj.io
|
||||||
spec:
|
spec:
|
||||||
@ -11,13 +11,15 @@ spec:
|
|||||||
- '*'
|
- '*'
|
||||||
|
|
||||||
destinations:
|
destinations:
|
||||||
- namespace: development
|
- namespace: badhouseplants-*
|
||||||
server: https://kubernetes.default.svc
|
|
||||||
name: in-cluster
|
|
||||||
- namespace: production
|
|
||||||
server: https://kubernetes.default.svc
|
server: https://kubernetes.default.svc
|
||||||
name: in-cluster
|
name: in-cluster
|
||||||
|
|
||||||
|
# Deny all cluster-scoped resources from being created, except for Namespace
|
||||||
|
clusterResourceWhitelist:
|
||||||
|
- group: ''
|
||||||
|
kind: Namespace
|
||||||
|
|
||||||
# Allow all namespaced-scoped resources to be created, except for ResourceQuota, LimitRange, NetworkPolicy
|
# Allow all namespaced-scoped resources to be created, except for ResourceQuota, LimitRange, NetworkPolicy
|
||||||
namespaceResourceBlacklist:
|
namespaceResourceBlacklist:
|
||||||
- group: ''
|
- group: ''
|
||||||
|
@ -5,33 +5,11 @@ values: |
|
|||||||
tag: $ARGO_APP_IMAGE_TAG
|
tag: $ARGO_APP_IMAGE_TAG
|
||||||
env:
|
env:
|
||||||
HUGO_PARAMS_GITCOMMIT: $ARGO_APP_IMAGE_TAG
|
HUGO_PARAMS_GITCOMMIT: $ARGO_APP_IMAGE_TAG
|
||||||
ingress:
|
istio:
|
||||||
enabled: true
|
|
||||||
className: ~
|
|
||||||
annotations:
|
annotations:
|
||||||
kubernetes.io/ingress.class: traefik
|
|
||||||
kubernetes.io/tls-acme: "true"
|
|
||||||
kubernetes.io/ingress.allow-http: "false"
|
|
||||||
kubernetes.io/ingress.global-static-ip-name: ""
|
|
||||||
cert-manager.io/cluster-issuer: badhouseplants-issuer-http01
|
|
||||||
link.argocd.argoproj.io/env: https://badhouseplants.net/
|
link.argocd.argoproj.io/env: https://badhouseplants.net/
|
||||||
link.argocd.argoproj.io/build: $DRONE_BUILD_LINK
|
link.argocd.argoproj.io/build: $DRONE_BUILD_LINK
|
||||||
pathtype: ImplementationSpecific
|
link.argocd.argoproj.io/remark42: https://remark42.badhouseplants.net/web
|
||||||
hosts:
|
|
||||||
- host: badhouseplants.net
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: ImplementationSpecific
|
|
||||||
- host: www.badhouseplants.net
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: ImplementationSpecific
|
|
||||||
tls:
|
|
||||||
- secretName: badhp-tls
|
|
||||||
hosts:
|
|
||||||
- badhouseplants.net
|
|
||||||
- www.badhouseplants.net
|
|
||||||
|
|
||||||
remark42:
|
remark42:
|
||||||
settings:
|
settings:
|
||||||
secret: $ARGO_REMARK_SECRET
|
secret: $ARGO_REMARK_SECRET
|
||||||
@ -48,25 +26,3 @@ values: |
|
|||||||
secret: $ARGO_GOOGLE_OAUTH_KEY
|
secret: $ARGO_GOOGLE_OAUTH_KEY
|
||||||
storage:
|
storage:
|
||||||
requestedSize: 300Mi
|
requestedSize: 300Mi
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
className: ~
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/ingress.class: traefik
|
|
||||||
kubernetes.io/tls-acme: "true"
|
|
||||||
kubernetes.io/ingress.allow-http: "false"
|
|
||||||
kubernetes.io/ingress.global-static-ip-name: ""
|
|
||||||
cert-manager.io/cluster-issuer: badhouseplants-issuer-http01
|
|
||||||
link.argocd.argoproj.io/remark42: https://remark42.badhouseplants.net/web
|
|
||||||
## Hosts
|
|
||||||
hosts:
|
|
||||||
- host: remark42.badhouseplants.net
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: ImplementationSpecific
|
|
||||||
|
|
||||||
tls:
|
|
||||||
secretName: chart-example-tls
|
|
||||||
hosts:
|
|
||||||
- remark42.badhouseplants.net
|
|
||||||
|
|
@ -1,27 +1,12 @@
|
|||||||
---
|
---
|
||||||
values: |
|
values: |
|
||||||
ingress:
|
istio:
|
||||||
enabled: true
|
|
||||||
className: ~
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/ingress.class: traefik
|
|
||||||
kubernetes.io/tls-acme: "true"
|
|
||||||
kubernetes.io/ingress.allow-http: "false"
|
|
||||||
kubernetes.io/ingress.global-static-ip-name: ""
|
|
||||||
cert-manager.io/cluster-issuer: badhouseplants-issuer-http01
|
|
||||||
link.argocd.argoproj.io/env: https://$ARGO_APP_HOSTNAME/
|
|
||||||
link.argocd.argoproj.io/build: $DRONE_BUILD_LINK
|
|
||||||
pathtype: ImplementationSpecific
|
|
||||||
hosts:
|
hosts:
|
||||||
- host: $ARGO_APP_HOSTNAME
|
- $ARGO_APP_HOSTNAME
|
||||||
paths:
|
annotations:
|
||||||
- path: /
|
link.argocd.argoproj.io/env: https://$ARGO_APP_HOSTNAME/
|
||||||
pathType: ImplementationSpecific
|
link.argocd.argoproj.io/remark42: https://remark42-$ARGO_APP_HOSTNAME/web
|
||||||
tls:
|
link.argocd.argoproj.io/build: $DRONE_BUILD_LINK
|
||||||
- secretName: badhp-$ARGO_APP_BRANCH-tls
|
|
||||||
hosts:
|
|
||||||
- $ARGO_APP_HOSTNAME
|
|
||||||
|
|
||||||
hugo:
|
hugo:
|
||||||
image:
|
image:
|
||||||
tag: $ARGO_APP_IMAGE_TAG
|
tag: $ARGO_APP_IMAGE_TAG
|
||||||
@ -32,31 +17,13 @@ values: |
|
|||||||
HUGO_PARAMS_COMMENTS_REMARK42_HOST: https://remark42-$ARGO_APP_HOSTNAME
|
HUGO_PARAMS_COMMENTS_REMARK42_HOST: https://remark42-$ARGO_APP_HOSTNAME
|
||||||
HUGO_PARAMS_GITCOMMIT: $ARGO_APP_IMAGE_TAG
|
HUGO_PARAMS_GITCOMMIT: $ARGO_APP_IMAGE_TAG
|
||||||
remark42:
|
remark42:
|
||||||
|
istio:
|
||||||
|
hosts:
|
||||||
|
- remark42-$ARGO_APP_HOSTNAME
|
||||||
settings:
|
settings:
|
||||||
url: https://remark42-$ARGO_APP_HOSTNAME/
|
url: https://remark42-$ARGO_APP_HOSTNAME/
|
||||||
auth:
|
auth:
|
||||||
anonymous: true
|
anonymous: true
|
||||||
secretKey: $ARGO_REMARK_SECRET
|
secretKey: $ARGO_REMARK_SECRET
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
className: ~
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/ingress.class: traefik
|
|
||||||
kubernetes.io/tls-acme: "true"
|
|
||||||
kubernetes.io/ingress.allow-http: "false"
|
|
||||||
kubernetes.io/ingress.global-static-ip-name: ""
|
|
||||||
cert-manager.io/cluster-issuer: badhouseplants-issuer-http01
|
|
||||||
link.argocd.argoproj.io/remark42: https://remark42-$ARGO_APP_HOSTNAME/
|
|
||||||
## Hosts
|
|
||||||
hosts:
|
|
||||||
- host: remark42.badhouseplants.net
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: ImplementationSpecific
|
|
||||||
|
|
||||||
tls:
|
|
||||||
secretName: remark-$ARGO_APP_BRANCH-tls
|
|
||||||
hosts:
|
|
||||||
- remark42-$ARGO_APP_HOSTNAME
|
|
||||||
rclone:
|
rclone:
|
||||||
command: 'rclone copy -P badhouseplants-public:/badhouseplants-net/$ARGO_APP_IMAGE_TAG /static'
|
command: 'rclone copy -P badhouseplants-public:/badhouseplants-net/$ARGO_APP_IMAGE_TAG /static'
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
|
|
||||||
}
|
|
@ -18,9 +18,9 @@ chomp($remark_secret);
|
|||||||
$ENV{'ARGO_APP_CHART_VERSION'} = $chart_version;
|
$ENV{'ARGO_APP_CHART_VERSION'} = $chart_version;
|
||||||
$ENV{'ARGO_APP_BRANCH'} = $git_branch;
|
$ENV{'ARGO_APP_BRANCH'} = $git_branch;
|
||||||
if ($git_branch eq $main_branch) {
|
if ($git_branch eq $main_branch) {
|
||||||
$ENV{'ARGO_APP_NAMESPACE'} = "production";
|
$ENV{'ARGO_APP_NAMESPACE'} = $git_branch;
|
||||||
} else {
|
} else {
|
||||||
$ENV{'ARGO_APP_NAMESPACE'} = "development"
|
$ENV{'ARGO_APP_NAMESPACE'} = "preview"
|
||||||
}
|
}
|
||||||
$ENV{'ARGO_APP_HOSTNAME'} = "$git_branch-dev.badhouseplants.net";
|
$ENV{'ARGO_APP_HOSTNAME'} = "$git_branch-dev.badhouseplants.net";
|
||||||
$ENV{'ARGO_APP_IMAGE_TAG'} = $git_commit_sha;
|
$ENV{'ARGO_APP_IMAGE_TAG'} = $git_commit_sha;
|
||||||
@ -72,3 +72,4 @@ foreach my $app (@all_applications) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
+++
|
---
|
||||||
title = "Dynamic Environment Per Branch with ArgoCD"
|
title: "Dynamic Environment Per Branch with ArgoCD"
|
||||||
date = 2023-02-25T14:00:00+01:00
|
date: 2023-02-25T14:00:00+01:00
|
||||||
image = "/posts/argocd-dynamic-environment-per-branch-part-1/cover.png"
|
image: "/posts/argocd-dynamic-environment-per-branch-part-1/cover.png"
|
||||||
draft = false
|
draft: false
|
||||||
categories = [
|
categories:
|
||||||
"Kubernetes",
|
- "Kubernetes"
|
||||||
"CI-CD"
|
- "CI-CD"
|
||||||
]
|
---
|
||||||
+++
|
|
||||||
|
|
||||||
[Do you remember?]({{< ref "dont-use-argocd-for-infrastructure" >}})
|
[Do you remember?]({{< ref "dont-use-argocd-for-infrastructure" >}})
|
||||||
> And using `helmfile`, I will install `ArgoCD` to my clusters, of course, because it's an awesome tool, without any doubts. But don't manage your infrastructure with it, because it's a part of your infrastructure, and it's a service that you provide to other teams. And I'll talk about in one of the next posts.
|
> And using `helmfile`, I will install `ArgoCD` to my clusters, of course, because it's an awesome tool, without any doubts. But don't manage your infrastructure with it, because it's a part of your infrastructure, and it's a service that you provide to other teams. And I'll talk about in one of the next posts.
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
+++
|
---
|
||||||
title = "ArgoCD vs Helmfile: Applications"
|
title: "ArgoCD vs Helmfile: Applications"
|
||||||
date = 2023-02-13T12:14:09+01:00
|
date: 2023-02-13T12:14:09+01:00
|
||||||
image = "/posts/argocd-vs-helmfile/cover-applications.png"
|
image: "/posts/argocd-vs-helmfile/cover-applications.png"
|
||||||
draft = false
|
draft: false
|
||||||
categories = [
|
categories:
|
||||||
"Kubernetes",
|
- "Kubernetes"
|
||||||
"CI-CD"
|
- "CI-CD"
|
||||||
]
|
---
|
||||||
+++
|
|
||||||
|
|
||||||
> So as promised in [the previous ArgoCD post]({{< ref "dont-use-argocd-for-infrastructure" >}}), I'll try to show a simple example of Pull Requests for different kinds of setups. This is the first part. Putting everything in the same post seems kind of too much.
|
> So as promised in [the previous ArgoCD post]({{< ref "dont-use-argocd-for-infrastructure" >}}), I'll try to show a simple example of Pull Requests for different kinds of setups. This is the first part. Putting everything in the same post seems kind of too much.
|
||||||
|
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
+++
|
---
|
||||||
title = 'ArgoCD vs Helmfile: ApplicationSet'
|
title: 'ArgoCD vs Helmfile: ApplicationSet'
|
||||||
date = 2023-02-15T10:14:09+01:00
|
date: 2023-02-15T10:14:09+01:00
|
||||||
image = "/posts/argocd-vs-helmfile/cover-applicationset.png"
|
image: "/posts/argocd-vs-helmfile/cover-applicationset.png"
|
||||||
draft = false
|
draft: false
|
||||||
categories = [
|
categories:
|
||||||
"Kubernetes",
|
- "Kubernetes"
|
||||||
"CI-CD"
|
- "CI-CD"
|
||||||
]
|
---
|
||||||
+++
|
|
||||||
|
|
||||||
This is a second post about *"argocding"* your infrastructure. [First can be found here]({{< ref "argocd-vs-helmfile-application" >}}).
|
This is a second post about *"argocding"* your infrastructure. [First can be found here]({{< ref "argocd-vs-helmfile-application" >}}).
|
||||||
|
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
+++
|
---
|
||||||
title = "Argocd vs Helmfile: Helmfile"
|
title: "Argocd vs Helmfile: Helmfile"
|
||||||
date = 2023-02-17T12:48:51+01:00
|
date: 2023-02-17T12:48:51+01:00
|
||||||
draft = false
|
draft: false
|
||||||
categories = [
|
categories:
|
||||||
"Kubernetes",
|
- "Kubernetes"
|
||||||
"CI-CD"
|
- "CI-CD"
|
||||||
]
|
---
|
||||||
+++
|
|
||||||
In two previous posts I've described how it's possible to install a couple of applications with [`Applications`]({{< relref "/post/allanger/argocd-vs-helmfile-application" >}}) and [`ApplicationSets`]({{< relref "/post/allanger/argocd-vs-helmfile-applicationset" >}}), and this one is the last in a row. And here I'm going to install the same applications (`VPA` and `Goldilocks`) with helmfile, and I will tell why I think that it's better than `ArgoCD`
|
In two previous posts I've described how it's possible to install a couple of applications with [`Applications`]({{< relref "/post/allanger/argocd-vs-helmfile-application" >}}) and [`ApplicationSets`]({{< relref "/post/allanger/argocd-vs-helmfile-applicationset" >}}), and this one is the last in a row. And here I'm going to install the same applications (`VPA` and `Goldilocks`) with helmfile, and I will tell why I think that it's better than `ArgoCD`
|
||||||
|
|
||||||
So let's start. Here you can find the [initial config](https://git.badhouseplants.net/allanger/helmfile-vs-argo/src/branch/helmfile-main). Let's see what we got here:
|
So let's start. Here you can find the [initial config](https://git.badhouseplants.net/allanger/helmfile-vs-argo/src/branch/helmfile-main). Let's see what we got here:
|
||||||
@ -451,7 +450,7 @@ vpa-system, goldilocks-dashboard, ServiceAccount (v1) has been added:
|
|||||||
|
|
||||||
hook[prepare] logs | diff -u -N /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/LIVE-4051758900/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalercheckpoints.autoscaling.k8s.io /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/MERGED-3664876659/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalercheckpoints.autoscaling.k8s.io
|
hook[prepare] logs | diff -u -N /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/LIVE-4051758900/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalercheckpoints.autoscaling.k8s.io /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/MERGED-3664876659/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalercheckpoints.autoscaling.k8s.io
|
||||||
hook[prepare] logs | --- /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/LIVE-4051758900/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalercheckpoints.autoscaling.k8s.io 2023-02-17 13:15:29
|
hook[prepare] logs | --- /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/LIVE-4051758900/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalercheckpoints.autoscaling.k8s.io 2023-02-17 13:15:29
|
||||||
hook[prepare] logs | +++ /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/MERGED-3664876659/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalercheckpoints.autoscaling.k8s.io 2023-02-17 13:15:29
|
hook[prepare] logs | --- /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/MERGED-3664876659/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalercheckpoints.autoscaling.k8s.io 2023-02-17 13:15:29
|
||||||
hook[prepare] logs | @@ -0,0 +1,216 @@
|
hook[prepare] logs | @@ -0,0 +1,216 @@
|
||||||
hook[prepare] logs | +apiVersion: apiextensions.k8s.io/v1
|
hook[prepare] logs | +apiVersion: apiextensions.k8s.io/v1
|
||||||
hook[prepare] logs | +kind: CustomResourceDefinition
|
hook[prepare] logs | +kind: CustomResourceDefinition
|
||||||
@ -671,7 +670,7 @@ hook[prepare] logs | + storedVersions:
|
|||||||
hook[prepare] logs | + - v1
|
hook[prepare] logs | + - v1
|
||||||
hook[prepare] logs | diff -u -N /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/LIVE-4051758900/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalers.autoscaling.k8s.io /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/MERGED-3664876659/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalers.autoscaling.k8s.io
|
hook[prepare] logs | diff -u -N /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/LIVE-4051758900/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalers.autoscaling.k8s.io /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/MERGED-3664876659/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalers.autoscaling.k8s.io
|
||||||
hook[prepare] logs | --- /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/LIVE-4051758900/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalers.autoscaling.k8s.io 2023-02-17 13:15:29
|
hook[prepare] logs | --- /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/LIVE-4051758900/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalers.autoscaling.k8s.io 2023-02-17 13:15:29
|
||||||
hook[prepare] logs | +++ /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/MERGED-3664876659/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalers.autoscaling.k8s.io 2023-02-17 13:15:29
|
hook[prepare] logs | --- /var/folders/w1/27ptcr29547f0g8732kmffwm0000gn/T/MERGED-3664876659/apiextensions.k8s.io.v1.CustomResourceDefinition..verticalpodautoscalers.autoscaling.k8s.io 2023-02-17 13:15:29
|
||||||
hook[prepare] logs | @@ -0,0 +1,550 @@
|
hook[prepare] logs | @@ -0,0 +1,550 @@
|
||||||
hook[prepare] logs | +apiVersion: apiextensions.k8s.io/v1
|
hook[prepare] logs | +apiVersion: apiextensions.k8s.io/v1
|
||||||
hook[prepare] logs | +kind: CustomResourceDefinition
|
hook[prepare] logs | +kind: CustomResourceDefinition
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
+++
|
---
|
||||||
title = 'Do we really need Continuous Reconciliation after all?'
|
title: 'Do we really need Continuous Reconciliation after all?'
|
||||||
date = 2024-02-13T15:04:44+01:00
|
date: 2024-02-13T15:04:44+01:00
|
||||||
draft = true
|
draft: true
|
||||||
categories = [
|
categories:
|
||||||
"Kubernetes",
|
- "Kubernetes"
|
||||||
"CI-CD"
|
- "CI-CD"
|
||||||
]
|
---
|
||||||
+++
|
|
||||||
|
|
||||||
> Well, alright, I guess it depends
|
> Well, alright, I guess it depends
|
||||||
|
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
+++
|
---
|
||||||
title = "Don't use ArgoCD for your infrastructure"
|
title: "Don't use ArgoCD for your infrastructure"
|
||||||
date = 2023-02-09T12:47:32+01:00
|
date: 2023-02-09T12:47:32+01:00
|
||||||
draft = false
|
draft: false
|
||||||
image = '/posts/dont-use-argocd-for-infrastructure/cover.png'
|
image: /posts/dont-use-argocd-for-infrastructure/cover.png
|
||||||
categories = [
|
categories:
|
||||||
"Kubernetes",
|
- "Kubernetes"
|
||||||
"CI-CD"
|
- "CI-CD"
|
||||||
]
|
|
||||||
+++
|
---
|
||||||
|
|
||||||
> Of course, it's just a clickbait title. Use whatever works for you. I will just describe why I wouldn't use `ArgoCD` for the infrastructure
|
> Of course, it's just a clickbait title. Use whatever works for you. I will just describe why I wouldn't use `ArgoCD` for the infrastructure
|
||||||
|
|
||||||
|
118
src/content/post/allanger/testing-external-snapshooter.md
Normal file
118
src/content/post/allanger/testing-external-snapshooter.md
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
---
|
||||||
|
title: "Testing External Snapshooter"
|
||||||
|
description: Trying to use the external-snapshooter
|
||||||
|
date: 2024-05-14T15:37:59+02:00
|
||||||
|
image:
|
||||||
|
math:
|
||||||
|
hidden: false
|
||||||
|
comments: true
|
||||||
|
draft: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Intro
|
||||||
|
|
||||||
|
# Installing
|
||||||
|
|
||||||
|
I've created a new empty k3s cluster, into which I've installed `coreDNS`, `cilium`, and `local-path-provisioner` by Rancher.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ kubectl get pods -A
|
||||||
|
NAMESPACE NAME READY STATUS RESTARTS AGE
|
||||||
|
kube-system cilium-operator-9c465d6d8-jlbc9 1/1 Running 0 72s
|
||||||
|
kube-system cilium-gzwlp 1/1 Running 0 72s
|
||||||
|
kube-system local-path-provisioner-6896b5f8c-7mpfl 1/1 Running 0 50s
|
||||||
|
kube-system coredns-7db6d4f6d7-vqhpc 1/1 Running 0 61s
|
||||||
|
```
|
||||||
|
|
||||||
|
Now let's install the external-snapshooter, the project source code can be found here: <https://github.com/kubernetes-csi/external-snapshotter>, but they don't provide us with a helm chart, so I'll install it using that one <https://github.com/piraeusdatastore/helm-charts/tree/main/charts/snapshot-controller>
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ helm repo add piraeus-charts https://piraeus.io/helm-charts/
|
||||||
|
|
||||||
|
$ helm install snapshot-controller piraeus-charts/snapshot-controller -n kube-system
|
||||||
|
|
||||||
|
$ kubectl get pods -A
|
||||||
|
NAMESPACE NAME READY STATUS RESTARTS AGE
|
||||||
|
kube-system cilium-operator-9c465d6d8-jlbc9 1/1 Running 0 3m35s
|
||||||
|
kube-system cilium-gzwlp 1/1 Running 0 3m35s
|
||||||
|
kube-system local-path-provisioner-6896b5f8c-7mpfl 1/1 Running 0 3m13s
|
||||||
|
kube-system coredns-7db6d4f6d7-vqhpc 1/1 Running 0 3m24s
|
||||||
|
kube-system snapshot-controller-5fd4df575-2vmhl 1/1 Running 0 16s
|
||||||
|
kube-system snapshot-validation-webhook-79f9c6bb5f-p6hqx 1/1 Running 0 16s
|
||||||
|
|
||||||
|
$ kubectl get crd
|
||||||
|
NAME CREATED AT
|
||||||
|
...
|
||||||
|
volumegroupsnapshotclasses.groupsnapshot.storage.k8s.io 2024-05-14T13:52:17Z
|
||||||
|
volumegroupsnapshotcontents.groupsnapshot.storage.k8s.io 2024-05-14T13:52:17Z
|
||||||
|
volumegroupsnapshots.groupsnapshot.storage.k8s.io 2024-05-14T13:52:17Z
|
||||||
|
volumesnapshotclasses.snapshot.storage.k8s.io 2024-05-14T13:52:17Z
|
||||||
|
volumesnapshotcontents.snapshot.storage.k8s.io 2024-05-14T13:52:18Z
|
||||||
|
volumesnapshots.snapshot.storage.k8s.io 2024-05-14T13:52:18Z
|
||||||
|
```
|
||||||
|
|
||||||
|
Let's create some dummy worklaod that will write something to a PVC
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: test
|
||||||
|
spec:
|
||||||
|
storageClassName: local-path
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: test
|
||||||
|
spec:
|
||||||
|
volumes:
|
||||||
|
- name: test
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: test
|
||||||
|
containers:
|
||||||
|
- name: test
|
||||||
|
image: alpine
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /src
|
||||||
|
name: test
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
args:
|
||||||
|
- -c
|
||||||
|
- sleep 1000
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ kubectl get pvc
|
||||||
|
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
|
||||||
|
test Bound pvc-4924e25f-84ae-4640-8199-0156659cb167 1Gi RWO local-path 2m7s
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ kubectl exec -it test -- sh
|
||||||
|
# -- Inside the container
|
||||||
|
$ echo 1 > /src/test
|
||||||
|
$ cat /src/test
|
||||||
|
1
|
||||||
|
```
|
||||||
|
|
||||||
|
So now let's try creating a snapshot
|
||||||
|
```yaml
|
||||||
|
apiVersion: snapshot.storage.k8s.io/v1
|
||||||
|
kind: VolumeSnapshot
|
||||||
|
metadata:
|
||||||
|
name: test-snapshot
|
||||||
|
spec:
|
||||||
|
source:
|
||||||
|
volumeSnapshotContentName: test
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ kubectl get volumesnapshot
|
||||||
|
```
|
Reference in New Issue
Block a user