Gestione di certificati e segreti TLS e non TLS
Scopri come utilizzare i certificati e i segreti nel tuo cluster.
Considera l'utilizzo Secrets Manager di per gestire centralmente e aggiornare automaticamente i tuoi segreti.
Gestione dei certificati e dei segreti di TLS con Ingress
Il certificato Ingress TLS è memorizzato come segreto Kubernetes. Per gestire i segreti di TLS nel cluster, è possibile utilizzare la serie di comandi ibmcloud oc ingress secret.
Ad esempio, puoi importare un certificato da Secrets Manager a un segreto Kubernetes nel tuo cluster immettendo il seguente comando.
ibmcloud oc ingress secret create --cluster CLUSTER_NAME_OR_ID --cert-crn CRN --name SECRET_NAME --namespace openshift-ingress
Per importare il certificato con il ibmcloud oc ingress secret create comando, è necessario che un'istanza Secrets Manager predefinita sia registrata nel cluster. Se non
disponi di un'istanza Secrets Manager e i tuoi segreti sono invece scritti direttamente sul tuo cluster, i tuoi segreti non hanno il valore CRN richiesto e devi copiarli manualmente con i comandi del oc plug-in OpenShift.
Per visualizzare tutti i segreti di Ingress per i certificati TLS nel cluster, eseguire il seguente comando.
ibmcloud oc ingress secret ls -c CLUSTER
Impostazione dei segreti TLS per il sottodominio Ingress fornito da IBM
IBM fornisce un sottodominio Ingress e un certificato TLS predefinito, memorizzato come segreto Kubernetes nel cluster, che può essere specificato nella risorsa Ingress. I certificati TLS forniti da IBM vengono firmati da LetsEncrypt e vengono gestiti completamente da IBM.
Il sottodominio Ingress con carattere jolly fornito da IBM, *.<cluster_name>-<globally_unique_account_HASH>-0000.<region>.containers.appdomain.cloud, è registrato per impostazione predefinita per il tuo cluster.
Il certificato TLS fornito da IBM è un certificato jolly e può essere utilizzato per il dominio secondario jolly.
Seguire i passaggi per utilizzare il certificato predefinito di TLS per il sottodominio di ingresso fornito da IBM.
-
Ottenere il nome del segreto in cui è memorizzato il certificato predefinito di TLS. Tieni presente che questo è il nome segreto che specifichi nella sezione
spec.tlsdella tua risorsa Ingress.ibmcloud oc cluster get -c CLUSTER | grep IngressOutput di esempio
Ingress Subdomain: mycluster-<hash>-0000.us-south.containers.appdomain.cloud Ingress Secret: mycluster-<hash>-0000 -
Visualizzare i dettagli del segreto e annotare il valore CRN. È il CRN del certificato TLS. Se non si dispone di un'istanza [Secrets Manager] registrata nel cluster, il segreto non ha un CRN. Per ulteriori dettagli, consultare la nota nel passo seguente.
ibmcloud oc ingress secret get -c CLUSTER --name SECRET_NAME --namespace openshift-ingress -
Creare un segreto per il certificato predefinito di TLS in ogni spazio dei nomi in cui sono presenti risorse o app di Ingress. Specificare il CRN del certificato TLS con l'opzione di comando
--cert-crn.ibmcloud oc ingress secret create --cluster CLUSTER_NAME_OR_ID --cert-crn CRN --name SECRET_NAME --namespace openshift-ingressPer copiare il segreto con il
ibmcloud oc ingress secret createcomando, è necessario che nel cluster sia registrata un'istanza Secrets Manager predefinita. Se non disponi di un'istanza Secrets Manager e i tuoi segreti sono invece scritti direttamente sul tuo cluster, i tuoi segreti non hanno il valore CRN richiesto e devi copiarli manualmente con i comandi delocplug-in OpenShift.
Impostazione dei segreti di TLS per i sottodomini personalizzati
Se si definisce un sottodominio personalizzato nella risorsa Ingress, è possibile utilizzare il proprio certificato TLS per gestire la terminazione TLS. È necessario creare un segreto Kubernetes per memorizzare il certificato TLS, quindi importare questo segreto in ogni spazio dei nomi in cui sono presenti le applicazioni.
Memorizzando i certificati personalizzati di TLS in Secrets Manager è possibile importare i certificati direttamente in un segreto di Kubernetes nel cluster.
-
Creare o importare un segreto per il certificato TLS nello spazio dei nomi in cui esiste la risorsa Ingress. Ad esempio, è possibile importare un segreto da Secrets Manager nel cluster eseguendo il seguente comando. Specificare il CRN del certificato TLS con l'opzione di comando
--cert-crn.Per importare il certificato con il
ibmcloud oc ingress secret createcomando, è necessario che un'istanza Secrets Manager predefinita sia registrata nel cluster. Se non disponi di un'istanza Secrets Manager e i tuoi segreti sono invece scritti direttamente sul tuo cluster, i tuoi segreti non hanno il valore CRN richiesto e devi copiarli manualmente con i comandi delocplug-in OpenShift.ibmcloud oc ingress secret create --name SECRET_NAME --cluster CLUSTER_NAME_OR_ID --cert-crn CERTIFICATE_CRN --namespace openshift-ingress -
Ripeti il passo precedente per ogni spazio dei nomi in cui esistono le tue applicazioni.
Gestione dei segreti non TLS
Per gestire i segreti non TLS, è possibile utilizzare i comandi ibmcloud oc ingress secret.
Esistono 5 tipi di segreti non TLS:
- I segreti arbitrari contengono un valore di stringa.
- Le credenziali IAM contengono una chiave API IAM.
- I segreti di nome utente e password contengono un nome utente e una password come due valori separati.
- I valori chiave contengono valori JSON.
- Le credenziali personalizzate contengono valori (stringhe) personalizzati.
Scoprite come potete gestire in modo centralizzato i vostri segreti non TLS con IBM Cloud Secrets Manager. Con Secrets Manager è possibile creare segreti Kubernetes gestiti, aggiornare automaticamente i segreti, creare gruppi di segreti che controllano chi ha accesso ai segreti nel cluster e altro ancora.
Creare un segreto non TLS nel proprio cluster
Creare un segreto non TLS specificando l'opzione --type Opaque nel comando ibmcloud oc ingress secret create comando. Con il tipo di Opaque, è possibile includere più valori CRN non certificati.
Se l'opzione " --type " non viene specificata, per impostazione predefinita viene applicata l'opzione " TLS ". Per ulteriori informazioni e ulteriori opzioni di comando, vedi il riferimento CLI.
Il seguente esempio di comando crea un segreto non TLS con il tipo Opaque specificato. I segreti non TLS richiedono almeno un campo segreto. Nota che il modo in cui specifichi l'opzione --field varia in base al tipo di segreto che crei.
ibmcloud oc ingress secret create -c cluster-test --name example-secret --namespace openshift-ingress --field crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa1a11111aaa1a1111aa1aa111:111a1111-11a1 --type Opaque
Per verificare che il segreto sia stato creato, elencare tutti i segreti nello spazio dei nomi.
kubectl get secret -n default
L'esempio seguente mostra il risultato.
NAME TYPE DATA AGE
all-icr-io kubernetes.io/dockerconfigjson 1 41h
default-token-8t6xw kubernetes.io/service-account-token 3 41h
example-secret Opaque 3m
Gestione dei campi segreti non TLS
Un campo segreto è una coppia chiave-valore che è memorizzata in un segreto non TLS. Fare riferimento agli esempi seguenti per visualizzare, aggiungere, aggiornare o rimuovere i campi segreti non TLS.
Visualizzazione dei valori del campo
È possibile visualizzare i valori dei campi di un segreto ottenendo i relativi dettagli.
kubectl get secret -n default example-secret -o yaml
Il seguente output di esempio mostra i campi segreti e i relativi valori nella sezione data.
apiVersion: v1
data:
arbitraryFVT: AAAaaAAaAAA1AAAaaAAa
userCredsFVT_password: aAAaa1aaaA=
userCredsFVT_username: aAAaaa==
kind: Secret
metadata:
annotations:
ingress.cloud.ibm.com/cert-source: ibm
razee.io/build-url: https://url.com
razee.io/source-url: https://url.com
creationTimestamp: "2022-11-08T19:45:05Z"
name: example-secret
namespace: default
resourceVersion: "111111"
uid: 1aaa1111-1a11-111a-a1a1-11111a1a1a1a
type: Opaque
È inoltre possibile elencare i campi in un segreto con i comandi ibmcloud oc ingress secret field ls e ibmcloud oc ingress secret get, ma gli output includono solo il nome campo e non il valore associato ad esso.
Aggiunta di un campo segreto
Aggiungere un campo segreto a un segreto non TLS eseguendo il comando ibmcloud oc ingress secret field add con l'opzione --field.
È anche possibile utilizzare questa opzione per aggiungere campi quando si crea un segreto con il comando ibmcloud oc ingress secret create.
Questa opzione non è supportata per i segreti TLS.
Esistono tre modi per specificare l'opzione --field. Quello scelto dipende dal tipo di segreto e da come si desidera denominare il campo nel segreto.
| Opzione | Formato | Descrizione | Tipi di segreto supportati |
|---|---|---|---|
| Valore predefinito | --field <crn> |
Il nome del campo aggiunto è il nome campo predefinito per il tipo di segreto del CRN fornito. | Tutti i tipi di segreto non TLS |
| Con nome | --field <name>=<crn> |
Utilizzare questa opzione per specificare un nome per il campo aggiunto. Il nome del campo aggiunto è il valore specificato per <name>. |
|
| Con prefisso | --field prefix=<crn> |
Il nome del campo aggiunto è il nome campo predefinito per il tipo di segreto specificato dal CRN fornito, preceduto dal nome del segreto specificato da <crn> e da un carattere di
sottolineatura. |
|
I nomi dei campi predefiniti sono arbitrary per segreti arbitrari, api_key per credenziali IAM, username o password per credenziali utente e key per chiave-valore.
Il seguente esempio aggiunge tre campi segreti - utilizzando lo stesso segreto delle credenziali IAM, denominato iam- per dimostrare in che modo le varie opzioni --field influiscono sul nome del campo risultante.
È possibile visualizzare i campi aggiunti a un segreto eseguendo kubectl get secret e visualizzando il blocco data dell'output.
ibmcloud oc ingress secret field add --cluster example-cluster --name example-iam-secret --namespace openshift-ingress --field crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa-1a11-111a-aa1a-1111aa1aa111:secret:111a1111-11a1-11aa-a1a1-111aa12345aa --field custom_iam_name=crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa-1a11-111a-aa1a-1111aa1aa111:secret:111a1111-11a1-11aa-a1a1-111aa12345aa --field prefix=crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa-1a11-111a-aa1a-1111aa1aa111:secret:111a1111-11a1-11aa-a1a1-111aa12345aa
Campi di esempio elencati nel blocco data dei dettagli del segreto.
data:
api_key: bmZrUHR1VS1fNVpMOExsTmIxeTdQcXFTSENMc2pTUjRsNTQyTzZkZ2ZQMkk= # Default field type using the default `api_key` field name
custom_iam_name: bmZrUHR1VS1fNVpMOExsTmIxeTdQcXFTSENMc2pTUjRsNTQyTzZkZ2ZQMkk= # Named field type using the specified `custom_iam_name` field name.
iam_api_key: bmZrUHR1VS1fNVpMOExsTmIxeTdQcXFTSENMc2pTUjRsNTQyTzZkZ2ZQMkk= # Prefixed field type using the `iam` name in Secrets Manager followed by the `api_key` default name.
Aggiornamento dei campi segreti
Eseguire il comando ingress secret update per aggiornare i valori di un campo segreto. Notare che questo non aggiorna il CRN. Per ulteriori informazioni e opzioni di comandi, vedi il riferimento CLI.
ibmcloud oc ingress secret update --cluster example-cluster --name example-secret --namespace openshift-ingress
Rimozione di un campo segreto
È possibile rimuovere un campo segreto da un segreto non TLS. Per ulteriori informazioni e opzioni di comandi, vedi il riferimento CLI.
ibmcloud oc ingress secret field rm -c example-cluster --name example-secret --namespace openshift-ingress --field-name example-Field
Puoi verificare che il campo sia rimosso controllando il blocco data dei dettagli del segreto.
kubectl get secret -n default example-secret -o yaml
FAQ sui segreti
Esamina le risposte alle domande più comuni sulla gestione dei segreti nel tuo cluster.
- I miei segreti vengono aggiornati automaticamente se non creo e registro un'istanza Secrets Manager ?
- Se non registri un'istanza Secrets Manager sul tuo cluster, i tuoi segreti Ingress predefiniti continuano ad aggiornarsi automaticamente ogni 90 giorni e vengono applicati al tuo cluster. Tuttavia, tutti i segreti che hai creati che fanno riferimento al segreto Ingress predefinito non vengono aggiornati automaticamente.
- Scenario di esempio: hai un certificato Ingress predefinito nello spazio dei nomi
default. Esegui il comandoibmcloud oc ingress secret createe fai riferimento al CRN del certificato Ingress predefinito per eseguire il mirroring del certificato nello spazio dei nomiistio-system. Senza un'istanza Secrets Manager, il certificato Ingress predefinito nello spazio dei nomidefaultviene aggiornato automaticamente. Tuttavia, sei responsabile dell'aggiornamento regolare del certificato nello spazio dei nomiistio-systemcon i comandi**kubectl**o un altro metodo di rotazione. - Ho creato dei segreti che fanno riferimento al certificato Ingress predefinito, ma non ho creato e registrato un'istanza Secrets Manager. Come posso gestire i miei segreti?
- Se non registri un'istanza Secrets Manager, Red Hat OpenShift on IBM Cloud aggiorna automaticamente solo il segreto Ingress predefinito. Sei responsabile della gestione di tutti gli altri segreti utilizzando i comandi
kubectlo un altro metodo di rotazione. Se i tuoi segreti fanno riferimento al certificato Ingress predefinito, rimuovili utilizzandoibmcloud ks ingress secret rm.