Support Nested Spire with External Agent (#117)
This commit is contained in:
@@ -91,7 +91,9 @@ Create the name of the service account to use
|
||||
{{- end }}
|
||||
|
||||
{{- define "spire-agent.server-address" }}
|
||||
{{- if .Values.server.address }}
|
||||
{{- if and (ne (len (dig "spire" "upstreamSpireAddress" "" .Values.global)) 0) .Values.upstream }}
|
||||
{{- print .Values.global.spire.upstreamSpireAddress }}
|
||||
{{- else if .Values.server.address }}
|
||||
{{- .Values.server.address }}
|
||||
{{- else }}
|
||||
{{ .Release.Name }}-server.{{ include "spire-agent.server.namespace" . }}
|
||||
|
||||
@@ -76,6 +76,9 @@ trustBundleURL: ""
|
||||
trustBundleFormat: pem
|
||||
bundleConfigMap: spire-bundle
|
||||
|
||||
# @ignored
|
||||
upstream: false
|
||||
|
||||
server:
|
||||
address: ""
|
||||
port: 8081
|
||||
|
||||
@@ -250,5 +250,6 @@ In order to run Tornjak with simple HTTP Connection only, make sure you don't cr
|
||||
| upstreamAuthority.spire.enabled | bool | `false` | |
|
||||
| upstreamAuthority.spire.server.address | string | `""` | |
|
||||
| upstreamAuthority.spire.server.port | int | `8081` | |
|
||||
| upstreamAuthority.spire.upstreamDriver | string | `""` | |
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
@@ -153,6 +153,14 @@ Create the name of the service account to use
|
||||
{{- $config | toYaml }}
|
||||
{{- end }}
|
||||
|
||||
{{- define "spire-server.upstream-spire-address" }}
|
||||
{{- if ne (len (dig "spire" "upstreamSpireAddress" "" .Values.global)) 0 }}
|
||||
{{- print .Values.global.spire.upstreamSpireAddress }}
|
||||
{{- else }}
|
||||
{{- print .Values.upstreamAuthority.spire.server.address }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Tornjak specific section
|
||||
*/}}
|
||||
|
||||
@@ -113,7 +113,7 @@ plugins:
|
||||
UpstreamAuthority:
|
||||
- spire:
|
||||
plugin_data:
|
||||
server_address: {{ .server.address | quote }}
|
||||
server_address: {{ include "spire-server.upstream-spire-address" $root | quote }}
|
||||
server_port: {{ .server.port }}
|
||||
workload_api_socket: "/run/spire/upstream_agent/spire-agent.sock"
|
||||
{{- end }}
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
{{- if .Values.upstreamAuthority.spire.enabled }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "spire-server.serviceAccountName" . }}-pre-delete
|
||||
namespace: {{ include "spire-server.namespace" . }}
|
||||
labels:
|
||||
{{- include "spire-server.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
"helm.sh/hook": pre-delete
|
||||
"helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ include "spire-server.fullname" . }}-pre-delete
|
||||
namespace: {{ include "spire-server.namespace" . }}
|
||||
annotations:
|
||||
"helm.sh/hook": pre-delete
|
||||
"helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed
|
||||
rules:
|
||||
- apiGroups: ["apps"]
|
||||
resources: ["statefulsets"]
|
||||
resourceNames: [{{ include "spire-server.fullname" . | quote }}]
|
||||
verbs: ["get", "delete"]
|
||||
- apiGroups: [""]
|
||||
resources: ["pods"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
---
|
||||
kind: RoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ include "spire-server.fullname" . }}-pre-delete
|
||||
namespace: {{ include "spire-server.namespace" . }}
|
||||
annotations:
|
||||
"helm.sh/hook": pre-delete
|
||||
"helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ include "spire-server.serviceAccountName" . }}-pre-delete
|
||||
namespace: {{ include "spire-server.namespace" . }}
|
||||
roleRef:
|
||||
kind: Role
|
||||
name: {{ include "spire-server.fullname" . }}-pre-delete
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: {{ include "spire-server.fullname" . }}-pre-delete
|
||||
namespace: {{ include "spire-server.namespace" . }}
|
||||
labels:
|
||||
{{- include "spire-server.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
"helm.sh/hook": pre-delete
|
||||
"helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
name: {{ include "spire-server.fullname" . }}-pre-delete
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
serviceAccountName: {{ include "spire-server.serviceAccountName" . }}-pre-delete
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: pre-delete-job
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 10 }}
|
||||
image: {{ template "spire-lib.kubectl-image" (dict "appVersion" $.Chart.AppVersion "image" .Values.tools.kubectl.image "global" .Values.global "KubeVersion" .Capabilities.KubeVersion.Version) }}
|
||||
args:
|
||||
- delete
|
||||
- -n
|
||||
- {{ include "spire-server.namespace" . }}
|
||||
- statefulset
|
||||
- {{ include "spire-server.fullname" . }}
|
||||
- --wait
|
||||
- name: pre-delete-check
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 10 }}
|
||||
image: {{ template "spire-lib.kubectl-image" (dict "appVersion" $.Chart.AppVersion "image" .Values.tools.kubectl.image "global" .Values.global "KubeVersion" .Capabilities.KubeVersion.Version) }}
|
||||
args:
|
||||
- wait
|
||||
- --for=delete
|
||||
- pod
|
||||
- -l
|
||||
- app.kubernetes.io/instance={{ include "spire-server.name" . }},app.kubernetes.io/name={{ .Release.Name }},app.kubernetes.io/component=server
|
||||
- -n
|
||||
- {{ include "spire-server.namespace" . }}
|
||||
{{- end }}
|
||||
@@ -13,6 +13,7 @@ metadata:
|
||||
namespace: {{ include "spire-server.namespace" . }}
|
||||
labels:
|
||||
{{- include "spire-server.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: server
|
||||
spec:
|
||||
{{- if not .Values.autoscaling.enabled }}
|
||||
{{- if and (eq .Values.dataStore.sql.databaseType "sqlite3") (gt (int .Values.replicaCount) 1) }}
|
||||
@@ -24,6 +25,7 @@ spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "spire-server.selectorLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/component: server
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
@@ -36,6 +38,7 @@ spec:
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "spire-server.selectorLabels" . | nindent 8 }}
|
||||
app.kubernetes.io/component: server
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
@@ -128,6 +131,11 @@ spec:
|
||||
mountPath: /run/spire/upstream_ca
|
||||
readOnly: false
|
||||
{{ end }}
|
||||
{{- if gt (len .Values.upstreamAuthority.spire.upstreamDriver) 0 }}
|
||||
- name: upstream-agent
|
||||
mountPath: /run/spire/upstream_agent
|
||||
readOnly: true
|
||||
{{ end }}
|
||||
{{- if gt (len .Values.extraVolumeMounts) 0 }}
|
||||
{{- toYaml .Values.extraVolumeMounts | nindent 12 }}
|
||||
{{- end }}
|
||||
@@ -272,6 +280,12 @@ spec:
|
||||
secret:
|
||||
secretName: {{ include "spire-server.upstream-ca-secret" . }}
|
||||
{{- end }}
|
||||
{{- if gt (len .Values.upstreamAuthority.spire.upstreamDriver) 0 }}
|
||||
- name: upstream-agent
|
||||
csi:
|
||||
driver: {{ .Values.upstreamAuthority.spire.upstreamDriver }}
|
||||
readOnly: true
|
||||
{{- end }}
|
||||
{{- if eq (.Values.controllerManager.enabled | toString) "true" }}
|
||||
- name: controller-manager-config
|
||||
configMap:
|
||||
|
||||
@@ -5,6 +5,7 @@ metadata:
|
||||
namespace: {{ include "spire-server.namespace" . }}
|
||||
labels:
|
||||
{{- include "spire-server.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: test
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
spec:
|
||||
|
||||
@@ -7,6 +7,7 @@ metadata:
|
||||
namespace: {{ include "spire-server.namespace" . }}
|
||||
labels:
|
||||
{{- include "spire-server.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: test
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
spec:
|
||||
|
||||
@@ -238,6 +238,7 @@ upstreamAuthority:
|
||||
renewBefore: ""
|
||||
spire:
|
||||
enabled: false
|
||||
upstreamDriver: ""
|
||||
server:
|
||||
address: ""
|
||||
port: 8081
|
||||
|
||||
Reference in New Issue
Block a user