From 2c6c85df47afeb53e05dc4880f108b000dbfed81 Mon Sep 17 00:00:00 2001 From: Edward Cheng Date: Thu, 27 Jun 2024 00:59:10 +1000 Subject: [PATCH] add infra consul --- kubernetes/infrastructure/consul/app/pvc.yaml | 93 +++++++++++++++++++ .../infrastructure/consul/app/service.yaml | 16 ++++ .../consul/app/statefulset.yaml | 44 +++++++++ kubernetes/infrastructure/consul/consul.yaml | 18 ++++ kubernetes/infrastructure/kustomization.yaml | 1 + .../namespaces/namespaces/consul.yaml | 4 + 6 files changed, 176 insertions(+) create mode 100644 kubernetes/infrastructure/consul/app/pvc.yaml create mode 100644 kubernetes/infrastructure/consul/app/service.yaml create mode 100644 kubernetes/infrastructure/consul/app/statefulset.yaml create mode 100644 kubernetes/infrastructure/consul/consul.yaml create mode 100644 kubernetes/infrastructure/namespaces/namespaces/consul.yaml diff --git a/kubernetes/infrastructure/consul/app/pvc.yaml b/kubernetes/infrastructure/consul/app/pvc.yaml new file mode 100644 index 0000000..48c2b16 --- /dev/null +++ b/kubernetes/infrastructure/consul/app/pvc.yaml @@ -0,0 +1,93 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: consul-data-pv + namespace: consul + labels: + type: local +spec: + storageClassName: local-path + volumeMode: Filesystem + capacity: + storage: 10Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + local: + path: "/mnt/nfs/AppData/consul/data" + claimRef: + apiVersion: v1 + kind: PersistentVolumeClaim + name: consul-data-pvc + namespace: consul + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - rpi5-cluster-node-3 +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: consul-data-pvc + namespace: consul + labels: + name: consul-data-pvc +spec: + storageClassName: local-path + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: consul-config-pv + namespace: consul + labels: + type: local +spec: + storageClassName: local-path + volumeMode: Filesystem + capacity: + storage: 10Mi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + local: + path: "/mnt/nfs/AppData/consul/config" + claimRef: + apiVersion: v1 + kind: PersistentVolumeClaim + name: consul-config-pvc + namespace: consul + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - rpi5-cluster-node-3 +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: consul-config-pvc + namespace: consul + labels: + name: consul-config-pvc +spec: + storageClassName: local-path + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Mi \ No newline at end of file diff --git a/kubernetes/infrastructure/consul/app/service.yaml b/kubernetes/infrastructure/consul/app/service.yaml new file mode 100644 index 0000000..839996d --- /dev/null +++ b/kubernetes/infrastructure/consul/app/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: consul + namespace: consul + labels: + app: consul +spec: + ports: + - name: http + protocol: TCP + port: 8500 + targetPort: 8500 + selector: + app: consul + type: ClusterIP \ No newline at end of file diff --git a/kubernetes/infrastructure/consul/app/statefulset.yaml b/kubernetes/infrastructure/consul/app/statefulset.yaml new file mode 100644 index 0000000..5140d1f --- /dev/null +++ b/kubernetes/infrastructure/consul/app/statefulset.yaml @@ -0,0 +1,44 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: consul + namespace: consul + labels: + app: consul +spec: + replicas: 1 + selector: + matchLabels: + app: consul + template: + metadata: + labels: + app: consul + spec: + containers: + - name: consul + image: 'swr.cn-south-1.myhuaweicloud.com/starsl.cn/consul:latest' + args: + - agent + ports: + - name: http + containerPort: 8500 + protocol: TCP + env: + - name: TZ + value: Australia/Sydney + volumeMounts: + - name: consul-data + mountPath: /consul/data + - name: consul-config + mountPath: /consul/config + imagePullPolicy: IfNotPresent + restartPolicy: Always + volumes: + - name: consul-data + persistentVolumeClaim: + claimName: consul-data-pvc + - name: consul-config + persistentVolumeClaim: + claimName: consul-config-pvc + serviceName: consul diff --git a/kubernetes/infrastructure/consul/consul.yaml b/kubernetes/infrastructure/consul/consul.yaml new file mode 100644 index 0000000..6f5be57 --- /dev/null +++ b/kubernetes/infrastructure/consul/consul.yaml @@ -0,0 +1,18 @@ +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: consul + namespace: consul +spec: + interval: 10m + timeout: 1m30s + retryInterval: 30s + path: ./kubernetes/infrastructure/consul/app + prune: true + sourceRef: + kind: GitRepository + namespace: flux-system + name: flux-system + dependsOn: + - name: namespaces + namespace: flux-system diff --git a/kubernetes/infrastructure/kustomization.yaml b/kubernetes/infrastructure/kustomization.yaml index 60f5403..8a26eb0 100644 --- a/kubernetes/infrastructure/kustomization.yaml +++ b/kubernetes/infrastructure/kustomization.yaml @@ -3,6 +3,7 @@ kind: Kustomization resources: - ./cert-manager/cert-manager.yaml # - ./cilium/cilium.yaml + - ./consul/consul.yaml - ./minio/minio.yaml - ./ingress-nginx/ingress-nginx.yaml - ./ingress-nginx/ingress-nginx-config.yaml diff --git a/kubernetes/infrastructure/namespaces/namespaces/consul.yaml b/kubernetes/infrastructure/namespaces/namespaces/consul.yaml new file mode 100644 index 0000000..bd30f1f --- /dev/null +++ b/kubernetes/infrastructure/namespaces/namespaces/consul.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: consul