Skip to content

Commit e259baa

Browse files
authored
Merge pull request #390 from symbiontik/vault-service
Add Vault service
2 parents ad4672b + 7135a7b commit e259baa

File tree

4 files changed

+172
-2
lines changed

4 files changed

+172
-2
lines changed

cluster/apps/kustomization.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ resources:
66
- home-assistant
77
- influxdb
88
- code-server
9-
- kube-dashboard
9+
- kube-dashboard
10+
- vault
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
---
2+
apiVersion: helm.toolkit.fluxcd.io/v2beta1
3+
kind: HelmRelease
4+
metadata:
5+
name: vault
6+
namespace: apps
7+
spec:
8+
interval: 5m
9+
chart:
10+
spec:
11+
# renovate: registryUrl=https://helm.releases.hashicorp.com
12+
chart: vault
13+
version: 0.19.0
14+
sourceRef:
15+
kind: HelmRepository
16+
name: hashicorp-charts
17+
namespace: flux-system
18+
interval: 5m
19+
install:
20+
remediation:
21+
retries: 3
22+
upgrade:
23+
remediation:
24+
remediateLastFailure: true
25+
values:
26+
global:
27+
# enabled is the master enabled switch. Setting this to true or false
28+
# will enable or disable all the components within this chart by default.
29+
enabled: true
30+
server:
31+
enabled: true
32+
image:
33+
repository: "hashicorp/vault"
34+
tag: "1.11.2"
35+
# Overrides the default Image Pull Policy
36+
pullPolicy: IfNotPresent
37+
updateStrategyType: "OnDelete"
38+
# Supported log levels include: trace, debug, info, warn, error
39+
logLevel: "info"
40+
# Supported log formats include: standard, json
41+
logFormat: "json"
42+
ingress:
43+
enabled: true
44+
ingressClassName: traefik
45+
pathType: Prefix
46+
annotations:
47+
cert-manager.io/cluster-issuer: letsencrypt-production
48+
traefik.ingress.kubernetes.io/router.entrypoints: websecure
49+
hosts:
50+
- host: vault.${SECRET_DOMAIN}
51+
paths:
52+
- /
53+
- /vault
54+
tls:
55+
- hosts:
56+
- vault.${SECRET_DOMAIN}
57+
secretName: vault-tls
58+
readinessProbe:
59+
enabled: true
60+
failureThreshold: 2
61+
initialDelaySeconds: 5
62+
periodSeconds: 5
63+
successThreshold: 1
64+
timeoutSeconds: 3
65+
livenessProbe:
66+
enabled: false
67+
path: "/v1/sys/health?standbyok=true"
68+
failureThreshold: 2
69+
initialDelaySeconds: 60
70+
periodSeconds: 5
71+
successThreshold: 1
72+
timeoutSeconds: 3
73+
# Enables a headless service to be used by the Vault Statefulset
74+
service:
75+
enabled: true
76+
# clusterIP controls whether a Cluster IP address is attached to the
77+
# Vault service within Kubernetes. By default the Vault service will
78+
# be given a Cluster IP address, set to None to disable. When disabled
79+
# Kubernetes will create a "headless" service. Headless services can be
80+
# used to communicate with pods directly through DNS instead of a round robin
81+
# load balancer.
82+
# clusterIP: None
83+
84+
# Configures the service type for the main Vault service. Can be ClusterIP
85+
# or NodePort.
86+
#type: ClusterIP
87+
88+
# The externalTrafficPolicy can be set to either Cluster or Local
89+
# and is only valid for LoadBalancer and NodePort service types.
90+
# The default value is Cluster.
91+
# ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-traffic-policy
92+
externalTrafficPolicy: Cluster
93+
94+
# If type is set to "NodePort", a specific nodePort value can be configured,
95+
# will be random if left blank.
96+
#nodePort: 30000
97+
98+
# Port on which Vault server is listening
99+
port: 8200
100+
# Target port to which the service should be mapped to
101+
targetPort: 8200
102+
# Extra annotations for the service definition. This can either be YAML or a
103+
# YAML-formatted multi-line templated string map of the annotations to apply
104+
# to the service.
105+
annotations: {}
106+
# This configures the Vault Statefulset to create a PVC for data
107+
# storage when using the file or raft backend storage engines.
108+
# See https://www.vaultproject.io/docs/configuration/storage/index.html to know more
109+
dataStorage:
110+
enabled: true
111+
size: 5Gi
112+
mountPath: "/vault/data"
113+
# Name of the storage class to use. If null it will use the
114+
# configured default Storage Class.
115+
storageClass: null
116+
accessMode: ReadWriteOnce
117+
# This configures the Vault Statefulset to create a PVC for audit
118+
# logs. Once Vault is deployed, initialized and unsealed, Vault must
119+
# be configured to use this for audit logs. This will be mounted to
120+
# /vault/audit
121+
# See https://www.vaultproject.io/docs/audit/index.html to know more
122+
auditStorage:
123+
enabled: false
124+
# Size of the PVC created
125+
size: 5Gi
126+
# Location where the PVC will be mounted.
127+
mountPath: "/vault/audit"
128+
# Name of the storage class to use. If null it will use the
129+
# configured default Storage Class.
130+
storageClass: null
131+
# Access Mode of the storage device being used for the PVC
132+
accessMode: ReadWriteOnce
133+
# Annotations to apply to the PVC
134+
annotations: {}
135+
# Run Vault in "standalone" mode. This is the default mode that will deploy if
136+
# no arguments are given to helm. This requires a PVC for data storage to use
137+
# the "file" backend. This mode is not highly available and should not be scaled
138+
# past a single replica.
139+
standalone:
140+
enabled: "-"
141+
142+
# config is a raw string of default configuration when using a Stateful
143+
# deployment. Default is to use a PersistentVolumeClaim mounted at /vault/data
144+
# and store data there. This is only used when using a Replica count of 1, and
145+
# using a stateful set. This should be HCL.
146+
147+
# Note: Configuration files are stored in ConfigMaps so sensitive data
148+
# such as passwords should be either mounted through extraSecretEnvironmentVars
149+
# or through a Kube secret. For more information see:
150+
# https://www.vaultproject.io/docs/platform/k8s/helm/run#protecting-sensitive-vault-configurations
151+
config: |
152+
ui = true
153+
154+
listener "tcp" {
155+
tls_disable = 1
156+
address = "[::]:8200"
157+
cluster_address = "[::]:8201"
158+
}
159+
storage "file" {
160+
path = "/vault/data"
161+
}
162+
ui:
163+
enabled: true
164+
serviceType: ClusterIP
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
apiVersion: kustomize.config.k8s.io/v1beta1
2+
kind: Kustomization
3+
resources:
4+
- helm-release.yaml

terraform/cloudflare/services.auto.tfvars

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ SERVICE_LIST = [
88
"traefik",
99
"grafana",
1010
"prometheus",
11-
"kube-dashboard"
11+
"kube-dashboard",
12+
"vault"
1213
]

0 commit comments

Comments
 (0)