Cert-Manager Use for StarlingX Platform Services
Initial draft procedures. Resolve merge conflicts. Incorporate patchset 1 review comments. Incorporate patchset 2 review comments. Incorporate patchset 3 review comments. Incorporate patchset 4 review comments. Open questions for J. Sun to be addressed. Incorporate patchset 5 review comments. Made sample url used in overrides generic. Incorporate patchset 8 review comments. Added note about issuer_root_ca recommended by J. Sun. Incorporate patchset 10 review comments. Fix formatting issue in output. Incorporate patchset 12 review comments. Story: 2007361 Task: 42625 Signed-off-by: Ron Stone <ronald.stone@windriver.com> Change-Id: I5a73f902902acc02baccb92995f696a4b19fb773
This commit is contained in:
parent
baff361d45
commit
3e03a0bc82
@ -0,0 +1,97 @@
|
|||||||
|
.. _configure-docker-registry-certificate-after-installation-c519edbfe90a:
|
||||||
|
|
||||||
|
=====================================
|
||||||
|
Configure Docker Registry Certificate
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
.. rubric:: |context|
|
||||||
|
|
||||||
|
|
||||||
|
The local Docker registry provides secure HTTPS access using the registry API.
|
||||||
|
|
||||||
|
.. rubric:: |context|
|
||||||
|
|
||||||
|
By default, a self-signed server certificate is generated at installation time
|
||||||
|
for the registry API. For more secure access, an intermediate or Root CA-signed
|
||||||
|
server certificate is strongly recommended.
|
||||||
|
|
||||||
|
To configure or update the HTTPS certificate for the local Docker registry,
|
||||||
|
create a certificate named ``system-registry-local-certificate`` in the
|
||||||
|
``deployment`` namespace. The ``secretName`` attribute of this certificate's
|
||||||
|
spec must also be named ``system-registry-local-certificate``.
|
||||||
|
|
||||||
|
See the example procedure below for creating the certificate for the local
|
||||||
|
Docker registry. This example assumes you have configured a
|
||||||
|
``system-local-ca`` ClusterIssuer as described in
|
||||||
|
:ref:`starlingx-rest-api-applications-and-the-web-admin-server-cert-9196c5794834`.
|
||||||
|
|
||||||
|
Update the following fields:
|
||||||
|
|
||||||
|
* The ``duration`` and ``renewBefore`` dates for the expiry and renewal times
|
||||||
|
you desire. The system will automatically renew and re-install the
|
||||||
|
certificate.
|
||||||
|
|
||||||
|
* The ``subject`` fields to identify your particular system.
|
||||||
|
|
||||||
|
* The ``ipAddresses`` with the |OAM| Floating IP Address and the MGMT Floating
|
||||||
|
IP address for this system. Use the :command:`system addrpool-list` command
|
||||||
|
to get the |OAM| floating IP Address and management floating IP Address for
|
||||||
|
your system.
|
||||||
|
|
||||||
|
* The ``dnsNames`` with ``registry.local``, ``registry.central`` and any |FQDN|
|
||||||
|
names configured for this system's |OAM| Floating IP Address in an external
|
||||||
|
DNS server.
|
||||||
|
|
||||||
|
.. rubric:: |proc|
|
||||||
|
|
||||||
|
#. Create the Docker certificate yaml configuration file.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
~(keystone_admin)]$ cat <<EOF > docker-certificate.yaml
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1alpha2
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: system-registry-local-certificate
|
||||||
|
namespace: deployment
|
||||||
|
spec:
|
||||||
|
secretName: system-registry-local-certificate
|
||||||
|
issuerRef:
|
||||||
|
name: system-local-ca
|
||||||
|
kind: ClusterIssuer
|
||||||
|
duration: 2160h # 90d
|
||||||
|
renewBefore: 360h # 15d
|
||||||
|
subject:
|
||||||
|
organizations:
|
||||||
|
- ABC-Company
|
||||||
|
organizationalUnits:
|
||||||
|
- StarlingX-system-registry-local
|
||||||
|
ipAddresses:
|
||||||
|
- <OAM_FLOATING_IP>
|
||||||
|
- <MGMT_FLOATING_IP>
|
||||||
|
dnsNames:
|
||||||
|
- registry.local
|
||||||
|
- registry.central
|
||||||
|
- <external-FQDN-for-OAM-Floating-IP-Address, if applicable>
|
||||||
|
|
||||||
|
|
||||||
|
#. Apply the configuration.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl apply -f docker-certificate.yaml
|
||||||
|
|
||||||
|
#. Verify the configuration.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl get certificate system-registry-local-certificate –n deployment
|
||||||
|
|
||||||
|
If configuration was successful, the certificate’s Ready status will be
|
||||||
|
``True``.
|
||||||
|
|
||||||
|
.. rubric:: |result|
|
||||||
|
|
||||||
|
The Docker registry certificate installation is now complete, and Cert-Manager
|
||||||
|
will handle the lifecycle management of the certificate.
|
@ -2,24 +2,27 @@
|
|||||||
.. cwn1581381515361
|
.. cwn1581381515361
|
||||||
.. _configure-oidc-auth-applications:
|
.. _configure-oidc-auth-applications:
|
||||||
|
|
||||||
================================
|
=============================
|
||||||
Configure OIDC Auth Applications
|
Set up OIDC Auth Applications
|
||||||
================================
|
=============================
|
||||||
|
|
||||||
The **oidc-auth-apps** application is a system application that needs to be
|
The **oidc-auth-apps** application is a system application that needs to be
|
||||||
configured to use a remote Windows Active Directory server to authenticate
|
configured to use a remote Windows Active Directory server to authenticate
|
||||||
users of the Kubernetes API. The **oidc-auth-apps** is packaged in the ISO
|
users of the Kubernetes API. The ``oidc-auth-apps`` is packaged in the ISO
|
||||||
and uploaded by default.
|
and uploaded by default.
|
||||||
|
|
||||||
|
|
||||||
|
Configure OIDC Auth Applications
|
||||||
|
================================
|
||||||
|
|
||||||
.. rubric:: |prereq|
|
.. rubric:: |prereq|
|
||||||
|
|
||||||
|
|
||||||
.. _configure-oidc-auth-applications-ul-gpz-x51-llb:
|
.. _configure-oidc-auth-applications-ul-gpz-x51-llb:
|
||||||
|
|
||||||
- You must have configured the Kubernetes **kube-apiserver** to use
|
- You must have configured the Kubernetes ``kube-apiserver`` to use
|
||||||
the **oidc-auth-apps** |OIDC| identity provider for validation of
|
the **oidc-auth-apps** |OIDC| identity provider for validation of
|
||||||
tokens in Kubernetes API requests, which use |OIDC| authentication. For
|
tokens in Kubernetes API requests, which use |OIDC| authentication. For
|
||||||
more information on configuring the Kubernetes **kube-apiserver**, see
|
more information on configuring the Kubernetes ``kube-apiserver``, see
|
||||||
:ref:`Configure Kubernetes for OIDC Token Validation while
|
:ref:`Configure Kubernetes for OIDC Token Validation while
|
||||||
Bootstrapping the System
|
Bootstrapping the System
|
||||||
<configure-kubernetes-for-oidc-token-validation-while-bootstrapping-the-system>`
|
<configure-kubernetes-for-oidc-token-validation-while-bootstrapping-the-system>`
|
||||||
@ -27,81 +30,245 @@ and uploaded by default.
|
|||||||
Bootstrapping the System
|
Bootstrapping the System
|
||||||
<configure-kubernetes-for-oidc-token-validation-after-bootstrapping-the-system>`.
|
<configure-kubernetes-for-oidc-token-validation-after-bootstrapping-the-system>`.
|
||||||
|
|
||||||
- You must have a |CA| signed certificate \(dex-cert.pem file\), and private
|
|
||||||
key \(dex-key.pem file\) for the dex |OIDC| Identity Provider of
|
|
||||||
**oidc-auth-apps**.
|
|
||||||
|
|
||||||
This certificate *must* have the |prod|'s floating |OAM| IP Address in
|
|
||||||
the |SAN| list. If you are planning on defining and using a DNS
|
|
||||||
name for the |prod|'s floating |OAM| IP Address, then this DNS name
|
|
||||||
*must* also be in the |SAN| list. Refer to the documentation for
|
|
||||||
the external |CA| that you are using, in order to create a signed
|
|
||||||
certificate and key.
|
|
||||||
|
|
||||||
If you are using an intermediate |CA| to sign the dex certificate, include
|
|
||||||
both the dex certificate \(signed by the intermediate |CA|\), and the
|
|
||||||
intermediate |CA|'s certificate \(signed by the Root |CA|\) in that order,
|
|
||||||
in **dex-cert.pem**.
|
|
||||||
|
|
||||||
- You must have the certificate of the |CA|\(**dex-ca.pem** file\) that
|
|
||||||
signed the above certificate for the dex |OIDC| Identity Provider of
|
|
||||||
**oidc-auth-apps**.
|
|
||||||
|
|
||||||
If an intermediate |CA| was used to sign the dex certificate and both the
|
|
||||||
dex certificate and the intermediate |CA| certificate was included in
|
|
||||||
**dex-cert.pem**, then the **dex-ca.pem** file should contain the root
|
|
||||||
|CA|'s certificate.
|
|
||||||
|
|
||||||
If the signing |CA| \(**dex-ca.pem**\) is not a well-known trusted |CA|,
|
|
||||||
you must ensure the system trusts the |CA| by specifying it either during
|
|
||||||
the bootstrap phase of system installation, by specifying '**ssl\_ca\_cert:
|
|
||||||
dex-ca.pem**' in the ansible bootstrap overrides **localhost.yml** file, or
|
|
||||||
by using the **system certificate-install -m ssl\_ca dex-ca.pem** command.
|
|
||||||
|
|
||||||
|
|
||||||
.. rubric:: |proc|
|
.. rubric:: |proc|
|
||||||
|
|
||||||
|
#. Create certificates using one of the following options.
|
||||||
|
|
||||||
.. _configure-oidc-auth-applications-steps-kll-nbm-tkb:
|
#. Create certificates using cert-manager (recommended):
|
||||||
|
|
||||||
#. Create the secret, **local-dex.tls**, with the certificate and key, to be
|
Certificates used by ``oidc-auth-apps`` can be managed by Cert-Manager.
|
||||||
used by the **oidc-auth-apps**, as well as the secret, **dex-client-secret**,
|
Doing so will automatically renew the certificates before they expire.
|
||||||
with the |CA|'s certificate that signed the **local-dex.tls** certificate.
|
The ``system-local-ca`` ClusterIssuer (see
|
||||||
|
:ref:`starlingx-rest-api-applications-and-the-web-admin-server-cert-9196c5794834`)
|
||||||
|
will be used to issue this certificate.
|
||||||
|
|
||||||
For example, assuming the cert and key pem files for creating these
|
.. important::
|
||||||
secrets are in /home/sysadmin/ssl/, run the following commands to create
|
The namespace for ``oidc-auth-apps`` must be ``kube-system``.
|
||||||
the secrets:
|
|
||||||
|
|
||||||
.. note::
|
#. Create the |OIDC| client and identity provider server certificate and
|
||||||
**oidc-auth-apps** looks specifically for secrets of these names in
|
private key pair.
|
||||||
the **kube-system** namespace.
|
|
||||||
|
|
||||||
For the generic secret **dex-client-secret**, the filename must be
|
.. code-block:: none
|
||||||
'**dex-ca.pem**'.
|
|
||||||
|
~(keystone_admin)]$ cat <<EOF > oidc-auth-apps-certificate.yaml
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1alpha2
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: oidc-auth-apps-certificate
|
||||||
|
namespace: kube-system
|
||||||
|
spec:
|
||||||
|
secretName: oidc-auth-apps-certificate
|
||||||
|
duration: 2160h # 90 days
|
||||||
|
renewBefore: 360h # 15 days
|
||||||
|
issuerRef:
|
||||||
|
name: system-local-ca
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: <OAM_floating_IP_address>
|
||||||
|
organizations:
|
||||||
|
- ABC-Company
|
||||||
|
organizationalUnits:
|
||||||
|
- StarlingX-system-oidc-auth-apps
|
||||||
|
ipAddresses:
|
||||||
|
- <OAM_floating_IP_address>
|
||||||
|
EOF
|
||||||
|
|
||||||
|
#. Apply the configuration.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl apply -f oidc-auth-apps-certificate.yaml
|
||||||
|
|
||||||
|
#. Verify the configuration.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl get certificate oidc-auth-apps-certificate –n kube-system
|
||||||
|
|
||||||
|
#. Configure the |OIDC|-client with both the |OIDC| Client and Identity
|
||||||
|
Server Certificate and the |OIDC| Client and Identity Trusted |CA|
|
||||||
|
certificate.
|
||||||
|
|
||||||
|
Create a secret with the certificate of the root |CA| that signed the
|
||||||
|
|OIDC| client and identity provider's server certificate. In this
|
||||||
|
example, it will be the ``ca.crt`` of the ``system-local-ca``
|
||||||
|
ClusterIssuer).
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ mkdir /home/sysadmin/ssl
|
||||||
|
~(keystone_admin)]$ kubectl get secret system-local-ca -n cert-manager -o=jsonpath='{.data.ca\.crt}' | base64 --decode > /home/sysadmin/ssl/dex-ca-cert.crt
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl create secret generic dex-ca-cert --from-file=/home/sysadmin/ssl/dex-ca-cert.pem -n kube-system
|
||||||
|
|
||||||
|
~(keystone_admin)]$ cat <<EOF > stx-oidc-client.yaml
|
||||||
|
tlsName: oidc-auth-apps-certificate
|
||||||
|
config:
|
||||||
|
# The OIDC-client container mounts the dex-ca-cert secret at /home, therefore
|
||||||
|
# issuer_root_ca: /home/<filename-only-of-generic-secret>
|
||||||
|
issuer_root_ca: /home/dex-ca-cert.crt
|
||||||
|
issuer_root_ca_secret: dex-ca-cert
|
||||||
|
EOF
|
||||||
|
|
||||||
|
~(keystone_admin)]$ system helm-override-update oidc-auth-apps oidc-client kube-system --values stx-oidc-client.yaml
|
||||||
|
|
||||||
|
|
||||||
|
#. Create a secret with the certificate of the |CA| that signed the
|
||||||
|
certificate of the remote Windows Active Directory server that you
|
||||||
|
will be using.
|
||||||
|
|
||||||
|
Create the secret ``wad-ca-cert`` with the |CA|'s certificate that
|
||||||
|
signed the Active Directory's certificate using the following
|
||||||
|
command:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl create secret generic wad-ca-cert.crt --from-file=ssl/wad-ca-cert -n kube-system
|
||||||
|
|
||||||
|
Add the following sections to your dex helm overrides to configure the
|
||||||
|
|OIDC| Client and Identity Server Certificate and the Windows Active
|
||||||
|
Directory server |CA| Certificate for the |OIDC| Identity Server:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
certs:
|
||||||
|
web:
|
||||||
|
secret:
|
||||||
|
tlsName: oidc-auth-apps-certificate
|
||||||
|
caName: oidc-auth-apps-certificate
|
||||||
|
grpc:
|
||||||
|
secret:
|
||||||
|
serverTlsName: oidc-auth-apps-certificate
|
||||||
|
clientTlsName: oidc-auth-apps-certificate
|
||||||
|
caName: oidc-auth-apps-certificate
|
||||||
|
extraVolumes:
|
||||||
|
- name: certdir
|
||||||
|
secret:
|
||||||
|
secretName: wad-ca-cert
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: certdir
|
||||||
|
mountPath: /etc/ssl/certs/wad-ca-cert.crt
|
||||||
|
|
||||||
|
|
||||||
|
#. Apply the overrides configuration.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ system helm-override-update oidc-auth-apps dex kube-system --values dex-overrides.yaml
|
||||||
|
|
||||||
|
#. Configure the secret observer to track changes.
|
||||||
|
|
||||||
|
Change the cronSchedule according to your needs. The cronSchedule
|
||||||
|
controls how often the application checks to see if the certificate
|
||||||
|
mounted on the dex and oidc-client pods had changed.
|
||||||
|
|
||||||
|
Create a YAML configuration to modify the cronSchedule according to
|
||||||
|
your needs.
|
||||||
|
|
||||||
|
The cronSchedule controls how often the application checks to see
|
||||||
|
if the certificate mounted on the dex and oidc-client pods changed.
|
||||||
|
The following example sets the schedule to every 15 minutes.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ cat <<EOF > secret-observer-overrides.yaml
|
||||||
|
cronSchedule: "*/15 * * * *"
|
||||||
|
observedSecrets:
|
||||||
|
- secretName: "dex-ca-cert"
|
||||||
|
filename: "dex-ca-cert.crt"
|
||||||
|
deploymentToRestart: "stx-oidc-client"
|
||||||
|
- secretName: "oidc-auth-apps-certificate"
|
||||||
|
filename: "tls.crt"
|
||||||
|
deploymentToRestart: "stx-oidc-client"
|
||||||
|
- secretName: "oidc-auth-apps-certificate"
|
||||||
|
filename: "tls.crt"
|
||||||
|
deploymentToRestart: "oidc-dex"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
Execute the following command to update the overrides:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ system helm-override-update oidc-auth-apps secret-observer kube-system --values secret-observer-overrides.yaml
|
||||||
|
|
||||||
|
#. Use certificates generated and signed by an external |CA|.
|
||||||
|
|
||||||
|
.. rubric:: |prereq|
|
||||||
|
|
||||||
|
- You must have a |CA| signed certificate (``dex-cert.pem`` file), and
|
||||||
|
private key (``dex-key.pem file``) for the dex |OIDC| Identity
|
||||||
|
Provider of **oidc-auth-apps**.
|
||||||
|
|
||||||
|
This certificate *must* have the |prod|'s floating |OAM| IP Address
|
||||||
|
in the |SAN| list. If you are planning on defining and using a DNS
|
||||||
|
name for the |prod|'s floating |OAM| IP Address, then this DNS name
|
||||||
|
*must* also be in the |SAN| list. Refer to the documentation for the
|
||||||
|
external |CA| that you are using, in order to create a signed
|
||||||
|
certificate and key.
|
||||||
|
|
||||||
|
If you are using an intermediate |CA| to sign the dex certificate,
|
||||||
|
include both the dex certificate (signed by the intermediate |CA|),
|
||||||
|
and the intermediate |CA|'s certificate (signed by the Root |CA|) in
|
||||||
|
that order, in ``dex-cert.pem``.
|
||||||
|
|
||||||
|
- You must have the certificate of the |CA| (``dex-ca.pem`` file) that
|
||||||
|
signed the above certificate for the dex |OIDC| Identity Provider of
|
||||||
|
**oidc-auth-apps**.
|
||||||
|
|
||||||
|
If an intermediate |CA| was used to sign the dex certificate and both
|
||||||
|
the dex certificate and the intermediate |CA| certificate was
|
||||||
|
included in ``dex-cert.pem``, then the ``dex-ca.pem`` file should
|
||||||
|
contain the root |CA|'s certificate.
|
||||||
|
|
||||||
|
If the signing |CA| (``dex-ca.pem``) is not a well-known trusted
|
||||||
|
|CA|, you must ensure the system trusts the |CA| by specifying it
|
||||||
|
either during the bootstrap phase of system installation, by
|
||||||
|
specifying ``ssl_ca_cert: dex-ca.pem`` in the ansible bootstrap
|
||||||
|
overrides ``localhost.yml`` file, or by using the :command:`system
|
||||||
|
certificate-install -m ssl_ca dex-ca.pem` command.
|
||||||
|
|
||||||
|
|
||||||
|
#. Create the secret, ``local-dex.tls``, with the certificate and key,
|
||||||
|
to be used by the **oidc-auth-apps**, as well as the secret,
|
||||||
|
``dex-client-secret``, with the |CA|'s certificate that signed the
|
||||||
|
``local-dex.tls`` certificate.
|
||||||
|
|
||||||
|
For example, assuming the cert and key pem files for creating these
|
||||||
|
secrets are in ``/home/sysadmin/ssl/``, run the following commands to
|
||||||
|
create the secrets:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
**oidc-auth-apps** looks specifically for secrets of these names
|
||||||
|
in the ``kube-system`` namespace.
|
||||||
|
|
||||||
|
For the generic secret ``dex-client-secret``, the filename must
|
||||||
|
be ``dex-ca.pem``.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl create secret tls local-dex.tls --cert=ssl/dex-cert.pem --key=ssl/dex-key.pem -n kube-system
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl create secret generic dex-client-secret --from-file=/home/sysadmin/ssl/dex-ca.pem -n kube-system
|
||||||
|
|
||||||
|
Create the secret ``wad-ca-cert`` with the |CA|'s certificate that signed
|
||||||
|
the Active Directory's certificate using the following command:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl create secret generic wad-ca-cert --from-file=ssl/wad-ca-cert.crt -n kube-system
|
||||||
|
|
||||||
|
#. Specify user overrides for **oidc-auth-apps** application, by using the
|
||||||
|
following command:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)]$ kubectl create secret tls local-dex.tls --cert=ssl/dex-cert.pem --key=ssl/dex-key.pem -n kube-system
|
~(keystone_admin)]$ system helm-override-update oidc-auth-apps dex kube-system --values /home/sysadmin/dex-overrides.yaml --reuse-values
|
||||||
|
|
||||||
~(keystone_admin)]$ kubectl create secret generic dex-client-secret --from-file=/home/sysadmin/ssl/dex-ca.pem -n kube-system
|
|
||||||
|
|
||||||
Create the secret **wadcert** with the |CA|'s certificate that signed
|
|
||||||
the Active Directory's certificate using the following command:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
~(keystone_admin)]$ kubectl create secret generic wadcert --from-file=ssl/AD_CA.cer -n kube-system
|
|
||||||
|
|
||||||
#. Specify user overrides for **oidc-auth-apps** application, by using the following command:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
~(keystone_admin)]$ system helm-override-update oidc-auth-apps dex kube-system --values /home/sysadmin/dex-overrides.yaml
|
|
||||||
|
|
||||||
The dex-overrides.yaml file contains the desired dex helm chart overrides
|
The dex-overrides.yaml file contains the desired dex helm chart overrides
|
||||||
\(that is, the |LDAP| connector configuration for the Active Directory
|
(that is, the |LDAP| connector configuration for the Active Directory
|
||||||
service, optional token expiry, and so on.\), and volume mounts for
|
service, optional token expiry, and so on), and volume mounts for
|
||||||
providing access to the **wadcert** secret, described in this section.
|
providing access to the ``wadcert`` secret, described in this section.
|
||||||
|
|
||||||
For the complete list of dex helm chart values supported, see `Dex Helm
|
For the complete list of dex helm chart values supported, see `Dex Helm
|
||||||
Chart Values
|
Chart Values
|
||||||
@ -112,15 +279,15 @@ and uploaded by default.
|
|||||||
|
|
||||||
The example below configures a token expiry of ten hours, a single |LDAP|
|
The example below configures a token expiry of ten hours, a single |LDAP|
|
||||||
connector to an Active Directory service using HTTPS \(LDAPS\) using the
|
connector to an Active Directory service using HTTPS \(LDAPS\) using the
|
||||||
**wadcert** secret configured in this section, the required Active
|
``wadcert`` secret configured in this section, the required Active
|
||||||
Directory service login information \(that is, bindDN, and bindPW\), and
|
Directory service login information \(that is, bindDN, and bindPW\), and
|
||||||
example :command:`userSearch`, and :command:`groupSearch` clauses.
|
example :command:`userSearch`, and :command:`groupSearch` clauses.
|
||||||
|
|
||||||
\(Optional\) There is a default secret in the dex configuration for
|
(Optional) There is a default secret in the dex configuration for
|
||||||
**staticClients**. You can change this using helm overrides. For example,
|
``staticClients``. You can change this using helm overrides. For example,
|
||||||
to change the secret, first run the following command to see the default
|
to change the secret, first run the following command to see the default
|
||||||
settings. In this example, 10.10.10.2 is the |prod-long| |OAM| floating IP
|
settings. In this example, ``10.10.10.2`` is the |prod-long| |OAM| floating
|
||||||
address.
|
IP address.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
@ -136,15 +303,17 @@ and uploaded by default.
|
|||||||
Change the secret from the output and copy the entire configuration section
|
Change the secret from the output and copy the entire configuration section
|
||||||
shown above in to your dex overrides file shown in the example below.
|
shown above in to your dex overrides file shown in the example below.
|
||||||
|
|
||||||
.. note::
|
.. warning::
|
||||||
Do NOT forget to include the id, name, and redirectURIs parameters.
|
Do not forget to include the id, name, and redirectURIs parameters.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
There is an internal **client\_secret** that is used between the
|
There is an internal ``client_secret`` that is used between the
|
||||||
oidc-client container and the dex container. It is recommended that you
|
oidc-client container and the dex container. It is recommended that you
|
||||||
configure a unique, more secure **client\_secret** by specifying the
|
configure a unique, more secure ``client_secret`` by specifying the
|
||||||
value in the dex overrides file, as shown in the example below.
|
value in the dex overrides file, as shown in the example below.
|
||||||
|
|
||||||
|
.. begin-connector-config
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
config:
|
config:
|
||||||
@ -161,22 +330,22 @@ and uploaded by default.
|
|||||||
name: OpenLDAP
|
name: OpenLDAP
|
||||||
id: ldap
|
id: ldap
|
||||||
config:
|
config:
|
||||||
host: pv-windows-acti.cumulus.wrs.com:636
|
host: pv-windows-acti.windows-activedir.example.com:636
|
||||||
rootCA: /etc/ssl/certs/adcert/AD_CA.cer
|
rootCA: /etc/ssl/certs/adcert/wad-ca-cert.crt
|
||||||
insecureNoSSL: false
|
insecureNoSSL: false
|
||||||
insecureSkipVerify: false
|
insecureSkipVerify: false
|
||||||
bindDN: cn=Administrator,cn=Users,dc=cumulus,dc=wrs,dc=com
|
bindDN: cn=Administrator,cn=Users,dc=windows-activedir,dc=example,dc=com
|
||||||
bindPW: [<password>]
|
bindPW: [<password>]
|
||||||
usernamePrompt: Username
|
usernamePrompt: Username
|
||||||
userSearch:
|
userSearch:
|
||||||
baseDN: ou=Users,ou=Titanium,dc=cumulus,dc=wrs,dc=com
|
baseDN: ou=Users,ou=Titanium,dc=windows-activedir,dc=example,dc=com
|
||||||
filter: "(objectClass=user)"
|
filter: "(objectClass=user)"
|
||||||
username: sAMAccountName
|
username: sAMAccountName
|
||||||
idAttr: sAMAccountName
|
idAttr: sAMAccountName
|
||||||
emailAttr: sAMAccountName
|
emailAttr: sAMAccountName
|
||||||
nameAttr: displayName
|
nameAttr: displayName
|
||||||
groupSearch:
|
groupSearch:
|
||||||
baseDN: ou=Groups,ou=Titanium,dc=cumulus,dc=wrs,dc=com
|
baseDN: ou=Groups,ou=Titanium,dc=windows-activedir,dc=example,dc=com
|
||||||
filter: "(objectClass=group)"
|
filter: "(objectClass=group)"
|
||||||
userAttr: DN
|
userAttr: DN
|
||||||
groupAttr: member
|
groupAttr: member
|
||||||
@ -184,29 +353,31 @@ and uploaded by default.
|
|||||||
extraVolumes:
|
extraVolumes:
|
||||||
- name: certdir
|
- name: certdir
|
||||||
secret:
|
secret:
|
||||||
secretName: wadcert
|
secretName: wad-ca-cert
|
||||||
extraVolumeMounts:
|
extraVolumeMounts:
|
||||||
- name: certdir
|
- name: certdir
|
||||||
mountPath: /etc/ssl/certs/adcert
|
mountPath: /etc/ssl/certs/wad-ca-cert.crt
|
||||||
|
|
||||||
|
.. end-connector-config
|
||||||
|
|
||||||
If more than one Windows Active Directory service is required for
|
If more than one Windows Active Directory service is required for
|
||||||
authenticating the different users of the |prod|, multiple '**ldap**'
|
authenticating the different users of the |prod|, multiple ``ldap``
|
||||||
type connectors can be configured; one for each Windows Active
|
type connectors can be configured; one for each Windows Active
|
||||||
Directory service.
|
Directory service.
|
||||||
|
|
||||||
If more than one **userSearch** plus **groupSearch** clauses are
|
If more than one ``userSearch`` plus ``groupSearch`` clauses are
|
||||||
required for the same Windows Active Directory service, multiple
|
required for the same Windows Active Directory service, multiple
|
||||||
'**ldap**' type connectors, with the same host information but
|
``ldap`` type connectors, with the same host information but
|
||||||
different **userSearch** plus **groupSearch** clauses, should be used.
|
different ``userSearch`` plus ``groupSearch`` clauses, should be used.
|
||||||
|
|
||||||
Whenever you use multiple '**ldap**' type connectors, ensure you use
|
Whenever you use multiple ``ldap`` type connectors, ensure you use
|
||||||
unique '**name:**' and '**id:**' parameters for each connector.
|
unique ``name:`` and ``id:`` parameters for each connector.
|
||||||
|
|
||||||
#. An override in the secrets in the dex helm chart must be accompanied by an
|
#. An override in the secrets in the dex helm chart must be accompanied by
|
||||||
override in the oidc-client helm chart.
|
an override in the oidc-client helm chart.
|
||||||
|
|
||||||
The following override is sufficient for changing the secret in the
|
The following override is sufficient for changing the secret in the
|
||||||
/home/sysadmin/oidc-client-overrides.yaml file.
|
``/home/sysadmin/oidc-client-overrides.yaml`` file.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
@ -217,13 +388,13 @@ and uploaded by default.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)]$ system helm-override-update oidc-auth-apps oidc-client kube-system --values /home/sysadmin/oidc-client-overrides.yaml
|
~(keystone_admin)]$ system helm-override-update oidc-auth-apps oidc-client kube-system --values /home/sysadmin/oidc-client-overrides.yaml --reuse-values
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
If you need to manually override the secrets, the client\_secret in the
|
If you need to manually override the secrets, the client_secret in the
|
||||||
oidc-client overrides must match the staticClients secret and
|
oidc-client overrides must match the staticClients secret and
|
||||||
client\_secret in the dex overrides, otherwise the oidc-auth |CLI|
|
client_secret in the dex overrides, otherwise the oidc-auth |CLI|
|
||||||
client will not function.
|
client will not function.
|
||||||
|
|
||||||
#. Use the :command:`system application-apply` command to apply the
|
#. Use the :command:`system application-apply` command to apply the
|
||||||
@ -231,4 +402,4 @@ and uploaded by default.
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)]$ system application-apply oidc-auth-apps
|
~(keystone_admin)]$ system application-apply oidc-auth-apps
|
||||||
|
@ -0,0 +1,106 @@
|
|||||||
|
.. _configure-rest-api-applications-and-web-administration-server-certificates-after-installation-6816457ab95f:
|
||||||
|
|
||||||
|
=========================================================================
|
||||||
|
Configure REST API Applications and Web Administration Server certificate
|
||||||
|
=========================================================================
|
||||||
|
|
||||||
|
.. rubric:: |context|
|
||||||
|
|
||||||
|
|prod| provides support for secure HTTPS external connections used for
|
||||||
|
StarlingX REST API application endpoints (Keystone, Barbican and StarlingX) and
|
||||||
|
the |prod| web administration server. By default, HTTPS access to StarlingX
|
||||||
|
REST and Web Server endpoints is disabled. They are accessible via HTTP only.
|
||||||
|
To enable secure HTTPS access, an x509 certificate and key must be configured.
|
||||||
|
|
||||||
|
You can update the certificate used for HTTPS access at any time.
|
||||||
|
|
||||||
|
To configure or update the HTTPS certificate for the StarlingX REST API and Web
|
||||||
|
Server endpoints, create a certificate named ``system-restapi-gui-certificate``
|
||||||
|
in the ``deployment`` namespace. The ``secretName`` attribute of this
|
||||||
|
certificate's spec must also be named ``system-restapi-gui-certificate``.
|
||||||
|
|
||||||
|
See the example procedure below for creating the certificate for the StarlingX
|
||||||
|
REST API and Web Server endpoints. This example assumes you have configured a
|
||||||
|
``system-local-ca`` ClusterIssuer as described in
|
||||||
|
:ref:`starlingx-rest-api-applications-and-the-web-admin-server-cert-9196c5794834`.
|
||||||
|
|
||||||
|
Update the following fields:
|
||||||
|
|
||||||
|
* The ``duration`` and ``renewBefore`` dates for the expiry and renewal times
|
||||||
|
you desire. The system will automatically renew and re-install the
|
||||||
|
certificate.
|
||||||
|
|
||||||
|
* The ``subject`` fields to identify your particular system.
|
||||||
|
|
||||||
|
* The ``ipAddresses`` with the |OAM| Floating IP Address for this system.
|
||||||
|
|
||||||
|
* The ``dnsNames`` with any |FQDN| names configured for this system in an
|
||||||
|
external DNS server.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If you plan to use the container-based remote CLIs, due to a limitation in
|
||||||
|
the Python2 SSL certificate validation, the certificate used for the
|
||||||
|
'system-restapi-gui-certificate' certificate must either have:
|
||||||
|
|
||||||
|
1. CN=IPADDRESS and SANs=IPADDRESS
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
1. CN=FQDN and SANs=FQDN
|
||||||
|
|
||||||
|
where IPADDRESS and FQDN are for the |OAM| Floating IP Address.
|
||||||
|
|
||||||
|
.. rubric:: |proc|
|
||||||
|
|
||||||
|
#. Create the REST API certificate yaml configuration file.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
~(keystone_admin)]$ cat <<EOF > restapi-certificate.yaml
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1alpha2
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: system-restapi-gui-certificate
|
||||||
|
namespace: deployment
|
||||||
|
spec:
|
||||||
|
secretName: system-restapi-gui-certificate
|
||||||
|
issuerRef:
|
||||||
|
name: system-local-ca
|
||||||
|
kind: ClusterIssuer
|
||||||
|
duration: 2160h # 90 days
|
||||||
|
renewBefore: 360h # 15 days
|
||||||
|
commonName: < oam floating IP Address or FQDN >
|
||||||
|
subject:
|
||||||
|
organizations:
|
||||||
|
- ABC-Company
|
||||||
|
organizationalUnits:
|
||||||
|
- StarlingX-system-restapi-gui
|
||||||
|
ipAddresses:
|
||||||
|
- < oam floating IP address >
|
||||||
|
dnsNames:
|
||||||
|
- < oam floating FQDN >
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
#. Apply the configuration.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl apply -f restapi-certificate.yaml
|
||||||
|
|
||||||
|
|
||||||
|
#. Verify the configuration.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl get certificate system-restapi-gui-certificate –n deployment
|
||||||
|
|
||||||
|
If configuration was successful, the certificate’s Ready status will be
|
||||||
|
``True``.
|
||||||
|
|
||||||
|
.. rubric:: |result|
|
||||||
|
|
||||||
|
The REST and Web Server certificate installation is now complete, and
|
||||||
|
Cert-Manager will handle the lifecycle management of the certificate.
|
@ -16,73 +16,76 @@ in the following sections.
|
|||||||
.. table::
|
.. table::
|
||||||
:widths: auto
|
:widths: auto
|
||||||
|
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| Certificate | Auto Created | Renewal Status |
|
| Certificate | Auto Created | Renewal Status |
|
||||||
+===========================================================+=============================================================================+====================================================================================================+
|
+===========================================================+=============================================================================+========================================================================================================+
|
||||||
| Kubernetes Root CA Certificate | Yes | NOT AUTO-RENEWED; Default expiry is set at 10 years |
|
| Kubernetes Root CA Certificate | Yes | NOT AUTO-RENEWED; Default expiry is set at 10 years; MUST be renewed via CLI. |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| Cluster Admin client certificate used by kubectl | Yes | auto-renewed by cron job |
|
| Cluster Admin client certificate used by kubectl | Yes | auto-renewed by cron job |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| kube-controller-manager client certificate | Yes | auto-renewed by cron job |
|
| kube-controller-manager client certificate | Yes | auto-renewed by cron job |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| kube-scheduler client certificate | Yes | auto-renewed by cron job |
|
| kube-scheduler client certificate | Yes | auto-renewed by cron job |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| kube-apiserver server certificate | Yes | auto-renewed by cron job |
|
| kube-apiserver server certificate | Yes | auto-renewed by cron job |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| kube-apiserver's kubelet client certificate | Yes | auto-renewed by cron job |
|
| kube-apiserver's kubelet client certificate | Yes | auto-renewed by cron job |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| kubelet client certificate | Yes | auto-renewed by kubelet feature enabled by default |
|
| kubelet client certificate | Yes | auto-renewed by kubelet feature enabled by default |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| |
|
| |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| etcd Root CA certificate | Yes | NOT AUTO-RENEWED; Default expiry is set at 10 years |
|
| etcd Root CA certificate | Yes | NOT AUTO-RENEWED; Default expiry is set at 10 years |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| etcd server certificate | Yes | auto-renewed by cron job |
|
| etcd server certificate | Yes | auto-renewed by cron job |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| etcd client certificate | Yes | auto-renewed by cron job |
|
| etcd client certificate | Yes | auto-renewed by cron job |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| kube-apiserver's etcd client certificate | Yes | auto-renewed by cron job |
|
| kube-apiserver's etcd client certificate | Yes | auto-renewed by cron job |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| |
|
| |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| StarlingX REST API & HORIZON Server Certificate | Yes (But the auto-created certificate is self-signed and should be changed) | NOT AUTO-RENEWED; CUSTOMER MUST renew via CLIs |
|
| StarlingX REST API & HORIZON Server Certificate | Yes (But the auto-created certificate is self-signed and should be changed) | auto-renewed if configured with cert-manager; |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| | | NOT AUTO-RENEWED if configured with :command:`system certificate-install ..`, must be renewed via CLI |
|
||||||
| |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| |
|
||||||
| Local Registry Server Certificate | Yes (But the auto-created certificate is self-signed and should be changed) | NOT AUTO-RENEWED; CUSTOMER MUST renew via CLIs |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| Local Registry Server Certificate | Yes (But the auto-created certificate is self-signed and should be changed) | auto-renewed if configured with cert-manager; |
|
||||||
| |
|
| | | NOT AUTO-RENEWED if configured with :command:`system certificate-install ..`, must be renewed via CLI |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| OIDC Client and Dex Server Server Certificate | No | NOT AUTO-RENEWED; CUSTOMER MUST renew via CLIs |
|
| |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
| OIDC Client and Dex Server CA certificate | No | NOT AUTO-RENEWED. CUSTOMER MUST renew via CLIs |
|
| OIDC Client and Dex Server Server Certificate | No | auto-renewed if configured with cert-manager; |
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| | | NOT AUTO-RENEWED if configured with an externally generated certificate, CUSTOMER MUST renew via CLI. |
|
||||||
| OIDC Remote WAD CA Certificate | No | NOT AUTO-RENEWED. CUSTOMER MUST renew via CLIs |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| OIDC Client and Dex Server CA certificate | No | NOT AUTO-RENEWED. CUSTOMER MUST renew via CLIs |
|
||||||
| |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| OIDC Remote WAD CA Certificate | No | NOT AUTO-RENEWED. CUSTOMER MUST renew via CLIs |
|
||||||
| Vault Server Certificate | Yes | NOT AUTO-RENEWED; CUSTOMER MUST renew via CLIs |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| |
|
||||||
| Vault Root CA certificate | Yes | NOT AUTO-RENEWED; CUSTOMER MUST renew via CLIs |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| Vault Server Certificate | Yes | NOT AUTO-RENEWED; CUSTOMER MUST renew via CLIs |
|
||||||
| |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| Vault Root CA certificate | Yes | NOT AUTO-RENEWED; CUSTOMER MUST renew via CLIs |
|
||||||
| Portieris Server Certificate | Yes | Auto renewed by cert-manager; BUT COSTOMER MUST restart Portieris after the certificate is renewed |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| |
|
||||||
| Portieris remote registry and notary server CA Certificate| No | NOT AUTO-RENEWED; CUSTOMER MUST renew via CLIs |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| Portieris Server Certificate | Yes | Auto renewed by cert-manager; BUT CUSTOMER MUST restart Portieris after the certificate is renewed |
|
||||||
| |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| Portieris remote registry and notary server CA Certificate| No | NOT AUTO-RENEWED; CUSTOMER MUST renew via CLIs |
|
||||||
| Root CA DC Admin Endpoint CA Certificate | Yes | auto-renewed |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| |
|
||||||
| Intermediate CA DC Admin Endpoint CA Certificate | Yes | auto-renewed |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| Root CA DC Admin Endpoint CA Certificate | Yes | auto-renewed |
|
||||||
| DC Admin Endpoint Server Certificate | Yes | auto-renewed |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| Intermediate CA DC Admin Endpoint CA Certificate | Yes | auto-renewed |
|
||||||
| |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| DC Admin Endpoint Server Certificate | Yes | auto-renewed |
|
||||||
| System trusted CA Certificates | No | NOT AUTO-RENEWED as these are certificates that are not necessarily owned by Cloud Platform |
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
+-----------------------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
|
| |
|
||||||
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
|
| System trusted CA Certificates | No | NOT AUTO-RENEWED as these are certificates that are not necessarily owned by the platform |
|
||||||
|
+-----------------------------------------------------------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
Where:
|
Where:
|
||||||
|
|
||||||
|
@ -102,10 +102,12 @@ HTTPS Certificate Management
|
|||||||
|
|
||||||
https-access-overview
|
https-access-overview
|
||||||
utility-script-to-display-certificates
|
utility-script-to-display-certificates
|
||||||
starlingx-rest-api-applications-and-the-web-administration-server
|
starlingx-rest-api-applications-and-the-web-admin-server-cert-9196c5794834
|
||||||
kubernetes-certificates-f4196d7cae9c
|
kubernetes-certificates-f4196d7cae9c
|
||||||
etcd-certificates-c1fc943e4a9c
|
etcd-certificates-c1fc943e4a9c
|
||||||
security-install-update-the-docker-registry-certificate
|
kubernetes-root-ca-certificate
|
||||||
|
configure-rest-api-applications-and-web-administration-server-certificates-after-installation-6816457ab95f
|
||||||
|
configure-docker-registry-certificate-after-installation-c519edbfe90a
|
||||||
oidc-client-dex-server-certificates-dc174462d51a
|
oidc-client-dex-server-certificates-dc174462d51a
|
||||||
portieris-server-certificate-a0c7054844bd
|
portieris-server-certificate-a0c7054844bd
|
||||||
vault-server-certificate-8573125eeea6
|
vault-server-certificate-8573125eeea6
|
||||||
@ -260,6 +262,16 @@ Security Features
|
|||||||
security-hardening-firewall-options
|
security-hardening-firewall-options
|
||||||
isolate-starlingx-internal-cloud-management-network
|
isolate-starlingx-internal-cloud-management-network
|
||||||
|
|
||||||
|
************************
|
||||||
|
Deprecated Functionality
|
||||||
|
************************
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
starlingx-rest-api-applications-and-the-web-administration-server-deprecated
|
||||||
|
security-install-update-the-docker-registry-certificate-deprecated
|
||||||
|
|
||||||
***************************************
|
***************************************
|
||||||
Appendix: Locally creating certificates
|
Appendix: Locally creating certificates
|
||||||
***************************************
|
***************************************
|
||||||
@ -268,4 +280,4 @@ Appendix: Locally creating certificates
|
|||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
create-certificates-locally-using-openssl
|
create-certificates-locally-using-openssl
|
||||||
create-certificates-locally-using-cert-manager-on-the-controller
|
create-certificates-locally-using-cert-manager-on-the-controller
|
||||||
|
@ -14,7 +14,7 @@ of tokens.
|
|||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
For details on how installing, configuring, and using oidc-auth-apps,
|
For details on installing, configuring, and using oidc-auth-apps,
|
||||||
refer to :ref:`User Authentication Using Windows Active Directory
|
refer to :ref:`User Authentication Using Windows Active Directory
|
||||||
<user-authentication-using-windows-active-directory-security-index>`.
|
<user-authentication-using-windows-active-directory-security-index>`.
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ This certificate is stored in Kubernetes TLS secret ``local-dex.tls``.
|
|||||||
The |OIDC| trusted |CA| certificate is the |CA| certificate that signs the
|
The |OIDC| trusted |CA| certificate is the |CA| certificate that signs the
|
||||||
|OIDC| client and identity server certificate.
|
|OIDC| client and identity server certificate.
|
||||||
|
|
||||||
It has to be installed for |OIDC| client to verify identity server’s
|
It has to be installed for |OIDC| client to verify identity server's
|
||||||
certificate for HTTPS connection.
|
certificate for HTTPS connection.
|
||||||
|
|
||||||
|OIDC| trusted |CA| certificate is stored in Kubernetes secret
|
|OIDC| trusted |CA| certificate is stored in Kubernetes secret
|
||||||
@ -54,7 +54,7 @@ Directory that |OIDC| is configured to proxy authentication requests to.
|
|||||||
|
|
||||||
In order for |OIDC| identity provider (as the authentication proxy) to securely
|
In order for |OIDC| identity provider (as the authentication proxy) to securely
|
||||||
connect and authenticate users to the Windows Active Directory by HTTPS, the
|
connect and authenticate users to the Windows Active Directory by HTTPS, the
|
||||||
|WAD|’s |CA| certificate needs to installed and configured for |OIDC| to trust
|
|WAD|'s |CA| certificate needs to installed and configured for |OIDC| to trust
|
||||||
the Windows Active Directory.
|
the Windows Active Directory.
|
||||||
|
|
||||||
-------------------------
|
-------------------------
|
||||||
@ -74,16 +74,25 @@ Kubernetes secrets.
|
|||||||
Update/Renew OIDC certificates
|
Update/Renew OIDC certificates
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
.. warning::
|
|
||||||
|
|
||||||
|OIDC| certificates are not auto renewed. They have to be updated manually
|
The |OIDC| client and identity provider certificate, if configured via
|
||||||
by updating the secrets from the new certificate files and restart the
|
cert-manager (as described in :ref:`Configure OIDC Auth Applications
|
||||||
``oidc-auth`` application.
|
<configure-oidc-auth-applications>`), is auto-renewed.
|
||||||
|
|
||||||
|
However, the |OIDC| client and identity provider trusted |CA| certificate and
|
||||||
|
the Windows Active Directory |CA| certificate are not auto renewed. They have
|
||||||
|
to be renewed manually by updating the secrets from the new certificate files
|
||||||
|
and restarting the ``oidc-auth`` application.
|
||||||
|
|
||||||
.. rubric:: |proc|
|
.. rubric:: |proc|
|
||||||
|
|
||||||
#. Update/renew |OIDC| client and identity provider server certificate:
|
#. Update/renew |OIDC| client and identity provider server certificate:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
This step is only required if you are not using cert-manager for your
|
||||||
|
certificate as described in :ref:`Configure OIDC Auth Applications
|
||||||
|
<configure-oidc-auth-applications>`.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
~(keystone_admin)]$ kubectl create secret tls local-dex.tls --cert=/home/sysadmin/new_ssl/dex-cert.pem --key=/home/sysadmin/new_ssl/dex-key.pem --save-config --dry-run=client -n kube-system -o yaml | kubectl apply -f -
|
~(keystone_admin)]$ kubectl create secret tls local-dex.tls --cert=/home/sysadmin/new_ssl/dex-cert.pem --key=/home/sysadmin/new_ssl/dex-key.pem --save-config --dry-run=client -n kube-system -o yaml | kubectl apply -f -
|
||||||
@ -106,4 +115,3 @@ Update/Renew OIDC certificates
|
|||||||
|
|
||||||
~(keystone_admin)]$ kubectl rollout restart deployment oidc-dex -n kube-system
|
~(keystone_admin)]$ kubectl rollout restart deployment oidc-dex -n kube-system
|
||||||
~(keystone_admin)]$ kubectl rollout restart deployment stx-oidc-client -n kube-system
|
~(keystone_admin)]$ kubectl rollout restart deployment stx-oidc-client -n kube-system
|
||||||
|
|
||||||
|
@ -6,6 +6,10 @@
|
|||||||
Local Registry Server Certificates
|
Local Registry Server Certificates
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
This procedure is deprecated. For up-to-date information, refer to:
|
||||||
|
:ref:`configure-docker-registry-certificate-after-installation-c519edbfe90a`.
|
||||||
|
|
||||||
For the Local Docker Registry, HTTPS is always enabled. By default, a
|
For the Local Docker Registry, HTTPS is always enabled. By default, a
|
||||||
self-signed server certificate and key is generated and installed for this
|
self-signed server certificate and key is generated and installed for this
|
||||||
endpoint. However, it is strongly recommended that you update the server
|
endpoint. However, it is strongly recommended that you update the server
|
@ -0,0 +1,162 @@
|
|||||||
|
.. _starlingx-rest-api-applications-and-the-web-admin-server-cert-9196c5794834:
|
||||||
|
|
||||||
|
========================
|
||||||
|
Create a local CA Issuer
|
||||||
|
========================
|
||||||
|
|
||||||
|
|
||||||
|
|org| recommends that a single local |CA| Issuer be created on the platform to
|
||||||
|
create, sign, and anchor all of your platform certificates. This |CA| can be
|
||||||
|
either a stand-alone local Root |CA| or a local Intermediate |CA| (whose
|
||||||
|
certificate is signed by an external Root |CA|). This simplifies your overall
|
||||||
|
platform certificate configuration, and means that external clients interfacing
|
||||||
|
with the platform's HTTPS endpoints, need only be given a single Root |CA|
|
||||||
|
certificate to add to their trusted |CAs|.
|
||||||
|
|
||||||
|
|
||||||
|
Create the ClusterIssuer
|
||||||
|
========================
|
||||||
|
|
||||||
|
Create a local Root CA
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
The following sample procedure illustrates how to create a unique standalone
|
||||||
|
local Root |CA| (``system-local-ca``) that can be used to create, sign, and
|
||||||
|
anchor all of your platform certificates.
|
||||||
|
|
||||||
|
Update the ``subject`` fields to identify your particular system.
|
||||||
|
|
||||||
|
It is recommended that a 3-5 year duration be used for operational simplicity
|
||||||
|
since, although the certificate will automatically renew locally, when it does
|
||||||
|
renew, you will need to re-distribute the |CA|'s new public certificate to all
|
||||||
|
external clients using the platform's HTTPS endpoints.
|
||||||
|
|
||||||
|
The created ``system-local-ca`` Root |CA| is cluster-wide, so it can be used to
|
||||||
|
create all platform certificates and can also be used for hosted applications'
|
||||||
|
certificates.
|
||||||
|
|
||||||
|
.. rubric:: |proc|
|
||||||
|
|
||||||
|
#. Create a cluster issuer yaml configuration file.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ cat <<EOF > cluster-issuer.yaml
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1alpha2
|
||||||
|
kind: ClusterIssuer
|
||||||
|
metadata:
|
||||||
|
name: system-selfsigning
|
||||||
|
spec:
|
||||||
|
selfSigned: {}
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1alpha2
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: system-local-ca
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
subject:
|
||||||
|
organizations:
|
||||||
|
- ABC-Company
|
||||||
|
organizationalUnits:
|
||||||
|
- StarlingX-system-local-ca
|
||||||
|
secretName: system-local-ca
|
||||||
|
commonName: system-local-ca
|
||||||
|
isCA: true
|
||||||
|
duration: 43800h # 5 year
|
||||||
|
renewBefore: 720h # 30 days
|
||||||
|
issuerRef:
|
||||||
|
name: system-selfsigning
|
||||||
|
kind: ClusterIssuer
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1alpha2
|
||||||
|
kind: ClusterIssuer
|
||||||
|
metadata:
|
||||||
|
name: system-local-ca
|
||||||
|
spec:
|
||||||
|
ca:
|
||||||
|
secretName: system-local-ca
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
#. Apply the configuration.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl apply –f cluster-issuer.yaml
|
||||||
|
|
||||||
|
#. Verify the configuration.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl get clusterissuer
|
||||||
|
|
||||||
|
#. Write the public certificate of this |CA| to a ``.pem`` file that can be
|
||||||
|
distributed to external clients using the platform's HTTPS endpoints.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl get secret <secretname> -n <namespacename> -o=jsonpath='{.data.ca\.crt}' | base64 --decode > <pemfilename>
|
||||||
|
|
||||||
|
Create a local Intermediate CA
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
Alternatively, if you are using an external RootCA, the following procedure is
|
||||||
|
an example of how to create a local Intermediate |CA| (whose certificate is
|
||||||
|
signed by an external Intermediate or Root |CA|) that can be used to
|
||||||
|
create, sign, and anchor all of your platform certificates. Refer to the
|
||||||
|
documentation for your external Intermediate or Root |CA| for information on
|
||||||
|
how to create a public certificate and private key for an intermediate |CA|.
|
||||||
|
It is recommended that a 3-5 year duration be used for operational simplicity
|
||||||
|
since this certificate will need to be manually renewed with the externally
|
||||||
|
generated certificate and key, and then referenced via the ClusterIssuer's
|
||||||
|
``spec.ca.secretName``. The |TLS| secret must be created in the Cluster
|
||||||
|
Resource Namespace, which defaults to ``cert-manager`` on the platform.
|
||||||
|
|
||||||
|
The ``system-local-ca`` Root |CA| is cluster-wide, so it can be used to create
|
||||||
|
all platform certificates and can also be used for hosted applications'
|
||||||
|
certificates.
|
||||||
|
|
||||||
|
#. Copy the |PEM| encoded certificate and key from the externally generated
|
||||||
|
|CA| to the controller host.
|
||||||
|
|
||||||
|
#. Create a |TLS| secret in ‘cert-manager’ namespace with the certificate/Key
|
||||||
|
files:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl -n cert-manager create secret tls system-local-ca --cert=./cert.pem --key=./key.pem
|
||||||
|
|
||||||
|
#. Create ClusterIssuer and the |CA| certificate.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ cat <<EOF > cluster-issuer.yaml
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1alpha2
|
||||||
|
kind: ClusterIssuer
|
||||||
|
metadata:
|
||||||
|
name: system-local-ca
|
||||||
|
spec:
|
||||||
|
ca:
|
||||||
|
secretName: system-local-ca
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
#. Apply the configuration.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl apply –f cluster-issuer.yaml
|
||||||
|
|
||||||
|
#. Verify the configuration.
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
~(keystone_admin)]$ kubectl get clusterissuer
|
||||||
|
|
||||||
|
If the configuration is successful, the clusterissuer for
|
||||||
|
``system-local-ca`` will have Ready status of ``True``.
|
||||||
|
|
||||||
|
The clusterissuer is now ready to issue certificates on the platform.
|
@ -6,6 +6,10 @@
|
|||||||
StarlingX REST API Applications and the Web Administration Server Certificate
|
StarlingX REST API Applications and the Web Administration Server Certificate
|
||||||
=============================================================================
|
=============================================================================
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
This procedure is deprecated. For up-to-date information, refer to:
|
||||||
|
:ref:`starlingx-rest-api-applications-and-the-web-admin-server-cert-9196c5794834`.
|
||||||
|
|
||||||
By default, |prod| provides HTTP access to REST API application endpoints
|
By default, |prod| provides HTTP access to REST API application endpoints
|
||||||
\(Keystone, Barbican and |prod|\) and the web administration server. For
|
\(Keystone, Barbican and |prod|\) and the web administration server. For
|
||||||
improved security, you can enable HTTPS access. When HTTPS access is
|
improved security, you can enable HTTPS access. When HTTPS access is
|
@ -29,6 +29,8 @@
|
|||||||
.. |CNI| replace:: :abbr:`CNI (Container Networking Interface)`
|
.. |CNI| replace:: :abbr:`CNI (Container Networking Interface)`
|
||||||
.. |CNIs| replace:: :abbr:`CNIs (Container Networking Interfaces)`
|
.. |CNIs| replace:: :abbr:`CNIs (Container Networking Interfaces)`
|
||||||
.. |CoW| replace:: :abbr:`CoW (Copy on Write)`
|
.. |CoW| replace:: :abbr:`CoW (Copy on Write)`
|
||||||
|
.. |CRD| replace:: :abbr:`CRD (Custom Resource Definition)`
|
||||||
|
.. |CRDs| replace:: :abbr:`CRDs (Custom Resource Definitions)`
|
||||||
.. |CSK| replace:: :abbr:`CSK (Code Signing Key)`
|
.. |CSK| replace:: :abbr:`CSK (Code Signing Key)`
|
||||||
.. |CSKs| replace:: :abbr:`CSKs (Code Signing Keys)`
|
.. |CSKs| replace:: :abbr:`CSKs (Code Signing Keys)`
|
||||||
.. |CVE| replace:: :abbr:`CVE (Common Vulnerabilities and Exposures)`
|
.. |CVE| replace:: :abbr:`CVE (Common Vulnerabilities and Exposures)`
|
||||||
|
Loading…
Reference in New Issue
Block a user