Avant de configurer OpenShift et NCP, notez les informations suivantes.

  • Un espace ne doit pas comporter plus de 11 étiquettes et un espace de noms ne doit pas comporter plus de 12 étiquettes.

  • Les étiquettes ajoutées pour une utilisation interne d'OpenShift, par exemple, une étiquette avec le préfixe openshift.io dans sa clé, seront ignorées par NCP et l'utilisateur ne verra pas les balises correspondantes créées sur les ressources NSX associées. Voici une liste de préfixes d'étiquette utilisés par OpenShift et vous devez éviter d'utiliser une clé d'étiquette commençant par ce qui suit :

        openshift.io
        pod-template
  • Les nœuds devront accéder aux espaces, par exemple, pour les contrôles de santé Kubelet. Vérifiez que l'interface de gestion d'hôte peut accéder au réseau de l'espace.

  • Les capacités NET_ADMIN et NET_RAW de Linux peuvent être exploitées par des personnes mal intentionnées pour compromettre le réseau de l'espace. Vous devez désactiver ces deux capacités de conteneurs non approuvés. Par défaut, avec SCC restreint et anyuid, NET_ADMIN n'est pas accordé. Faites attention aux SCC qui activent NET_ADMIN explicitement ou qui activent l'espace pour s'exécuter en mode privilégié. De plus, pour les conteneurs non approuvés, créez un SCC distinct en fonction, par exemple, de SCC anyuid, avec la capacité NET_RAW supprimée. Pour cela, vous pouvez ajouter NET_RAW à la liste requiredDropCapabilities dans la définition de SCC.

  • Autorisez l'accès racine dans les espaces/conteneurs (pour le test uniquement). Les commandes ci-dessous nécessiteront un accès racine dans tous les espaces du projet oc auquel vous êtes actuellement connecté.

        oc new-project test-project
        oc project test-project
        oc adm policy add-scc-to-user anyuid -z default
  • Configurez (ajoutez) le Registre OpenShift.

        oc login -u system:admin -n default
        oc adm registry --service-account=registry --config=/etc/origin/master/admin.kubeconfig
  • Supprimer le Registre OpenShift

        oc login -u system:admin -n default
        oc delete svc/docker-registry dc/docker-registry
  • Il existe une règle de pare-feu IPtables manquante pour autoriser les demandes DNS dans les conteneurs de pont Docker par défaut au processus dnsmasq sur le nœud. Il doit être ouvert manuellement. Modifiez /etc/sysconfig/iptables et ajoutez les règles suivantes en bas du fichier avant COMMIT :

        -A OS_FIREWALL_ALLOW -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
        -A OS_FIREWALL_ALLOW -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
        COMMIT
  • Redémarrez iptables, docker et origin-node (redémarre kube-proxy et kubelet).

        systemctl restart iptables
        systemctl restart docker
        systemctl restart origin-node
  • Le Registre de Docker interne d'OpenShift doit être autorisé à utiliser non-TLS pour qu'OpenShift fonctionne. Normalement, cela doit être ajouté automatiquement par le programme d'installation d'OpenShift Ansible, mais il semble que cela ne fonctionne pas. Modifiez /etc/sysconfig/docker et ajoutez :

        INSECURE_REGISTRY='--insecure-registry 172.30.0.0/16'
  • Redémarrez Docker.

    systemctl restart docker
  • La prise en charge par NCP des stratégies réseau est la même que celle fournie par Kubernetes et dépend de la version de Kubernetes utilisée par OpenShift.

    • OpenShift 3.9 : les clauses de règle dans la stratégie réseau peuvent contenir au maximum un sélecteur parmi namespaceSelector, podSelector et ipBlock.

  • Le serveur API Kubernetes n'effectue pas de validation d'une spécification de la stratégie réseau. Il est possible de créer une stratégie réseau qui n'est pas valide. NCP rejettera cette stratégie réseau. Si vous mettez à jour la stratégie réseau pour la rendre valide, NCP ne sera toujours pas en mesure de traiter la stratégie réseau. Vous devez supprimer la stratégie réseau et en recréer une avec une spécification valide.

  • Certaines versions de Kubernetes présentent un problème lié à subPath (reportez-vous à la section https://github.com/kubernetes/kubernetes/issues/61076). Si la version d'OpenShift ne contient pas de correctif pour ce problème, la création de l'espace NCP échoue avec l'erreur CreateContainerConfigError : impossible de préparer subPath pour volumeMount. Vous pouvez contourner ce problème en supprimant l'utilisation de subPath dans le fichier YAML de NCP. En particulier, supprimez la ligne contenant subPath: ncp.ini et remplacez la configuration de volumes par les éléments suivants :

        volumes:
          - name: config-volume
            # ConfigMap nsx-ncp-config is expected to supply ncp.ini
            configMap:
              name: nsx-ncp-config
              items:
                - key: ncp.ini
                  path: ncp.ini

    Cette modification a pour effet secondaire de définir en lecture seule tout le répertoire /etc/nsx-ujo. Par conséquent, la connexion avec NSX-T en utilisant un certificat et une clé privée ne fonctionnera pas, car NCP ne pourra pas créer de fichier temporaire sous /etc/nsx-ujo pour déplacer le certificat et la clé privée vers un seul fichier.

  • Si vous exécutez le cluster OpenShift 3.10 ou que vous le mettez à niveau, notez les points suivants :

    • Vous devez spécifier la configuration de groupes de nœuds spécifiques au cluster OpenShift 3.10. La configuration ConfigMap de nœud doit être indiquée dans le fichier d'hôtes d'inventaire.

    • Tous les hôtes définis dans le groupe [nodes] du fichier d'hôtes d'inventaire doivent être attribués à un nom de groupe de nœuds.

    • La mise à niveau du cluster OpenShift à partir d'un manuel Ansible peut entraîner la perte de réseau. Veillez à ajouter le correctif (https://github.com/openshift/openshift-ansible/pull/8016/files#diff-2386e21861da3f95091dbb27d72ca366) sur le référentiel openshift-ansible à supprimer de l'arrêt/la désinstallation de modules Open vSwitch.

  • À partir d'OpenShift 3.10, kube-proxy a été déplacé du service openshift-node vers un DaemonSet. Il n'est plus démarré par défaut. Pour démarrer manuellement kube-proxy (en supposant que le référentiel openshift-ansible a été cloné), procédez comme suit :

    • Accédez au répertoire openshift-ansible et sous [defaults], définissez les éléments suivants :

          library = roles/lib_utils/library/
    • Créez un fichier create_proxy.yaml dans le répertoire des playbooks avec les entrées suivantes :

          - import_playbook: byo/openshift_facts.yml
          - hosts: masters
            run_once: True
            roles:
              - kube_proxy_and_dns
    • Exécutez le playbook :

          ansible-playbook -i hosts playbooks/create_proxy.yaml

      Vous verrez des messages d'erreur indiquant l'échec de certaines opérations. Ces messages peuvent être ignorés. Vous pouvez vérifier le résultat en exécutant la commande oc get po --all-namespaces.