Implementing TLS certificates#
Set up a custom x.509 certificate for the Hybrid Manager Portal#
You can change the self-signed x.509 certificate used by the Hybrid Manager (HM) Portal with your own.
To import your own certificate you need to create a Kubernetes secret containing the server certificate and the private key.
Generate the certificate#
Generate the base64 encoded string of your certificate (example:
my-certificate.crt ) and private key (example:
my-certificate.key ).
cat my-certificate.crt | base64
cat my-certificate.key | base64
Create the yaml file#
Create a file (example: my-secret.yaml ) with the following content
and replace <base64 encoded string> with the values generated in the
previous step.
apiVersion: v1
data:
tls.crt: <base64 encoded string>
tls.key: <base64 encoded string>
kind: Secret
metadata:
name: my-portal-certificate
namespace: default
annotations:
replicator.v1.mittwald.de/replicate-to: istio-system
type: kubernetes.io/tls
Apply the secret in your Kubernetes cluster#
kubectl apply -n default -f ./my-secret.yaml
Configure HM to use the new certificate#
Edit your HybridControlPlane CR to add the
portal_certificate_secret parameter under spec.globalParameters
:
apiVersion: edbpgai.edb.com/v1alpha1
kind: HybridControlPlane
metadata:
name: edbpgai
spec:
globalParameters:
portal_certificate_secret: "my-portal-certificate"
# ... your other globalParameters
Apply the updated CR:
kubectl apply -f hybridmanager.yaml
The operator reconciles the change and updates the portal certificate configuration.
For more information on how the secret can be formatted, consult Istio documentation .
Set up a custom cert-manager issuer for the HM Portal#
The HM Portal’s certificate can also be generated and managed using one of the x.509 issuers supported by HM’s internal cert-manager, e.g. The ACME Issuer for Let’s Encrypt certificates.
You can follow the documentation of the issuer of your choice directly from the cert-manager website to set it up.
Note
We suggest to set up a ClusterIssuer rather than an Issuer. If you prefer to set up an Issuer, you need to create it in the istio-system namespace. !!!
Once the ClusterIssuer is configured, pass its name to HM.
Note
Using a cert-manager issuer and providing your own certificate secret are mutually exclusive. If you configure an issuer, don't also set spec.globalParameters.portal_certificate_secret in your CR. !!!
Edit your HybridControlPlane CR to add the issuer parameters under
spec.globalParameters :
apiVersion: edbpgai.edb.com/v1alpha1
kind: HybridControlPlane
metadata:
name: edbpgai
spec:
globalParameters:
portal_certificate_issuer_kind: "ClusterIssuer" # Valid values are Issuer and ClusterIssuer
portal_certificate_issuer_name: "my-issuer" # Your Issuer name
# ... your other globalParameters
Apply the updated CR:
kubectl apply -f hybridmanager.yaml
The operator reconciles the change and configures the portal to use the specified issuer.