Enable configuring Envoy private key provider through ProxyConfig#2261
Enable configuring Envoy private key provider through ProxyConfig#2261istio-testing merged 4 commits intoistio:masterfrom
Conversation
|
😊 Welcome @rveerama1! This is either your first contribution to the Istio api repo, or it's been You can learn more about the Istio working groups, code of conduct, and contributing guidelines Thanks for contributing! Courtesy of your friendly welcome wagon. |
|
Hi @rveerama1. Thanks for your PR. I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
|
/ok-to-test |
|
@howardjohn This is the API change part PR and the relevant istio change PR is istio/istio#37681 |
|
Istio proxy relevant change is here: istio/proxy#3752 |
187bcaf to
75899d2
Compare
howardjohn
left a comment
There was a problem hiding this comment.
I am not a huge fan of exposing users to the raw underlying Envoy types -- especially since they are NOT passthrough and istio needs to have code to handle each type.
|
The happy path is exciting. |
This can be configured mesh wide and per-workload. In this case, user/admin has to configure per-workload basis and deploy it based on some label to that particular node which supports AVX-512. |
The operations are https://en.wikipedia.org/wiki/AVX-512#IFMA calls, so the registers are 512 bits wide. Internally https://github.com/intel/ipp-crypto/tree/develop/sources/ippcp/crypto_mb library is called to perform the cryptographic operations. |
75899d2 to
0dcfcf0
Compare
|
/test-all |
|
@howardjohn Can you please review the latest change? Thanks! |
howardjohn
left a comment
There was a problem hiding this comment.
This LGTM other than the small comment.
I would like to see approval from some set of @shankgan @myidpt @jacob-delgado @costinm before merging though to make sure there is broader agreement (not all of them needed)
|
Since the user cannot put node labels/tolerations and use affinity/anti-affinity on namespaces it needs to go on something that can be placed on a deployment, statefulset or daemonset. For this case |
|
LGTM, but it'd be nice to get rid of the |
Private key provider configuration will be provided by user in ProxyConfig configuration. This information will be used to send configuration to gateway/sidecar proxies.
0dcfcf0 to
a472034
Compare
|
Thanks for the reviews @howardjohn @jacob-delgado, I have removed the 'name' part and updated the PR. PTAL. |
Introduction
Since 1.20 Envoy has supported configuring private key providers over xDS. Also, the first in-tree private key provider (CryptoMB) was released in Envoy 1.20 contrib build (Ref PR: envoyproxy/envoy#17826 ).
The idea in CryptoMB private key provider is that incoming TLS handshakes’ RSA operations are accelerated using AVX-512 multi-buffer instructions. For more details, see this Intel whitepaper which contains some more information about the AVX-512 instructions and potential performance increase: https://www.intel.com/content/www/us/en/architecture-and-technology/crypto-acceleration-in-xeon-scalable-processors-wp.html.
An introductory presentation is available here : https://www.intel.com/content/www/us/en/developer/videos/accelerate-envoy-with-advanced-vector-extensions.html
The private key providers can be configured using SDS protocol: the private_key field in Envoy Secret is replaced with the private key provider configuration. For example,
The problem is that private key providers are typically host-dependent: for example, CryptoMb provider requires a host with support for AVX-512 instruction set. Therefore, we propose an extension mechanism, which allows for dynamic configuration of private key providers.
To set the mesh wide defaults, configure the
defaultConfigsection ofmeshConfig. For example:This can also be configured on a per-workload basis by configuring the
proxy.istio.io/configannotation on the pod.For example: