##
We are going to make the following changes to the Object Store docs as
part of a larger QC/Content pass:
### Left Navigation
We want to modify the left navigation flow to be a natural progression
from a basic setup to more advanced.
For example:
- Core Concepts
- Deployment Architecture
- Availability and Resiliency
- Erasure Coding and Object Healing
- Object Scanner
- Site Replication and Failover
- Thresholds and Limits
- Installation
- Deployment Checklist
- Deploy MinIO on Kubernetes
- Deploy MinIO on Red Hat Linux
- Deploy MinIO on Ubuntu Linux
- Deploy MinIO for Development (MacOS, Windows, Container)
- Security and Encryption (Conceptual Overview)
- Network Encryption (TLS) (Conceptual overview)
- Enable Network Encryption using Single Domain
- Enable Network Encryption using Multiple Domains
- Enable Network Encryption using certmanager (Kubernetes only)
- Data Encryption (SSE) (Conceptual overview)
- Enable SSE using AIStor Key Management Server
- Enable SSE using KES (Summary page + linkouts)
- External Identity Management (Conceptual Overview)
- Enable External Identity management using OpenID
- Enable External Identity management using AD/LDAP
- Backup and Recovery
- Create a Multi-Site Replication Configuration
- Recovery after Hardware Failure
- Recover after drive failure
- Recover after node failure
- Recover after site failure
- Monitoring and Alerts
- Metrics and Alerting (v3 reference)
- Monitoring and Alerting using Prometheus
- Monitoring and Alerting using InfluxDB
- Monitoring and Alerting using Grafana
- Metrics V2 Reference
- Publish Server and Audit Logs to External Services
- MinIO Healthcheck API
The Administration, Developer, and Reference sections will remain as-is
for now.
http://192.241.195.202:9000/staging/singleplat/mindocs/index.html
# Goals
Maintaining multiple platforms is getting to be too much, and based on
analytics the actual number of users taking advantage of it is minimal.
Furthermore, the majority of traffic is to installation pages.
Therefore we're going to try to collapse back into a single MinIO Object
Storage product, and use simple navigation and on-page selectors to
handle Baremetal vs Kubernetes.
This may also help to eventually stage us to migrate to Hugo + Markdown
---------
Co-authored-by: Daryl White <53910321+djwfyi@users.noreply.github.com>
Co-authored-by: Rushan <rushenn@minio.io>
Co-authored-by: rushenn <rushenn123@gmail.com>
11 KiB
Enable Multiple Domain TLS for MinIO
minio
Table of Contents
MinIO supports Transport Layer Security (TLS) 1.2+ encryption of incoming and outgoing traffic.
Kubernetes
The MinIO Operator supports the following approaches to enabling TLS on a MinIO Tenant:
- Automatic TLS provisioning using Kubernetes Cluster Signing Certificates
- User-specified TLS using Kubernetes secrets
- Certmanager-managed TLS certificates
The MinIO Operator supports attaching user-specified TLS certificates
when deploying <minio-k8s-deploy-minio-tenant-security>
or modifying <minio-k8s-modify-minio-tenant-security>
the MinIO Tenant.
These custom certificates support Server Name
Indication (SNI), where the MinIO server identifies which
certificate to use based on the hostname specified by the connecting
client. For example, you can generate certificates signed by your
organization's preferred Certificate Authority (CA) and attach those to
the MinIO Tenant. Applications which trust that CA (Certificate Authority)
can connect to the MinIO Tenant and fully validate the Tenant TLS
certificates.
Baremetal
MinIO automatically detects TLS certificates in the configured or default directory and starts with TLS enabled.
The MinIO server supports multiple TLS certificates, where the server
uses Server Name
Indication (SNI) to identify which certificate to use when
responding to a client request. When a client connects using a specific
hostname, MinIO uses SNI (Server Name Indication) to select the
appropriate TLS certificate for that hostname.
This procedure documents enabling TLS for multiple domains in MinIO. For instructions on TLS for single domains, see TODO
Prerequisites
Access to MinIO Cluster
Kubernetes
You must have access to the Kubernetes cluster, with administrative
permissions associated to your kubectl configuration.
This procedure assumes your permission sets extends sufficiently to support deployment or modification of MinIO-associated resources on the Kubernetes cluster, including but not limited to pods, statefulsets, replicasets, deployments, and secrets.
Baremetal
This procedure uses mc for performing operations on the MinIO cluster.
Install mc on a machine with network access to the cluster.
See the mc Installation Quickstart <mc-install> for
instructions on downloading and installing mc.
This procedure assumes a configured alias <mc alias> for the MinIO cluster.
This procedure also assumes SSH or similar shell-level access with administrative permissions to each MinIO host server.
TLS Certificates
Provision the necessary TLS certificates with a supported cipher suite <minio-TLS-supported-cipher-suites>
for use by MinIO.
Kubernetes
See minio-tls-kubernetes for more complete guidance on the
supported Tenant TLS configurations.
Baremetal
Provision certificate susing your preferred path, such as through your organizations internal Certificate Authority or by using a well-known global provider such as Digicert or Verisign.
You can create self-signed certificates using openssl or
the MinIO certgen <certgen> tool.
For example, the following command generates a self-signed certificate with a set of IP and DNS Subject Alternate Names (SANs) associated to the MinIO Server hosts:
certgen -host "localhost,minio-*.example.net"
See minio-tls-baremetal for more complete guidance on
certificate generation and placement.
Procedure
Kubernetes
The MinIO Operator supports three methods of TLS certificate management on MinIO Tenants:
- MinIO automatic TLS certificate generation
- User-specified TLS certificates
cert-managermanaged TLS certificates
You can also deploy MinIO Tenants without TLS enabled.
MinIO Auto-TLS
The following steps apply to both new and existing MinIO Deployments
using Kustomize:
Review the
Tenant CRD <minio-operator-crd>TenantSpec.requestAutoCertandTenantSpec.certConfigfields.For existing MinIO Tenants, review the Kustomize resources used to create the Tenant and introspect those fields and their current configuration, if any.
Create or Modify your Tenant YAML to set the values of
requestAutoCertandcertConfigas necessary. For example:spec: requestAutoCert: true certConfig: commonName: "CN=MinioTenantCommonName" organizationName: "O=MyOrganizationName" dnsNames: - 'minio-tenant.domain.tld' - '*.kubernete.cluster.dns.path.tld'The
spec.certConfig.dnsNamesshould contain a list ofSAN (Subject Alternate Names)the TLS certificate covers.See the
Kustomize Tenant base YAML <operator/blob/master/examples/kustomization/base/tenant.yaml>for a baseline template for guidance in creating or modifying your Tenant resource.Apply the new Kustomization template
Once you apply the changes, the MinIO Operator automatically redeploys the Tenant with the updated configuration.
CertManager
The following steps apply to both new and existing MinIO Deployments
using Kustomize:
Review the
Tenant CRD <minio-operator-crd>TenantSpec.externalCertsCecretfieldsFor existing MinIO Tenants, review the Kustomize resources used to create the Tenant and introspect that field's current configuration, if any.
Create or Modify your Tenant YAML to reference the appropriate
cert-managerresources.For example, the following Tenant YAML fragment references a cert-manager resource
myminio-tls:apiVersion: minio.min.io/v2 kind: Tenant metadata: name: myminio namespace: minio-tenant spec: ## Disable default tls certificates. requestAutoCert: false ## Use certificates generated by cert-manager. externalCertSecret: - name: default-domain type: cert-manager.io/v1 - name: internal-domain type: cert-manager.io/v1 - name: external-domain type: cert-manager.io/v1Apply the new Kustomization Template
Once you apply the changes, the MinIO Operator automatically redeploys the Tenant with the updated configuration.
User-Specified
The following steps apply to both new and existing MinIO deployments
using Kustomize:
Review the
Tenant CRD <minio-operator-crd>TenantSpec.externalCertSecretfield.For existing MinIO Tenants, review the Kustomize resources used to create the Tenant and introspect that field's current configuration, if any.
Create or modify your Tenant YAML to reference a secret of type
kubernetes.io/tls:For example, the following Tenant YAML fragment references two TLS secrets for each domain for which the MinIO Tenant accepts connections:
apiVersion: minio.min.io/v2 kind: Tenant metadata: name: myminio namespace: minio-tenant spec: ## Disable default tls certificates. requestAutoCert: false ## Use certificates generated by cert-manager. externalCertSecret: - name: domain-certificate-1 type: kubernetes.io/tls - name: domain-certificate-2 type: kubernetes.io/tlsApply the new Kustomization Template
Once you apply the changes, the MinIO Operator automatically redeploys the Tenant with the updated configuration.
Baremetal
The MinIO Server searches for TLS keys and certificates for each node and uses those credentials for enabling TLS. MinIO automatically enables TLS upon discovery and validation of certificates. The search location depends on your MinIO configuration:
Default Path
By default, the MinIO server looks for the TLS keys and certificates for each node in the following directory:
${HOME}/.minio/certs
Where ${HOME} is the home directory of the user running
the MinIO Server process. You may need to create the
${HOME}/.minio/certs directory if it does not exist.
For systemd managed deployments this must correspond to
the USER running the MinIO process. If that user has no
home directory, use the Custom Path option instead.
Custom Path
You can specify a path for the MinIO server to search for
certificates using the minio server --certs-dir or -S
parameter.
For example, the following command fragment directs the MinIO process
to use the /opt/minio/certs directory for TLS
certificates.
minio server --certs-dir /opt/minio/certs ...
The user running the MinIO service must have read and write permissions to this directory.
Place the certificates in the /certs folder, creating a
subfolder in /certs for each additional domain for which
MinIO should present TLS certificates. While MinIO has no requirements
for folder names, consider creating subfolders whose name matches the
domain to improve human readability. Place the TLS private and public
key for that domain in the subfolder.
/path/to/certs
private.key
public.crt
s3-example.net/
private.key
public.crt
internal-example.net/
private.key
public.crt