Configuration, Installation et Utilisation de Red Hat OpenStack Services On OpenShift

Accédez à Votre Environnement de Laboratoire

Pendant ce laboratoire, on vous demandera de vous connecter par ssh à votre hyperviseur à cette adresse IP {bastion_public_hostname}. Utilisez ce nom utilisateur {bastion_ssh_user_name} et le mot de passe {bastion_ssh_password}. L’uuid de votre laboratoire est : my-guid

Une fois connecté à l’hyperviseur, vous pouvez accéder au bastion à l’adresse IP 192.168.123.100 en temps que root en utilisant le mot de passe redhat.

Si nécessaire, vous pouvez naviguer vers l’URL de la console OpenShift

{ocp_console_url}[{ocp_console_url}^] en utilisant l’utilisateur admin et le mot de passe {ocp_admin_password}

Prérequis pour l’Installation

Certains prérequis nécessaires pour installer Red Hat OpenStack Services sur OpenShift (RHOSO) sont déjà inclus dans l’environnement de laboratoire tels que:

  • Un cluster OpenShift opérationnel qui prend en charge le CNI Multus

  • L’outil de ligne de commande oc sur votre poste de travail (hôte bastion)

  • L’outil de ligne de commande k9s sur votre poste de travail (hôte bastion)

  • L’outil de ligne de commande podman sur votre poste de travail (hôte bastion)

  • Accès aux dépôts qui contiennent le code d’Openstack

  • Accès à un registre existant ou création d’un registre Quay local

  • Des fichiers YAML d’exemple sont disponibles dans ce dépôt qui peut être cloné ou copié-collé pour utilisation. Pour faciliter les instructions, il sera supposé que le dépôt a été cloné

Prérequis pour installer les Opérateurs

Il y a trois opérateurs qui doivent être installés avant de pouvoir installer les opérateurs OpenStack, NMState Operator MetalLB Operator et Cert-Manager + Operator

Accès au Cluster

Depuis l’hypervisor, connectez-vous au bastion

sudo -i
ssh root@192.168.123.100

Les mot de passe est redhat.

Exemple de sortie
[root@ocp4-bastion ~]

Assurez-vous de pouvoir accéder au cluster OpenShift, par exemple, en listant les nœuds de votre cluster :

oc get nodes
Exemple de sortie
NAME                           STATUS   ROLES                  AGE   VERSION
ocp4-master1.aio.example.com   Ready    control-plane,master   26h   v1.25.16+9946c63
ocp4-master2.aio.example.com   Ready    control-plane,master   26h   v1.25.16+9946c63
ocp4-master3.aio.example.com   Ready    control-plane,master   26h   v1.25.16+9946c63
ocp4-worker1.aio.example.com   Ready    worker                 25h   v1.25.16+9946c63
ocp4-worker2.aio.example.com   Ready    worker                 25h   v1.25.16+9946c63
ocp4-worker3.aio.example.com   Ready    worker                 25h   v1.25.16+9946c63

L’opérateur NMState

NMState est un outil de gestion de configuration réseau pour Linux qui permet de configurer et de maintenir l’état du réseau de manière déclarative. Il fournit une API et une bibliothèque qui permettent aux administrateurs système et aux développeurs de définir l’état souhaité d’une configuration réseau plutôt que de spécifier les commandes pour y parvenir.

Créez le namespace pour l’opérateur NMState:

cat << EOF | oc apply -f -
apiVersion: v1
kind: Namespace
metadata:
  labels:
    kubernetes.io/metadata.name: openshift-nmstate
    name: openshift-nmstate
  name: openshift-nmstate
spec:
  finalizers:
  - kubernetes
EOF

Créez l'OperatorGroup:

cat << EOF | oc apply -f -
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  annotations:
    olm.providedAPIs: NMState.v1.nmstate.io
  name: openshift-nmstate
  namespace: openshift-nmstate
spec:
  targetNamespaces:
  - openshift-nmstate
EOF

Confirmez que l’OperatorGroup est installé dans le namespace:

oc get operatorgroup -n openshift-nmstate
Exemple de sortie
NAME                AGE
openshift-nmstate   5s

S’abonner à l’opérateur nmstate :

cat << EOF| oc apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  labels:
    operators.coreos.com/kubernetes-nmstate-operator.openshift-nmstate: ""
  name: kubernetes-nmstate-operator
  namespace: openshift-nmstate
spec:
  channel: stable
  installPlanApproval: Automatic
  name: kubernetes-nmstate-operator
  source: redhat-operators
  sourceNamespace: openshift-marketplace
EOF

Vérifiez que l’opérateur NMstate est en cours d’exécution. Répétez cette commande jusqu’à ce que vous obteniez le résultat Succeeded :

oc get clusterserviceversion -n openshift-nmstate  -o custom-columns=Name:.metadata.name,Phase:.status.phase -w

L’option -w (wait), qui permet d’attendre les différentes sorties de le commande sans avoir à la rafraichir.

Exemple de sortie
Name                                              Phase
kubernetes-nmstate-operator.4.16.0-202502111405   Succeeded

Attendez que la phase passe en Succeeded, puis appuyez sur CTRL + C pour revenir au prompt.

Créer une instance de l’opérateur nmstate :

cat << EOF | oc apply -f -
apiVersion: nmstate.io/v1
kind: NMState
metadata:
  name: nmstate
EOF

Confirmez que le déploiement de l’opérateur nmstate est réussi :

oc get clusterserviceversion -n openshift-nmstate \
 -o custom-columns=Name:.metadata.name,Phase:.status.phase
Exemple de sortie
Name                                              Phase
kubernetes-nmstate-operator.4.16.0-202502111405   Succeeded

L’opérateur MetalLB

MetalLB est une solution de Load Balancer pour les clusters Kubernetes qui s’exécutent dans des environnements où les services de type LoadBalancer ne sont pas disponibles nativement (comme dans les installations bare-metal). MetalLB permet ainsi à vos applications Kubernetes d’être accessibles depuis l’extérieur du cluster avec une adresse IP dédiée.

Créez le namespace pour l’opérateur MetalLB:

cat << EOF | oc apply -f -
apiVersion: v1
kind: Namespace
metadata:
  name: metallb-system
EOF

Créez l'OperatorGroup:

cat << EOF | oc apply -f -
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: metallb-operator
  namespace: metallb-system
EOF

Confirmez que l’OperatorGroup est installé dans le namespace :

oc get operatorgroup -n metallb-system

Abonnez-vous à l’opérateur metallb :

cat << EOF| oc apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: metallb-operator-sub
  namespace: metallb-system
spec:
  channel: stable
  name: metallb-operator
  source: redhat-operators
  sourceNamespace: openshift-marketplace
EOF

Confirmez que le plan d’installation metallb se trouve dans l’espace de noms :

oc get installplan -n metallb-system -w

Confirmez que l’opérateur metallb est installé :

oc get clusterserviceversion -n metallb-system \
 -o custom-columns=Name:.metadata.name,Phase:.status.phase

Répétez la requête jusqu’à ce que la phase soit réussie ou utiliser la commande avec l’option -w.

Créez une instance unique d’une ressource metallb :

cat << EOF | oc apply -f -
apiVersion: metallb.io/v1beta1
kind: MetalLB
metadata:
  name: metallb
  namespace: metallb-system
spec:
  nodeSelector:
    node-role.kubernetes.io/worker: ""
EOF

Vérifiez que le déploiement du contrôleur metallb est en cours d’exécution :

oc get deployment -n metallb-system controller

Répétez la commande (ou utilisez l’option -w) jusqu’à ce que AVAILABLE soit égal à 1

Les speakers de MetalLB sont responsables de l’annonce des adresses IP attribuées aux services LoadBalancer à travers le réseau. Les speakers fonctionnent sous forme de DaemonSet dans Kubernetes, ce qui signifie qu’une instance est exécutée sur chaque nœud du cluster. Vérifiez que le démon défini pour le speaker est en cours d’exécution :

oc get daemonset -n metallb-system speaker
Exemple de sortie
NAME      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                                            AGE
speaker   3         3         3       3            3           kubernetes.io/os=linux,node-role.kubernetes.io/worker=   32s

L’opérateur Cert-Manager

Cert Manager est un outil de gestion de certificats TLS/SSL pour Kubernetes. Il facilite l’obtention, le renouvellement et l’utilisation des certificats cryptographiques dans les environnements Kubernetes. Cert Manager est devenu un composant essentiel dans de nombreux déploiements Kubernetes pour gérer de manière fiable et automatisée la sécurité TLS des applications.

Créez le namespace pour l’opérateur cert-manager-operator:

cat << EOF | oc apply -f -
apiVersion: v1
kind: Namespace
metadata:
    name: cert-manager-operator
    labels:
      pod-security.kubernetes.io/enforce: privileged
      security.openshift.io/scc.podSecurityLabelSync: "false"
EOF

Créez l'OperatorGroup:

cat << EOF | oc apply -f -
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: cert-manager-operator
  namespace: cert-manager-operator
spec:
  targetNamespaces:
  - cert-manager-operator
  upgradeStrategy: Default
EOF

Confirmez que l’OperatorGroup est installé dans le namespace :

oc get operatorgroup -n cert-manager-operator
Exemple de sortie
NAME                    AGE
cert-manager-operator   7s

Abonnez-vous à l’opérateur cert-manager :

cat << EOF | oc apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  labels:
    operators.coreos.com/openshift-cert-manager-operator.cert-manager-operator: ""
  name: openshift-cert-manager-operator
  namespace: cert-manager-operator
spec:
  channel: stable-v1
  installPlanApproval: Automatic
  name: openshift-cert-manager-operator
  source: redhat-operators
  sourceNamespace: openshift-marketplace
EOF

Confirmez que le plan d’installation cert-manager se trouve dans le namespace :

oc get installplan -n cert-manager-operator -w
Exemple de sortie
NAME            CSV                             APPROVAL    APPROVED
install-64885   cert-manager-operator.v1.15.0   Automatic   true

Confirmez que l’opérateur cert-manager est installé :

oc get clusterserviceversion -n cert-manager-operator \
 -o custom-columns=Name:.metadata.name,Phase:.status.phase
Exemple de sortie
Name                            Phase
cert-manager-operator.v1.15.0   Succeeded

Vérifiez que les pods cert-manager sont opérationnels en entrant la commande suivante :

oc get pods -n cert-manager

Répétez la commande (ou utilisez l’option -w) jusqu’à ce que tous les modules affichent READY 1/1

Exemple de sortie
NAME                                      READY   STATUS    RESTARTS   AGE
cert-manager-54b4497999-9tzsr             1/1     Running   0          36m
cert-manager-cainjector-7459fbc5c-l4ggd   1/1     Running   0          37m
cert-manager-webhook-858d54b79d-l5qgd     1/1     Running   0          37m

Les 3 opérateurs requis pour l’installation d’Openstack sont maintenant installés et configurés.