Skip to content
This repository has been archived by the owner on Aug 25, 2021. It is now read-only.

Commit

Permalink
ACLs: support external servers
Browse files Browse the repository at this point in the history
* server-acl-init-job sets server addresses
  if 'externalServers.enabled' is true
* server-acl-init and server-acl-init-cleanup jobs
  and resources now run either when
  servers are enabled or when externalServers are enabled
* Add new acls.bootstrapToken value for providing your own
  bootstrap token.
  • Loading branch information
ishustava committed Apr 10, 2020
1 parent 847106d commit 975a7b7
Show file tree
Hide file tree
Showing 20 changed files with 343 additions and 20 deletions.
3 changes: 2 additions & 1 deletion templates/server-acl-init-cleanup-clusterrole.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{- if (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) }}
{{- $serverEnabled := (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) -}}
{{- if (or $serverEnabled .Values.externalServers.enabled) }}
{{- if (or .Values.global.acls.manageSystemACLs .Values.global.bootstrapACLs) }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
Expand Down
3 changes: 2 additions & 1 deletion templates/server-acl-init-cleanup-clusterrolebinding.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{- if (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) }}
{{- $serverEnabled := (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) -}}
{{- if (or $serverEnabled .Values.externalServers.enabled) }}
{{- if (or .Values.global.acls.manageSystemACLs .Values.global.bootstrapACLs) }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
Expand Down
3 changes: 2 additions & 1 deletion templates/server-acl-init-cleanup-job.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{- if (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) }}
{{- $serverEnabled := (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) -}}
{{- if (or $serverEnabled .Values.externalServers.enabled) }}
{{- if (or .Values.global.acls.manageSystemACLs .Values.global.bootstrapACLs) }}
{{- /* See reason for this in server-acl-init-job.yaml */ -}}
{{- if eq (int .Values.server.updatePartition) 0 }}
Expand Down
3 changes: 2 additions & 1 deletion templates/server-acl-init-cleanup-podsecuritypolicy.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{- if (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) }}
{{- $serverEnabled := (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) -}}
{{- if (or $serverEnabled .Values.externalServers.enabled) }}
{{- if (or .Values.global.acls.manageSystemACLs .Values.global.bootstrapACLs) }}
{{- if .Values.global.enablePodSecurityPolicies }}
apiVersion: policy/v1beta1
Expand Down
3 changes: 2 additions & 1 deletion templates/server-acl-init-cleanup-serviceaccount.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{- if (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) }}
{{- $serverEnabled := (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) -}}
{{- if (or $serverEnabled .Values.externalServers.enabled) }}
{{- if (or .Values.global.acls.manageSystemACLs .Values.global.bootstrapACLs) }}
apiVersion: v1
kind: ServiceAccount
Expand Down
3 changes: 2 additions & 1 deletion templates/server-acl-init-clusterrole.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{- if (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) }}
{{- $serverEnabled := (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) -}}
{{- if (or $serverEnabled .Values.externalServers.enabled) }}
{{- if (or .Values.global.acls.manageSystemACLs .Values.global.bootstrapACLs) }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
Expand Down
3 changes: 2 additions & 1 deletion templates/server-acl-init-clusterrolebinding.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{- if (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) }}
{{- $serverEnabled := (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) -}}
{{- if (or $serverEnabled .Values.externalServers.enabled) }}
{{- if (or .Values.global.acls.manageSystemACLs .Values.global.bootstrapACLs) }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
Expand Down
44 changes: 37 additions & 7 deletions templates/server-acl-init-job.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{- if (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) }}
{{- $serverEnabled := (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) -}}
{{- if (or $serverEnabled .Values.externalServers.enabled) }}
{{- if (or .Values.global.acls.manageSystemACLs .Values.global.bootstrapACLs) }}
{{- /* We don't render this job when server.updatePartition > 0 because that
means a server rollout is in progress and this job won't complete unless
Expand Down Expand Up @@ -32,7 +33,7 @@ spec:
spec:
restartPolicy: Never
serviceAccountName: {{ template "consul.fullname" . }}-server-acl-init
{{- if (or .Values.global.tls.enabled (and .Values.global.acls.replicationToken.secretName .Values.global.acls.replicationToken.secretKey)) }}
{{- if (or .Values.global.tls.enabled (and .Values.global.acls.replicationToken.secretName .Values.global.acls.replicationToken.secretKey) (and .Values.global.acls.bootstrapToken.secretName .Values.global.acls.bootstrapToken.secretKey)) }}
volumes:
{{- if .Values.global.tls.enabled }}
- name: consul-ca-cert
Expand All @@ -46,7 +47,14 @@ spec:
- key: {{ default "tls.crt" .Values.global.tls.caCert.secretKey }}
path: tls.crt
{{- end }}
{{- if (and .Values.global.acls.replicationToken.secretName .Values.global.acls.replicationToken.secretKey) }}
{{- if (and .Values.global.acls.bootstrapToken.secretName .Values.global.acls.bootstrapToken.secretKey) }}
- name: bootstrap-token
secret:
secretName: {{ .Values.global.acls.bootstrapToken.secretName }}
items:
- key: {{ .Values.global.acls.bootstrapToken.secretKey }}
path: bootstrap-token
{{- else if (and .Values.global.acls.replicationToken.secretName .Values.global.acls.replicationToken.secretKey) }}
- name: acl-replication-token
secret:
secretName: {{ .Values.global.acls.replicationToken.secretName }}
Expand All @@ -63,14 +71,18 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
{{- if (or .Values.global.tls.enabled (and .Values.global.acls.replicationToken.secretName .Values.global.acls.replicationToken.secretKey)) }}
{{- if (or .Values.global.tls.enabled (and .Values.global.acls.replicationToken.secretName .Values.global.acls.replicationToken.secretKey) (and .Values.global.acls.bootstrapToken.secretName .Values.global.acls.bootstrapToken.secretKey)) }}
volumeMounts:
{{- if .Values.global.tls.enabled }}
- name: consul-ca-cert
mountPath: /consul/tls/ca
readOnly: true
{{- end }}
{{- if (and .Values.global.acls.replicationToken.secretName .Values.global.acls.replicationToken.secretKey) }}
{{- if (and .Values.global.acls.bootstrapToken.secretName .Values.global.acls.bootstrapToken.secretKey) }}
- name: bootstrap-token
mountPath: /consul/acl/tokens
readOnly: true
{{- else if (and .Values.global.acls.replicationToken.secretName .Values.global.acls.replicationToken.secretKey) }}
- name: acl-replication-token
mountPath: /consul/acl/tokens
readOnly: true
Expand All @@ -83,16 +95,32 @@ spec:
CONSUL_FULLNAME="{{template "consul.fullname" . }}"
consul-k8s server-acl-init \
{{- if .Values.externalServers.enabled }}
{{- if not (or .Values.externalServers.https.address .Values.client.join)}}{{ fail "either client.join or externalServers.https.address must be set if externalServers.enabled is true" }}{{ end -}}
{{- if .Values.externalServers.https.address }}
-server-address={{ .Values.externalServers.https.address }} \
{{- else }}
{{- range .Values.client.join }}
-server-address={{ . }} \
{{- end }}
{{- end }}
-server-port={{ .Values.externalServers.https.port }} \
{{- else }}
{{- range $index := until (.Values.server.replicas | int) }}
-server-address="${CONSUL_FULLNAME}-server-{{ $index }}.${CONSUL_FULLNAME}-server.${NAMESPACE}.svc" \
{{- end }}
-resource-prefix={{ template "consul.fullname" . }} \
{{- end }}
-resource-prefix=${CONSUL_FULLNAME} \
-k8s-namespace={{ .Release.Namespace }} \
{{- if .Values.global.tls.enabled }}
-use-https \
{{- if not (and .Values.externalServers.enabled .Values.externalServers.https.useSystemRoots) }}
-consul-ca-cert=/consul/tls/ca/tls.crt \
{{- end }}
{{- if not .Values.externalServers.enabled }}
-server-port=8501 \
{{- end }}
{{- end }}
{{- if .Values.syncCatalog.enabled }}
-create-sync-token=true \
{{- end }}
Expand Down Expand Up @@ -120,7 +148,9 @@ spec:
{{- if .Values.global.acls.createReplicationToken }}
-create-acl-replication-token=true \
{{- end }}
{{- if (and .Values.global.acls.replicationToken.secretName .Values.global.acls.replicationToken.secretKey) }}
{{- if (and .Values.global.acls.bootstrapToken.secretName .Values.global.acls.bootstrapToken.secretKey) }}
-bootstrap-token-file=/consul/acl/tokens/bootstrap-token \
{{- else if (and .Values.global.acls.replicationToken.secretName .Values.global.acls.replicationToken.secretKey) }}
-acl-replication-token-file=/consul/acl/tokens/acl-replication-token \
{{- end }}
{{- if .Values.global.enableConsulNamespaces }}
Expand Down
3 changes: 2 additions & 1 deletion templates/server-acl-init-podsecuritypolicy.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{- if (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) }}
{{- $serverEnabled := (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) -}}
{{- if (or $serverEnabled .Values.externalServers.enabled) }}
{{- if (or .Values.global.acls.manageSystemACLs .Values.global.bootstrapACLs) }}
{{- if .Values.global.enablePodSecurityPolicies }}
apiVersion: policy/v1beta1
Expand Down
3 changes: 2 additions & 1 deletion templates/server-acl-init-serviceaccount.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{- if (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) }}
{{- $serverEnabled := (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled)) -}}
{{- if (or $serverEnabled .Values.externalServers.enabled) }}
{{- if (or .Values.global.acls.manageSystemACLs .Values.global.bootstrapACLs) }}
apiVersion: v1
kind: ServiceAccount
Expand Down
12 changes: 12 additions & 0 deletions test/unit/server-acl-init-cleanup-clusterrole.bats
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,18 @@ load _helpers
[ "${actual}" = "true" ]
}

@test "serverACLInitCleanup/ClusterRole: enabled with externalServers.enabled=true and global.acls.manageSystemACLs=true" {
cd `chart_dir`
local actual=$(helm template \
-x templates/server-acl-init-cleanup-clusterrole.yaml \
--set 'global.acls.manageSystemACLs=true' \
--set 'externalServers.enabled=true' \
--set 'externalServers.https.address=foo.com' \
. | tee /dev/stderr |
yq 'length > 0' | tee /dev/stderr)
[ "${actual}" = "true" ]
}

#--------------------------------------------------------------------
# global.enablePodSecurityPolicies

Expand Down
12 changes: 12 additions & 0 deletions test/unit/server-acl-init-cleanup-clusterrolebinding.bats
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,15 @@ load _helpers
yq 'length > 0' | tee /dev/stderr)
[ "${actual}" = "true" ]
}

@test "serverACLInitCleanup/ClusterRoleBinding: enabled with externalServers.enabled=true and global.acls.manageSystemACLs=true" {
cd `chart_dir`
local actual=$(helm template \
-x templates/server-acl-init-cleanup-clusterrolebinding.yaml \
--set 'global.acls.manageSystemACLs=true' \
--set 'externalServers.enabled=true' \
--set 'externalServers.https.address=foo.com' \
. | tee /dev/stderr |
yq 'length > 0' | tee /dev/stderr)
[ "${actual}" = "true" ]
}
12 changes: 12 additions & 0 deletions test/unit/server-acl-init-cleanup-job.bats
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,15 @@ load _helpers
yq -c '.spec.template.spec.containers[0].args' | tee /dev/stderr)
[ "${actual}" = '["delete-completed-job","-k8s-namespace=default","release-name-consul-server-acl-init"]' ]
}

@test "serverACLInitCleanup/Job: enabled with externalServers.enabled=true and global.acls.manageSystemACLs=true" {
cd `chart_dir`
local actual=$(helm template \
-x templates/server-acl-init-cleanup-job.yaml \
--set 'global.acls.manageSystemACLs=true' \
--set 'externalServers.enabled=true' \
--set 'externalServers.https.address=foo.com' \
. | tee /dev/stderr |
yq 'length > 0' | tee /dev/stderr)
[ "${actual}" = "true" ]
}
13 changes: 13 additions & 0 deletions test/unit/server-acl-init-cleanup-podsecuritypolicy.bats
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,16 @@ load _helpers
yq 'length > 0' | tee /dev/stderr)
[ "${actual}" = "true" ]
}

@test "serverACLInitCleanup/PodSecurityPolicy: enabled with externalServers.enabled=true and global.acls.manageSystemACLs=true" {
cd `chart_dir`
local actual=$(helm template \
-x templates/server-acl-init-cleanup-podsecuritypolicy.yaml \
--set 'global.acls.manageSystemACLs=true' \
--set 'global.enablePodSecurityPolicies=true' \
--set 'externalServers.enabled=true' \
--set 'externalServers.https.address=foo.com' \
. | tee /dev/stderr |
yq 'length > 0' | tee /dev/stderr)
[ "${actual}" = "true" ]
}
13 changes: 13 additions & 0 deletions test/unit/server-acl-init-cleanup-serviceaccount.bats
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,18 @@ load _helpers
[ "${actual}" = "true" ]
}

@test "serverACLInitCleanup/ServiceAccount: enabled with externalServers.enabled=true and global.acls.manageSystemACLs=true" {
cd `chart_dir`
local actual=$(helm template \
-x templates/server-acl-init-cleanup-serviceaccount.yaml \
--set 'global.acls.manageSystemACLs=true' \
--set 'externalServers.enabled=true' \
--set 'externalServers.https.address=foo.com' \
. | tee /dev/stderr |
yq 'length > 0' | tee /dev/stderr)
[ "${actual}" = "true" ]
}

#--------------------------------------------------------------------
# global.imagePullSecrets

Expand All @@ -63,3 +75,4 @@ load _helpers
yq -r '.imagePullSecrets[1].name' | tee /dev/stderr)
[ "${actual}" = "my-secret2" ]
}

12 changes: 12 additions & 0 deletions test/unit/server-acl-init-clusterrolebinding.bats
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,15 @@ load _helpers
yq 'length > 0' | tee /dev/stderr)
[ "${actual}" = "true" ]
}

@test "serverACLInit/ClusterRoleBinding: enabled with externalServers.enabled=true and global.acls.manageSystemACLs=true" {
cd `chart_dir`
local actual=$(helm template \
-x templates/server-acl-init-clusterrolebinding.yaml \
--set 'global.acls.manageSystemACLs=true' \
--set 'externalServers.enabled=true' \
--set 'externalServers.https.address=foo.com' \
. | tee /dev/stderr |
yq 'length > 0' | tee /dev/stderr)
[ "${actual}" = "true" ]
}
Loading

0 comments on commit 975a7b7

Please sign in to comment.