Skip to content

Commit

Permalink
use consul-ca-cert when client disabled for sync catalog and auto enc…
Browse files Browse the repository at this point in the history
…rypt (hashicorp#891)

Use consul-ca-cert when sync-catalog is enabled and autoencrypt is enabled but clients are disabled.
  • Loading branch information
kschoche authored Apr 1, 2021
1 parent 7dfb776 commit 46a89d8
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ BUG FIXES:
## 0.31.1 (Mar 19, 2021)

BUG FIXES:
* Sync Catalog: fix issue running with clients disabled and auto encrypt enabled. [[GH-891](https://github.com/hashicorp/consul-helm/pull/891)]
* Remove `kubeVersion` in `Chart.yaml` since it was causing installs to fail on EKS and GKE. [[GH-873](https://github.com/hashicorp/consul-helm/pull/873)]

## 0.31.0 (Mar 18, 2021)
Expand Down
9 changes: 5 additions & 4 deletions templates/sync-catalog-deployment.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{{- $clientEnabled := (or (and (ne (.Values.client.enabled | toString) "-") .Values.client.enabled) (and (eq (.Values.client.enabled | toString) "-") .Values.global.enabled)) }}
{{- if (or (and (ne (.Values.syncCatalog.enabled | toString) "-") .Values.syncCatalog.enabled) (and (eq (.Values.syncCatalog.enabled | toString) "-") .Values.global.enabled)) }}
# The deployment for running the sync-catalog pod
apiVersion: apps/v1
Expand Down Expand Up @@ -43,7 +44,7 @@ spec:
- key: {{ default "tls.crt" .Values.global.tls.caCert.secretKey }}
path: tls.crt
{{- end }}
{{- if .Values.global.tls.enableAutoEncrypt }}
{{- if (and .Values.global.tls.enableAutoEncrypt $clientEnabled) }}
- name: consul-auto-encrypt-ca-cert
emptyDir:
medium: "Memory"
Expand Down Expand Up @@ -96,7 +97,7 @@ spec:
{{- end }}
{{- if .Values.global.tls.enabled }}
volumeMounts:
{{- if .Values.global.tls.enableAutoEncrypt }}
{{- if (and .Values.global.tls.enableAutoEncrypt $clientEnabled) }}
- name: consul-auto-encrypt-ca-cert
{{- else }}
- name: consul-ca-cert
Expand Down Expand Up @@ -193,7 +194,7 @@ spec:
resources:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- if or .Values.global.acls.manageSystemACLs (and .Values.global.tls.enabled .Values.global.tls.enableAutoEncrypt) }}
{{- if or .Values.global.acls.manageSystemACLs (and .Values.global.tls.enabled .Values.global.tls.enableAutoEncrypt $clientEnabled) }}
initContainers:
{{- if .Values.global.acls.manageSystemACLs }}
- name: sync-acl-init
Expand All @@ -213,7 +214,7 @@ spec:
memory: "25Mi"
cpu: "50m"
{{- end }}
{{- if (and .Values.global.tls.enabled .Values.global.tls.enableAutoEncrypt) }}
{{- if (and .Values.global.tls.enabled .Values.global.tls.enableAutoEncrypt $clientEnabled) }}
{{- include "consul.getAutoEncryptClientCA" . | nindent 6 }}
{{- end }}
{{- end }}
Expand Down
35 changes: 33 additions & 2 deletions test/unit/sync-catalog-deployment.bats
Original file line number Diff line number Diff line change
Expand Up @@ -517,6 +517,19 @@ load _helpers
[ "${actual}" = "key" ]
}

@test "syncCatalog/Deployment: consul-auto-encrypt-ca-cert volume is not added with auto-encrypt and client.enabled=false" {
cd `chart_dir`
local actual=$(helm template \
-s templates/sync-catalog-deployment.yaml \
--set 'syncCatalog.enabled=true' \
--set 'global.tls.enabled=true' \
--set 'global.tls.enableAutoEncrypt=true' \
--set 'client.enabled=false' \
. | tee /dev/stderr |
yq '.spec.template.spec.volumes[] | select(.name == "consul-auto-encrypt-ca-cert")' | tee /dev/stderr)
[ "${actual}" = "" ]
}

@test "syncCatalog/Deployment: consul-auto-encrypt-ca-cert volume is added when TLS with auto-encrypt is enabled" {
cd `chart_dir`
local actual=$(helm template \
Expand All @@ -541,6 +554,19 @@ load _helpers
[ "${actual}" = "true" ]
}

@test "syncCatalog/Deployment: consul-ca-cert volumeMount is added when TLS with auto-encrypt is enabled and client disabled" {
cd `chart_dir`
local actual=$(helm template \
-s templates/sync-catalog-deployment.yaml \
--set 'syncCatalog.enabled=true' \
--set 'global.tls.enabled=true' \
--set 'global.tls.enableAutoEncrypt=true' \
--set 'client.enabled=false' \
. | tee /dev/stderr |
yq '.spec.template.spec.containers[0].volumeMounts[] | select(.name == "consul-ca-cert") | length > 0' | tee /dev/stderr)
[ "${actual}" = "true" ]
}

@test "syncCatalog/Deployment: get-auto-encrypt-client-ca init container is created when TLS with auto-encrypt is enabled" {
cd `chart_dir`
local actual=$(helm template \
Expand Down Expand Up @@ -834,18 +860,23 @@ load _helpers
[ "${actual}" = "/consul/tls/ca/tls.crt" ]
}
@test "syncCatalog/Deployment: consul service is used when client.enabled=false" {
@test "syncCatalog/Deployment: consul service is used when client.enabled=false and global.tls.enabled=true and autoencrypt on" {
cd `chart_dir`
local env=$(helm template \
-s templates/sync-catalog-deployment.yaml \
--set 'syncCatalog.enabled=true' \
--set 'global.tls.enabled=true' \
--set 'global.tls.enableAutoEncrypt=true' \
--set 'client.enabled=false' \
. | tee /dev/stderr |
yq -r '.spec.template.spec.containers[0].env[]' | tee /dev/stderr)
local actual
actual=$(echo $env | jq -r '. | select(.name == "CONSUL_HTTP_ADDR") | .value' | tee /dev/stderr)
[ "${actual}" = 'http://RELEASE-NAME-consul-server:8500' ]
[ "${actual}" = 'https://RELEASE-NAME-consul-server:8501' ]
actual=$(echo $env | jq -r '. | select(.name == "CONSUL_CACERT") | .value' | tee /dev/stderr)
[ "${actual}" = "/consul/tls/ca/tls.crt" ]
}
@test "syncCatalog/Deployment: consul service is used when client.enabled=false and global.tls.enabled=true" {
Expand Down

0 comments on commit 46a89d8

Please sign in to comment.