Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document OpenShift service certificates for Operator deployments #1002

Merged
merged 5 commits into from
Sep 25, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion source/default-conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
'podman-docs' : ('https://docs.podman.io/en/latest/%s', None),
'podman-git' : ('https://github.com/containers/podman/%s', None),
'docker-docs' : ('https://docs.docker.com/%s', None),
'openshift-docs' : ('https://docs.openshift.com/container-platform/4.11/%s', None),
'openshift-docs' : ('https://docs.openshift.com/container-platform/4.13/%s', None),
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might as well? Too bad Red Hat docs don't have an equivalent of latest.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No harm in bumping!

'influxdb-docs' : ('https://docs.influxdata.com/influxdb/v2.4/%s', None),
'eks-docs' : ('https://docs.aws.amazon.com/eks/latest/userguide/%s', None),
'minio-web' : ('https://min.io/%s?ref=docs', None),
Expand Down
2 changes: 1 addition & 1 deletion source/includes/k8s/deploy-operator.rst
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ Kubernetes TLS Certificate API
The MinIO Operator manages TLS Certificate Signing Requests (CSR) using the Kubernetes ``certificates.k8s.io`` :kube-docs:`TLS certificate management API <tasks/tls/managing-tls-in-a-cluster/>` to create signed TLS certificates in the following circumstances:

- When ``autoCert`` is enabled.
- For the MinIO Console when the :envvar:`OPERATOR_CONSOLE_TLS_ENABLE` environment variable is set to ``on``.
- For the MinIO Console when the :envvar:`MINIO_CONSOLE_TLS_ENABLE` environment variable is set to ``on``.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OPERATOR_CONSOLE_TLS_ENABLE was an oops the correct name is MINIO_CONSOLE_TLS_ENABLE

- For :ref:`STS service <minio-security-token-service>` when :envvar:`OPERATOR_STS_ENABLED` environment variable is set to ``on``.
- For retrieving the health of the cluster.

Expand Down
212 changes: 178 additions & 34 deletions source/includes/openshift/deploy-minio-on-openshift.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

.. _deploy-operator-openshift:

=========================================
Expand All @@ -16,7 +17,7 @@ Overview
Red Hat® OpenShift® is an enterprise-ready Kubernetes container platform with full-stack automated operations to manage hybrid cloud, multi-cloud, and edge deployments.
OpenShift includes an enterprise-grade Linux operating system, container runtime, networking, monitoring, registry, and authentication and authorization solutions.

You can deploy the MinIO Kubernetes Operator through the :openshift-docs:`Red Hat® OpenShift® Container Platform 4.7+ <welcome/index.html>`.
You can deploy the MinIO Kubernetes Operator through the :openshift-docs:`Red Hat® OpenShift® Container Platform 4.8+ <welcome/index.html>`.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Per Celis, Red Hat said we have to be 4.8+ now.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cniackz is there a specific Operator version where that bump happened? We might want to maintain a matrix somewhere, at least internally.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @ravindk89,

Our ability to influence this situation is limited. I recall that certification tests would fail if we attempted to cover versions 4.7 or older, necessitating our decision to cease coverage of those versions and progress towards more recent ones.

Furthermore, if you visit their website, you will notice that full support for that particular version has already concluded: https://access.redhat.com/support/policy/updates/openshift

Best regards,

Screenshot 2023-09-25 at 11 09 48 AM

You can deploy and manage MinIO Tenants through OpenShift after deploying the MinIO Operator.
This procedure includes instructions for the following deployment paths:

Expand All @@ -26,15 +27,15 @@ This procedure includes instructions for the following deployment paths:
After deploying the MinIO Operator into your OpenShift cluster, you can create and manage MinIO Tenants through the :openshift-docs:`OperatorHub <operators/understanding/olm-understanding-operatorhub.html>` user interface.

This documentation assumes familiarity with all referenced Kubernetes and OpenShift concepts, utilities, and procedures.
While this documentation *may* provide guidance for configuring or deploying Kubernetes-related or OpenShift-related resources on a best-effort basis, it is not a replacement for the official :kube-docs:`Kubernetes Documentation <>` and :openshift-docs:`OpenShift Container Platform 4.7+ Documentation <welcome/index.html>`.
While this documentation *may* provide guidance for configuring or deploying Kubernetes-related or OpenShift-related resources on a best-effort basis, it is not a replacement for the official :kube-docs:`Kubernetes Documentation <>` and :openshift-docs:`OpenShift Container Platform 4.8+ Documentation <welcome/index.html>`.

Prerequisites
-------------

RedHat OpenShift 4.7+
RedHat OpenShift 4.8+
~~~~~~~~~~~~~~~~~~~~~

The MinIO Kubernetes Operator is available starting with `OpenShift 4.7+ <https://docs.openshift.com/container-platform/4.7/welcome/index.html>`__.
The MinIO Kubernetes Operator is available starting with `OpenShift 4.8+ <https://docs.openshift.com/container-platform/4.13/welcome/index.html>`__.

Red Hat Marketplace installation requires registration of the OpenShift cluster with the Marketplace for the necessary namespaces.
See `Register OpenShift cluster with Red Hat Marketplace <https://marketplace.redhat.com/en-us/documentation/clusters>`__ for complete instructions.
Expand Down Expand Up @@ -70,39 +71,38 @@ Select the tab that corresponds to your preferred installation method:

.. tab-set::

.. tab-item:: Red Hat Marketplace
.. tab-item:: Red Hat OperatorHub
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Switched order of these tabs, because using OperatorHub saves you from several annoyances and we should encourage it.

Marketplace does lead you to OperatorHub, but in a roundabout way that few people do. (I.e. paying Red Hat instead of us directly.)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"changes" from here through line 105 are all because of the tab reorder. (Improvements to existing welcome, as always.)


Open the `MinIO Red Hat Marketplace listing <https://marketplace.redhat.com/en-us/products/minio-hybrid-cloud-object-storage>`__ in your browser.
Click :guilabel:`Login` to log in with your Red Hat Marketplace account.

After logging in, click :guilabel:`Purchase` to purchase the MinIO Operator for your account.
Log into the OpenShift Web Console as a user with ``cluster-admin`` privileges.

After completing the purchase, click :guilabel:`Workplace` from the top navigation and select :guilabel:`My Software`.
From the :guilabel:`Administrator` panel, select :guilabel:`Operators`, then :guilabel:`OperatorHub`.

.. image:: /images/openshift/minio-openshift-marketplace-my-software.png
From the :guilabel:`OperatorHub` page, type "MinIO" into the :guilabel:`Filter` text entry. Select the :guilabel:`MinIO Operator` tile from the search list.

.. image:: /images/openshift/minio-openshift-select-minio.png
:align: center
:width: 90%
:class: no-scaled-link
:alt: From the Red Hat Marketplace, select Workplace, then My Software
:alt: From the OperatorHub, search for MinIO, then select the MinIO Tile.

Click :guilabel:`MinIO Hybrid Cloud Object Storage` and select :guilabel:`Install Operator` to start the Operator Installation procedure in OpenShift.
Select the :guilabel:`MinIO Operator` tile, then click :guilabel:`Install` to begin the installation.

.. tab-item:: Red Hat OperatorHub
.. tab-item:: Red Hat Marketplace

Log into the OpenShift Web Console as a user with ``cluster-admin`` privileges.

From the :guilabel:`Administrator` panel, select :guilabel:`Operators`, then :guilabel:`OperatorHub`.

From the :guilabel:`OperatorHub` page, type "MinIO" into the :guilabel:`Filter` text entry. Select the :guilabel:`MinIO Operator` tile from the search list.

.. image:: /images/openshift/minio-openshift-select-minio.png
Open the `MinIO Red Hat Marketplace listing <https://marketplace.redhat.com/en-us/products/minio-hybrid-cloud-object-storage>`__ in your browser.
Click :guilabel:`Login` to log in with your Red Hat Marketplace account.

After logging in, click :guilabel:`Purchase` to purchase the MinIO Operator for your account.

After completing the purchase, click :guilabel:`Workplace` from the top navigation and select :guilabel:`My Software`.

.. image:: /images/openshift/minio-openshift-marketplace-my-software.png
:align: center
:width: 90%
:class: no-scaled-link
:alt: From the OperatorHub, search for MinIO, then select the MinIO Tile.
:alt: From the Red Hat Marketplace, select Workplace, then My Software

Select the :guilabel:`MinIO Operator` tile, then click
:guilabel:`Install` to begin the installation.
Click :guilabel:`MinIO Hybrid Cloud Object Storage` and select :guilabel:`Install Operator` to start the Operator Installation procedure in OpenShift.

2) Configure and Deploy the Operator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand All @@ -125,7 +125,7 @@ The :guilabel:`Install Operator` page provides a walkthrough for configuring the

See the :openshift-docs:`Operator Installation Documentation <operators/admin/olm-adding-operators-to-cluster.html#olm-installing-from-operatorhub-using-web-console_olm-adding-operators-to-a-cluster>` :guilabel:`Step 5` for complete descriptions of each displayed option.

Click :guilabel:`Install` to start the installation procedure.
Click :guilabel:`Install` to start the installation procedure.
The web console displays a widget for tracking the installation progress.

.. image:: /images/openshift/minio-openshift-operator-installation-progress.png
Expand All @@ -136,19 +136,165 @@ The web console displays a widget for tracking the installation progress.

Once installation completes, click :guilabel:`View Operator` to view the MinIO Operator page.

3) Open the MinIO Operator Interface
3) Configure TLS Certificates
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you have installed the MinIO Operator from Red Hat OperatorHub, the installation process also configures the :openshift-docs:`OpenShift Service CA Operator <security/certificate_types_descriptions/service-ca-certificates.html>`.
This Operator manages the the TLS certificates required to access the MinIO Operator Console and Tenants.
ravindk89 marked this conversation as resolved.
Show resolved Hide resolved
It automatically renews and rotates the certificates 13 months before expiration.
No additional action is required.

For Operator installations deployed by other methods, configure the :openshift-docs:`Service CA certificates <security/certificate_types_descriptions/service-ca-certificates.html>` manually.
See the dropdowns below for details.

.. dropdown:: OpenShift Service CA Certificate configuration

To manually enable the ``service-ca`` Operator to manage TLS certificates:

#. Use the following :openshift-docs:`oc <cli_reference/openshift_cli/getting-started-cli.html>` command to edit the deployment:

.. code-block:: shell
:class: copyable

oc edit deployment minio-operator -n minio-operator
feorlen marked this conversation as resolved.
Show resolved Hide resolved

If needed, replace ``minio-operator`` with the name and namespace of your deployment.
``oc edit`` opens the deployment configuration file in an editor.

#. In the ``spec`` section, add the highlighted MinIO Operator :ref:`environment variables <minio-server-environment-variables>`:

.. code-block:: shell
:class: copyable
:emphasize-lines: 5-8

containers:
- args:
- controller
env:
- name: MINIO_CONSOLE_TLS_ENABLE
value: 'on'
- name: MINIO_OPERATOR_RUNTIME
value: OpenShift

#. In the ``volumes`` section, add the following volumes and volume mounts:

- ``sts-tls``
- ``openshift-service-ca``
- ``openshift-csr-signer-ca``

The added volume configuration resembles the following:

.. code-block:: shell
:class: copyable

volumes:
- name: sts-tls
projected:
sources:
- secret:
name: sts-tls
items:
- key: tls.crt
path: public.crt
- key: tls.key
path: private.key
optional: true
defaultMode: 420
- name: openshift-service-ca
configMap:
name: openshift-service-ca.crt
items:
- key: service-ca.crt
path: service-ca.crt
defaultMode: 420
optional: true
- name: openshift-csr-signer-ca
projected:
sources:
- secret:
name: openshift-csr-signer-ca
items:
- key: tls.crt
path: tls.crt
optional: true
defaultMode: 420
volumeMounts:
- name: openshift-service-ca
mountPath: /tmp/service-ca
- name: openshift-csr-signer-ca
mountPath: /tmp/csr-signer-ca
- name: sts-tls
mountPath: /tmp/sts

.. dropdown:: OpenShift Service CA Certificate for Helm deployments

For Helm deployments on OpenShift, add the following :ref:`environment variables <minio-server-environment-variables>` and volumes to the ``values.yaml`` in the Operator Helm chart before deploying.

The added YAML configuration for the ``operator`` pod resembles the following:

.. code-block::
:class: copyable

operator:
env:
- name: MINIO_OPERATOR_RUNTIME
value: "OpenShift"
- name: MINIO_CONSOLE_TLS_ENABLE
value: "on"

volumes:
- name: sts-tls
projected:
sources:
- secret:
name: sts-tls
items:
- key: tls.crt
path: public.crt
- key: tls.key
path: private.key
optional: true
defaultMode: 420
- name: openshift-service-ca
configMap:
name: openshift-service-ca.crt
items:
- key: service-ca.crt
path: service-ca.crt
defaultMode: 420
optional: true
- name: openshift-csr-signer-ca
projected:
sources:
- secret:
name: openshift-csr-signer-ca
items:
- key: tls.crt
path: tls.crt
optional: true
defaultMode: 420
volumeMounts:
- name: openshift-service-ca
mountPath: /tmp/service-ca
- name: openshift-csr-signer-ca
mountPath: /tmp/csr-signer-ca
- name: sts-tls
mountPath: /tmp/sts


4) Open the MinIO Operator Interface
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can find the MinIO Operator Interface from the :guilabel:`Operators` left-hand navigation header.
You can find the MinIO Operator Interface from the :guilabel:`Operators` left-hand navigation header

1. Go to :guilabel:`Operators`, then :guilabel:`Installed Operators`.
1. Go to :guilabel:`Operators`, then :guilabel:`Installed Operators`.

2. For the :guilabel:`Project` dropdown, select :guilabel:`openshift-operators`.

3. Select :guilabel:`MinIO Operators` from the list of installed operators.
3. Select :guilabel:`MinIO Operators` from the list of installed operators.
The :guilabel:`Status` column must read :guilabel:`Success` to access the Operator interface.

4) Access the Operator Console
5) Access the Operator Console
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The MinIO Operator includes the Operator Console, a browser-based management interface for managed MinIO tenants.
Expand All @@ -165,15 +311,13 @@ The following steps provides a summary of actions necessary to create a Route.
#. Set the :guilabel:`Hostname` as per your organizations networking and hostname topology.
Omit the hostname to allow OpenShift to generate it automatically
#. Set the :guilabel:`Service` to :guilabel:`console`
#. Set the :Guilabel:`Target Port` to ``9090``
#. Set the :Guilabel:`Target Port` to ``9090``

You can then access the Operator Console using the configured Route.
You can then access the Operator Console using the configured Route.
The Operator Console still requires using the generated JWT token for access, which you can generate at any time using ``oc minio port-forward``.

6) Next Steps
~~~~~~~~~~~~~

After deploying the MinIO Operator, you can create a new MinIO Tenant.
To deploy a MinIO Tenant using OpenShift, see :ref:`deploy-minio-tenant-redhat-openshift`.


2 changes: 1 addition & 1 deletion source/reference/kubectl-minio-plugin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ Available MinIO Operator Environment Variables

When not specified, the default value is ``operator``.

.. envvar:: OPERATOR_CONSOLE_TLS_ENABLE
.. envvar:: MINIO_CONSOLE_TLS_ENABLE

Toggle Console TLS service ``on`` or ``off``.

Expand Down