Chapitre 6. Déploiements
6.1. Domaines personnalisés pour les applications
À partir de Red Hat OpenShift Service sur AWS 4.14, l’opérateur de domaine personnalisé est obsolète. Gérer Ingress dans Red Hat OpenShift Service sur AWS 4.14, utilisez l’opérateur Ingress. La fonctionnalité est inchangée pour Red Hat OpenShift Service sur AWS 4.13 et versions antérieures.
Il est possible de configurer un domaine personnalisé pour vos applications. Les domaines personnalisés sont des domaines génériques spécifiques qui peuvent être utilisés avec Red Hat OpenShift Service sur les applications AWS.
6.1.1. Configuration de domaines personnalisés pour les applications
Les domaines de premier niveau (TLD) appartiennent au client qui exploite le service OpenShift Red Hat sur AWS cluster. L’opérateur de domaines personnalisés met en place un nouveau contrôleur d’entrée avec un certificat personnalisé en tant qu’opération de deuxième jour. L’enregistrement DNS public pour ce contrôleur d’entrée peut ensuite être utilisé par un DNS externe pour créer un enregistrement CNAME wildcard pour une utilisation avec un domaine personnalisé.
Les domaines API personnalisés ne sont pas pris en charge car Red Hat contrôle le domaine API. Cependant, les clients peuvent changer leurs domaines d’application. Dans le cas des domaines personnalisés privés avec un contrôleur privé IngressController, définissez .spec.scope sur Interne dans le CustomDomain CR.
Conditions préalables
- Compte utilisateur doté de privilèges dédiés à l’administration
- Domaine unique ou générique, tel que *.apps.<company_name>.io
- Certificat personnalisé ou certificat sur mesure, tel que CN=*.apps.<company_name>.io
- Accès à un cluster avec la dernière version du CLI oc installé
Il ne faut pas utiliser les noms réservés par défaut ou les applications*, telles que les applications ou les applications2, dans la section métadonnées/nom: section CustomDomain CR.
Procédure
Créez un nouveau secret TLS à partir d’une clé privée et d’un certificat public, où fullchain.pem et privkey.pem sont vos certificats wildcard publics ou privés.
Exemple :
oc create secret tls <name>-tls --cert=fullchain.pem --key=privkey.pem -n <my_project>
$ oc create secret tls <name>-tls --cert=fullchain.pem --key=privkey.pem -n <my_project>
Copy to Clipboard Copied! Créer une nouvelle ressource personnalisée CustomDomain (CR):
Exemple <company_name>-custom-domain.yaml
apiVersion: managed.openshift.io/v1alpha1 kind: CustomDomain metadata: name: <company_name> spec: domain: apps.<company_name>.io scope: External loadBalancerType: Classic certificate: name: <name>-tls namespace: <my_project> routeSelector: matchLabels: route: acme namespaceSelector: matchLabels: type: sharded
apiVersion: managed.openshift.io/v1alpha1 kind: CustomDomain metadata: name: <company_name> spec: domain: apps.<company_name>.io
1 scope: External loadBalancerType: Classic
2 certificate: name: <name>-tls
3 namespace: <my_project> routeSelector:
4 matchLabels: route: acme namespaceSelector:
5 matchLabels: type: sharded
Copy to Clipboard Copied! - 1
- Le domaine personnalisé.
- 2
- Le type d’équilibreur de charge pour votre domaine personnalisé. Ce type peut être le classique par défaut ou la NLB si vous utilisez un équilibreur de charge réseau.
- 3
- Le secret créé à l’étape précédente.
- 4
- Facultatif: Filtre l’ensemble des itinéraires desservis par l’entrée CustomDomain. En l’absence de valeur, la valeur par défaut n’est pas de filtrage.
- 5
- Facultatif: Filtre l’ensemble d’espaces de noms desservis par l’entrée CustomDomain. En l’absence de valeur, la valeur par défaut n’est pas de filtrage.
Appliquer le CR:
Exemple :
oc apply -f <company_name>-custom-domain.yaml
$ oc apply -f <company_name>-custom-domain.yaml
Copy to Clipboard Copied! Bénéficiez du statut de votre CR nouvellement créé:
oc get customdomains
$ oc get customdomains
Copy to Clipboard Copied! Exemple de sortie
NAME ENDPOINT DOMAIN STATUS <company_name> xxrywp.<company_name>.cluster-01.opln.s1.openshiftapps.com *.apps.<company_name>.io Ready
NAME ENDPOINT DOMAIN STATUS <company_name> xxrywp.<company_name>.cluster-01.opln.s1.openshiftapps.com *.apps.<company_name>.io Ready
Copy to Clipboard Copied! À l’aide de la valeur du point de terminaison, ajoutez un nouvel enregistrement générique CNAME à votre fournisseur DNS géré, tel que Route53.
Exemple :
*.apps.<company_name>.io -> xxrywp.<company_name>.cluster-01.opln.s1.openshiftapps.com
*.apps.<company_name>.io -> xxrywp.<company_name>.cluster-01.opln.s1.openshiftapps.com
Copy to Clipboard Copied! Créez une nouvelle application et exposez-la:
Exemple :
oc new-app --docker-image=docker.io/openshift/hello-openshift -n my-project
$ oc new-app --docker-image=docker.io/openshift/hello-openshift -n my-project
Copy to Clipboard Copied! oc create route <route_name> --service=hello-openshift hello-openshift-tls --hostname hello-openshift-tls-my-project.apps.<company_name>.io -n my-project
$ oc create route <route_name> --service=hello-openshift hello-openshift-tls --hostname hello-openshift-tls-my-project.apps.<company_name>.io -n my-project
Copy to Clipboard Copied! oc get route -n my-project
$ oc get route -n my-project
Copy to Clipboard Copied! curl https://hello-openshift-tls-my-project.apps.<company_name>.io
$ curl https://hello-openshift-tls-my-project.apps.<company_name>.io Hello OpenShift!
Copy to Clipboard Copied!
Résolution de problèmes
6.1.2. Le renouvellement d’un certificat pour les domaines personnalisés
Il est possible de renouveler les certificats auprès de l’opérateur de domaines personnalisés (CDO) en utilisant l’outil oc CLI.
Conditions préalables
- La dernière version de l’outil oc CLI est installée.
Procédure
Créer un nouveau secret
oc create secret tls <secret-new> --cert=fullchain.pem --key=privkey.pem -n <my_project>
$ oc create secret tls <secret-new> --cert=fullchain.pem --key=privkey.pem -n <my_project>
Copy to Clipboard Copied! Correction CustomDomain CR
oc patch customdomain <company_name> --type='merge' -p '{"spec":{"certificate":{"name":"<secret-new>"}}}'
$ oc patch customdomain <company_name> --type='merge' -p '{"spec":{"certificate":{"name":"<secret-new>"}}}'
Copy to Clipboard Copied! Effacer le vieux secret
oc delete secret <secret-old> -n <my_project>
$ oc delete secret <secret-old> -n <my_project>
Copy to Clipboard Copied!
Résolution de problèmes