Skip to content

Commit 0ac894e

Browse files
authored
Merge pull request #1044 from Aiven-Open/nosahama/EC-729/https-support-fastapi
Support mTLS
2 parents 4189abf + 1a0ec86 commit 0ac894e

29 files changed

+574
-57
lines changed

.coveragerc

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
[run]
22
branch = true
33
relative_files = true
4-
source = src
5-
disable_warnings = module-not-measured, no-data-collected
4+
source = src/karapace
5+
omit =
6+
/venv/*
7+
*/site-packages/*
8+
*/distutils/*
9+
disable_warnings = module-not-measured, no-data-collected, couldnt-parse
610

711
[report]
812
skip_empty = true

.github/workflows/container-smoke-test.yml

+10-4
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,17 @@ jobs:
3535
RUNNER_GID: ${{ env.RUNNER_GID }}
3636

3737
- name: Smoke test schema registry
38-
run: bin/smoke-test-schema-registry.sh
38+
run: make smoke-test-schema-registry
3939
env:
40-
KARAPACE_PORT: 8081
40+
PYTHON_VERSION: ${{ matrix.python-version }}
41+
KARAPACE_VERSION: ${{ env.KARAPACE_VERSION }}
42+
RUNNER_UID: ${{ env.RUNNER_UID }}
43+
RUNNER_GID: ${{ env.RUNNER_GID }}
4144

4245
- name: Smoke test REST proxy
43-
run: bin/smoke-test-rest-proxy.sh
46+
run: make smoke-test-rest-proxy
4447
env:
45-
KARAPACE_PORT: 8082
48+
PYTHON_VERSION: ${{ matrix.python-version }}
49+
KARAPACE_VERSION: ${{ env.KARAPACE_VERSION }}
50+
RUNNER_UID: ${{ env.RUNNER_UID }}
51+
RUNNER_GID: ${{ env.RUNNER_GID }}

.pre-commit-config.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
minimum_pre_commit_version: 2.9.2
2+
exclude: "certs/*"
23

34
repos:
45
- repo: https://github.com/pre-commit/pre-commit-hooks

GNUmakefile

+30-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ PYTHON ?= python3
66
PYTHON_VERSION ?= 3.10
77
DOCKER_COMPOSE ?= docker compose
88
KARAPACE-CLI ?= $(DOCKER_COMPOSE) -f container/compose.yml run --rm karapace-cli
9+
CERTS_FOLDER ?= /opt/karapace/certs
10+
PYTEST_ARGS ?=
911

1012
define PIN_VERSIONS_COMMAND
1113
pip install pip-tools && \
@@ -14,7 +16,6 @@ pip install pip-tools && \
1416
python -m piptools compile --upgrade --extra typing -o /karapace/requirements/requirements-typing.txt /karapace/pyproject.toml
1517
endef
1618

17-
1819
export PATH := $(VENV_DIR)/bin:$(PATH)
1920
export PS4 := \e[0m\e[32m==> \e[0m
2021
export LC_ALL := C
@@ -116,23 +117,28 @@ start-karapace-docker-resources:
116117
sudo chown ${RUNNER_UID}:${RUNNER_GID} .coverage.3.10 .coverage.3.11 .coverage.3.12
117118
$(DOCKER_COMPOSE) -f container/compose.yml up -d --build --wait --detach
118119

120+
.PHONY: smoke-test-schema-registry
121+
smoke-test-schema-registry: start-karapace-docker-resources
122+
$(KARAPACE-CLI) /opt/karapace/bin/smoke-test-schema-registry.sh
123+
124+
.PHONY: smoke-test-rest-proxy
125+
smoke-test-rest-proxy: start-karapace-docker-resources
126+
$(KARAPACE-CLI) /opt/karapace/bin/smoke-test-rest-proxy.sh
127+
119128
.PHONY: unit-tests-in-docker
120-
unit-tests-in-docker: export PYTEST_ARGS ?=
121129
unit-tests-in-docker: start-karapace-docker-resources
122130
rm -fr runtime/*
123131
$(KARAPACE-CLI) $(PYTHON) -m pytest -s -vvv $(PYTEST_ARGS) tests/unit/
124132
rm -fr runtime/*
125133

126134
.PHONY: e2e-tests-in-docker
127-
e2e-tests-in-docker: export PYTEST_ARGS ?=
128135
e2e-tests-in-docker: stop-karapace-docker-resources start-karapace-docker-resources
129136
rm -fr runtime/*
130137
sleep 10
131138
$(KARAPACE-CLI) $(PYTHON) -m pytest -s -vvv $(PYTEST_ARGS) tests/e2e/
132139
rm -fr runtime/*
133140

134141
.PHONY: integration-tests-in-docker
135-
integration-tests-in-docker: export PYTEST_ARGS ?=
136142
integration-tests-in-docker: start-karapace-docker-resources
137143
rm -fr runtime/*
138144
sleep 10
@@ -146,3 +152,23 @@ type-check-mypy-in-docker: start-karapace-docker-resources
146152
.PHONY: cli
147153
cli: start-karapace-docker-resources
148154
$(KARAPACE-CLI) bash
155+
156+
.PHONY: generate-sr-https-certs
157+
generate-sr-https-certs:
158+
$(info ====> Generating self-signed certificates <====)
159+
$(KARAPACE-CLI) mkcert -key-file $(CERTS_FOLDER)/key.pem -cert-file $(CERTS_FOLDER)/cert.pem \
160+
localhost \
161+
127.0.0.1 \
162+
0.0.0.0 \
163+
::1 \
164+
karapace-schema-registry \
165+
karapace-schema-registry-follower
166+
$(KARAPACE-CLI) mkcert -install
167+
168+
.PHONY: curl-sr-https
169+
curl-sr-https: header ?= 'Content-Type: application/vnd.schemaregistry.v1+json'
170+
curl-sr-https:
171+
$(info ====> Sending HTTPS $(method) request with data to $(url) <====)
172+
$(KARAPACE-CLI) curl -i -X $(method) --location $(url) --cacert /opt/karapace/certs/ca/rootCA.pem \
173+
--header $(header) \
174+
--data '$(data)'

README.rst

+6
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,12 @@ Keys to take special care are the ones needed to configure Kafka and advertised_
467467
* - ``server_tls_keyfile``
468468
- ``/path/to/keyfile``
469469
- Filename to a private key for the Karapace server in HTTPS mode.
470+
* - ``server_tls_cafile``
471+
- ``/path/to/cafile``
472+
- Filename to the SSL CA certificate.
473+
* - ``registry_scheme``
474+
- ``http``
475+
- Schema Registry scheme to use for rest-proxy, http | https (if certificates are provided).
470476
* - ``registry_host``
471477
- ``127.0.0.1``
472478
- Schema Registry host, used by Kafka Rest for schema related requests.

bin/smoke-test-rest-proxy.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
retries=5
44

55
for ((i = 0; i <= retries; i++)); do
6-
response=$(curl --silent --verbose --fail "http://localhost:$KARAPACE_PORT/topics")
6+
response=$(curl --silent --verbose --fail "http://karapace-rest-proxy:8082/topics")
77

88
if [[ $response == '["_schemas","__consumer_offsets"]' ]]; then
99
echo "Ok!"

bin/smoke-test-schema-registry.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ retries=5
55
for ((i = 0; i <= retries; i++)); do
66
response=$(
77
curl --silent --verbose --fail --request POST \
8+
--cacert "$CAROOT/rootCA.pem" \
89
--header 'Content-Type: application/vnd.schemaregistry.v1+json' \
910
--data '{"schema": "{\"type\": \"record\", \"name\": \"Obj\", \"fields\":[{\"name\": \"age\", \"type\": \"int\"}]}"}' \
10-
"http://localhost:$KARAPACE_PORT/subjects/test-key/versions"
11+
"https://karapace-schema-registry:8081/subjects/test-key/versions"
1112
)
1213

1314
if [[ $response == '{"id":1}' ]]; then

container/Dockerfile

+11-3
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,10 @@ ENV PATH="/venv/bin:$PATH"
5454
FROM karapace AS cli
5555
ARG RUNNER_UID
5656
ARG RUNNER_GID
57+
ENV CAROOT=/opt/karapace/certs/ca
5758

5859
# Setup files and directories.
59-
RUN mkdir /opt/karapace /opt/karapace/runtime /var/log/karapace /opt/karapace/coverage \
60+
RUN mkdir -p /opt/karapace /opt/karapace/runtime /var/log/karapace /opt/karapace/coverage $CAROOT \
6061
&& touch /opt/karapace/coverage/.coverage.3.10 /opt/karapace/coverage/.coverage.3.11 /opt/karapace/coverage/.coverage.3.12 \
6162
&& chown --recursive "$RUNNER_UID:$RUNNER_GID" /opt/karapace /opt/karapace/coverage /var/log/karapace
6263

@@ -65,8 +66,15 @@ COPY --from=openjdk:11 /usr/local/openjdk-11 /usr/local/openjdk-11
6566
ENV JAVA_HOME /usr/local/openjdk-11
6667
RUN update-alternatives --install /usr/bin/java java /usr/local/openjdk-11/bin/java 1
6768

68-
WORKDIR /opt/karapace
69+
# Install mkcert
70+
WORKDIR /mkcert
71+
RUN git clone https://github.com/FiloSottile/mkcert . \
72+
&& go build -ldflags "-X main.Version=$(git describe --tags)" \
73+
&& mv mkcert /usr/local/bin/mkcert \
74+
&& mkcert -install \
75+
&& rm -rf /mkcert
6976

77+
WORKDIR /opt/karapace
7078
COPY ./requirements /opt/karapace/requirements
7179
RUN python3 -m pip install -r /opt/karapace/requirements/requirements-dev.txt -r /opt/karapace/requirements/requirements-typing.txt
7280

@@ -90,4 +98,4 @@ WORKDIR /opt/karapace
9098
USER karapace
9199

92100
HEALTHCHECK --interval=10s --timeout=30s --retries=3 --start-period=60s \
93-
CMD python3 healthcheck.py http://localhost:$KARAPACE_PORT/_health || exit 1
101+
CMD python3 healthcheck.py $KARAPACE_ADVERTISED_PROTOCOL://$KARAPACE_HOST:$KARAPACE_PORT/_health || exit 1

container/certs/ca/rootCA-key.pem

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
-----BEGIN PRIVATE KEY-----
2+
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
39+
rbs+Ke8i10gM5UDJz6Mbg7E=
40+
-----END PRIVATE KEY-----

container/certs/ca/rootCA.pem

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIEjjCCAvagAwIBAgIRAPRO+H1J3Ch+LlAGf/46elswDQYJKoZIhvcNAQELBQAw
3+
XzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMRowGAYDVQQLDBFyb290
4+
QDNlMGU4ZGVhODY4MjEhMB8GA1UEAwwYbWtjZXJ0IHJvb3RAM2UwZThkZWE4Njgy
5+
MB4XDTI1MDIxODE3MjQzNVoXDTM1MDIxODE3MjQzNVowXzEeMBwGA1UEChMVbWtj
6+
ZXJ0IGRldmVsb3BtZW50IENBMRowGAYDVQQLDBFyb290QDNlMGU4ZGVhODY4MjEh
7+
MB8GA1UEAwwYbWtjZXJ0IHJvb3RAM2UwZThkZWE4NjgyMIIBojANBgkqhkiG9w0B
8+
AQEFAAOCAY8AMIIBigKCAYEAvp0aQh5bfI71Fsyg/Sa0TY1Z3vXW+UrXwe+uRASP
9+
gGUoEg7bkrrIJfYgJweXPmFMfzRKtI7qzaSx0pDCtvY+FMecapsER/eG2mDV7kAk
10+
uLOlENqnFNB1idjlDkqdKrBJiIIK4jSJl0zU+wyNahE9/eW10okWb9OttLoWJptf
11+
U+Okw8OEqQ6LRn9lT1pyGqe0HBGBpp51A9oxwKDXlbSTigN4io37O+jO0RtWs+xc
12+
V5FWEKgrgH8eebwtFGhtggXpu29af7ve1IjPkgnbkDPrcqnbdaKd01bg5l3ZK0CU
13+
Y13WxE6GLgZG1kL9o9wyff6vsi5qVSAcfJZhIX4f5gri9snSY83bnoHtLlXN41Qb
14+
W3MOIywsbkR1L5HFbMhVNzs5nnrgIMcJu5wkzEdQv0k2c9sb+MLjHLTAdL5EVKTi
15+
Lv91V75X3iAaUPqQ19JZNgBuTGeaVRGdS4qZC3+4XIJCTyM50SIKHHKfHukr4k+p
16+
6qnJSptoyhLUeb+AXRbifbrfAgMBAAGjRTBDMA4GA1UdDwEB/wQEAwICBDASBgNV
17+
HRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRELvMSBWlef043/pCcuHIBsAXz8jAN
18+
BgkqhkiG9w0BAQsFAAOCAYEAbDyGl1NaMk6AKTKg0pQ4Ejn5prvWrtE4v48YW73M
19+
PdAWkwM2JBKoAAhGyvpTsaQj0ffUtg+Pw9OaVYz0bBGYRAVNjiNLSlkbv7rBUPOg
20+
n3cLI4fIM2aL8qjrjSQRtrWHNLJqSavTKYpb2tA0tz/eX8/YRXkpg3a6GxeaW3oS
21+
F8jRqvB+XTIcrE6G2E+yUOfeENbm0nyE9EPH0UMf1UoIoxLW5UOcQVN//6FT0SOB
22+
xcQmJi3ODa+ujgTegdoAwdmk4Iu8BV3Wg4IUscIfK2DlR9A80rwB4Xb2Yppmwph8
23+
MqEmQ+Wb7xJA30ZxZT58RkRP8ZNJHOJO19XKCI+VG9OOCF9NSCK0ADq16/X6MHHf
24+
vf5d9UuOS/hD9IL2KfMoIGXSzRKIReTgDy50al4XGEjijb3JUA0PQLDzxsfim8Gw
25+
H4qU6TMkZcXiVw730Zl/TrbQjvHSLLOJcCwEyVa2wkNbkRYUkeD4p5assKEib7Jl
26+
TG5273Q182KKJ8iCWUUx3Kz2
27+
-----END CERTIFICATE-----

container/certs/cert.pem

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIEajCCAtKgAwIBAgIRAJGMqPyFCB2mjQG12ZjfPkQwDQYJKoZIhvcNAQELBQAw
3+
XzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMRowGAYDVQQLDBFyb290
4+
QDNlMGU4ZGVhODY4MjEhMB8GA1UEAwwYbWtjZXJ0IHJvb3RAM2UwZThkZWE4Njgy
5+
MB4XDTI1MDIyMDEwMzEwNFoXDTI3MDUyMDEwMzEwNFowRTEnMCUGA1UEChMebWtj
6+
ZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMRowGAYDVQQLDBFyb290QDRmODU2
7+
NGI0YzM1ZjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALW55X72hrGg
8+
T9cVIofHm6UTw/Tm7Z0uTn6cknv1nqBYu3Ng45b4lS5lYRL9egyb6oqRN0EwU8TP
9+
pp8if6nOLXwj0Q0DNDtWfIHw6U5UcC3b+l6ebv+cImHrvHZKIWPCG8OqZgKuDe0b
10+
AcN0xgUOrDYv9EsqXaubG3o8mUKjj9+CPKHeRzsziZTFXx4UIGeEmFaihUBJ+Ad6
11+
V9mh4jG+dTzZzC/uCLFjJis+Oh7Irp+k+zTmISfywbiZLAuA8YosblpisPWwESkL
12+
uKC3E51iieC4VEHRiGfpfOvlyoy2NHJ/VZhc2MIrr2ipn0HCdQ6DI2Ps1J/1slMF
13+
rw544EfKjksCAwEAAaOBujCBtzAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYI
14+
KwYBBQUHAwEwHwYDVR0jBBgwFoAURC7zEgVpXn9ON/6QnLhyAbAF8/IwbwYDVR0R
15+
BGgwZoIJbG9jYWxob3N0ghhrYXJhcGFjZS1zY2hlbWEtcmVnaXN0cnmCIWthcmFw
16+
YWNlLXNjaGVtYS1yZWdpc3RyeS1mb2xsb3dlcocEfwAAAYcEAAAAAIcQAAAAAAAA
17+
AAAAAAAAAAAAATANBgkqhkiG9w0BAQsFAAOCAYEAmqXanrhj2VJXgA10SZtwHOW0
18+
7FKh6MgNclZvuqKRc6bcoaphMzu3/L7YvHL4zFzBT5coyZuIIPrUnWud31OC5fne
19+
TWGTRiFR1cSD1rySnifnxDFJlQjzMBjNXVAeVmg97gLJQYkXHos0HnsMxPieOAed
20+
DN3cl4mHAMOFXLGmPRNVf47kdyiqGYmWCHd+0J0EDY/tu8vfWkE3TJH6PCKjdBno
21+
U1OM8zAW3ngqatSAHCqFA/coRSUkjGhEdOi0WK4k0o09uQ5FN946lvFtR0Ia3wAJ
22+
X+sbSCzmNemP9jHvrjrvKAsZiM2iwqmCr5rLROb927qFU1bI1TwKUliYLwv5NjGE
23+
Ncz8nkg7ABt3LFm1TLoom7Tk0jqRejumsFCRdeZ4cw3xDrPggUTWEYo55R5Y4NkU
24+
IGAh0cVWSkVlpW8w+XHmf8TrG7e2xXMxYDtIHv/Fpa/koh/9fE3TqV+xL60qVMr0
25+
fly6p+l+FpX7/1lUguKVY3lTYxiUUMt1UvTNdx4l
26+
-----END CERTIFICATE-----

container/certs/key.pem

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC1ueV+9oaxoE/X
3+
FSKHx5ulE8P05u2dLk5+nJJ79Z6gWLtzYOOW+JUuZWES/XoMm+qKkTdBMFPEz6af
4+
In+pzi18I9ENAzQ7VnyB8OlOVHAt2/penm7/nCJh67x2SiFjwhvDqmYCrg3tGwHD
5+
dMYFDqw2L/RLKl2rmxt6PJlCo4/fgjyh3kc7M4mUxV8eFCBnhJhWooVASfgHelfZ
6+
oeIxvnU82cwv7gixYyYrPjoeyK6fpPs05iEn8sG4mSwLgPGKLG5aYrD1sBEpC7ig
7+
txOdYonguFRB0Yhn6Xzr5cqMtjRyf1WYXNjCK69oqZ9BwnUOgyNj7NSf9bJTBa8O
8+
eOBHyo5LAgMBAAECggEAF9BAbp7Hj8c+LyUp3TkfAEbSyujoAkzrJFRILc5F9yUp
9+
izkLGeGBSw8l5WMp9zUHSxk0cGpwz72WTAwtRocqFrZq0pW05oGy1yRGrmkKOjg1
10+
WujQCtbe+o31qFqWfYgWM1HFBFzinkuHs6E9wbPmhUNLc/4dQDuXIjGGs+DTHaqu
11+
nFgA34fYjjVIAmMdwcRRbP0L3x9iw5yDu66cB51CoinaO6qCrSVcHI0ZFg8YPwcC
12+
h5nAMjku5juKO9lwVymzfsM5IUkkvCCr2Z34aoDiBOsLpercrYS6adUDZQfn/VUu
13+
Yieun5oNPHUJ/noPpg2G6pA6+51nEQgE4upEAOhw4QKBgQDE+8OP8eTGQ4YlASZf
14+
ZiqUe0Wq9UOb9psOiRKrRgoc237+iZ5nR83KsR/q20NoERaXFmQOwN8FUCGFcUg2
15+
SDlPsSnEBG14J/miIOciXaHY4wSIYKSvbtPMez11v+Cowsu42EEFs5I6fsLscEgh
16+
KWGkmL1rtC2rDqpZbd+a4QYZ/QKBgQDsK+26R/mBrR+QNh0WHRJg0nctolPtFkJk
17+
Iw+FbllNEe3PRhC5JpJWxRT13J1K58Rb0GZqR8vNmHJj97ZmlP8VWMazVhDvaZlN
18+
Zh9LBQy/mndTqS25XTOAErdwC1Wxr4wnUpadTYk3MZ0OhnoGoGpwXQlT0iJUVxqm
19+
vVwim+735wKBgE57PHRaXNq9RnHx3lb9/pL/9kbhxxkZjLei10RT+G186kEBlZHy
20+
osRSA7RvvZB11nlF24GhSHn2bhSbiLjP172viUNmvDK2Qphc4ZnokjY2ZLTtRE/9
21+
KPd8VoVWeGzkh4RS7L0XyXfyzziil6pWsWeBz15dACD6C9brlr4/T04FAoGBAM2G
22+
uR54jmjMiYBNp2hcKmc6IV8EOjdEPMi6PkKnMm3AoYzU8669I3MBlekUcYoDQj2I
23+
kegBzRmBhmL66rBBD++6z0i4KIrBAhl6OtdlcJ+5xAh5XQJIWo4lO5/1LUExfS2n
24+
UM1Z8YSn138RhlYH+jkIrhpU720oVFgwyGKSAxeXAoGAfiJ9HRCouub/QC0Y2f/1
25+
fbekU/zjGYIOk6G1l78dGku+7bugL4Oj3QBENDO3EkACl0iLE82pBmYT6B/wBmsL
26+
fe0yr2VXzaU1jRHzl+fUdT7vhDB7TyDnJjviD0F8buXYpqaqUekXsW9rwWBe02z7
27+
P85R/EcPtU2p+Kxlt6SgnpM=
28+
-----END PRIVATE KEY-----

0 commit comments

Comments
 (0)