Connexion d'emplacements à IBM Cloud à l'aide de Direct Link
- Types de lieux pris en charge
- Sites et connecteurs compatibles avec Red Hat CoreOS (RHCOS)
- Systèmes d'exploitation hôte pris en charge
- Red Hat CoreOS (RHCOS) et RHEL
Utilisez une connexion IBM Cloud® Direct Link sécurisée pour Satellite Lier les communications entre vos services s'exécutant dans un emplacement IBM Cloud Satellite® et IBM Cloud®.
Dans ce tutoriel, vous configurez votre lien Satellite pour utiliser une connexion Direct Link. Le client de tunnel Link de votre emplacement envoie le trafic via la connexion Direct Link à un relais que vous créez dans votre compte IBM Cloud. Ce relais met en proxy le trafic vers l'adresse IP du serveur de tunnel Link dans le réseau privé IBM Cloud.
Foire aux questions
- Le coût des ressources de calcul de relais est-il inclus dans les coûts du service Satellite ?
- Les ressources IBM Cloud utilisées pour le relais et Satellite sont facturées séparément.
- Y a-t-il des frais supplémentaires pour accéder aux services IBM Cloud via Direct Link?
- Non, aucun frais supplémentaire n'est facturé pour l'accès aux services via Direct Link.
- Pourquoi ai-je besoin de Direct Link?
- Normalement, le trafic sortant de votre emplacement vers les services IBM Cloud peut circuler sur l'Internet public. Lorsque vous utilisez Direct Link, le trafic sortant de votre emplacement passe par Direct Link, au lieu d'utiliser l'Internet public.
- Mon organisation désactive l'accès à Internet par conception. Puis-je créer et gérer des emplacements et des hôtes connectés à l'emplacement avec Direct Link?
- Si vous disposez de Direct Link, vous pouvez l'utiliser pour les services Satellite. Avec Direct Link, vous pouvez créer des emplacements et connecter des hôtes sans accès à l'Internet public.
- Puis-je utiliser des hôtes RHEL pour configurer mon Direct Link?
- Non. Vous devez disposer d'un emplacement compatible RHCOS et utiliser des hôtes RHCOS dans votre emplacement pour utiliser Direct Link.
- Puis-je rediriger tout le trafic vers IBM Cloud via Direct Link au lieu d'Internet?
- Actuellement, tous les services ne prennent pas en charge Direct Link. Par conséquent, en fonction des services que vous utilisez, il se peut que l'ensemble du trafic ne puisse pas utiliser Direct Link.
- Quels services IBM Cloud puis-je accéder via Direct Link pour éviter d'y accéder via Internet?
- Après avoir suivi ces instructions, Satellite et OpenShift sur Satellite fonctionneront sur Direct Link. D'autres services déployés sur un site Satellite peuvent avoir des fonctions qui nécessitent un accès public à l'internet. Il est recommandé de consulter la documentation de chaque service exécuté dans un emplacement afin de vérifier ses exigences en matière de connectivité.
- Si j'ai deux emplacements qui utilisent Direct Link, puis-je les utiliser pour que Direct Link puisse basculer d'un emplacement à l'autre?
- Cette fonctionnalité n'est pas encore disponible.
- Comment dimensionner la capacité de Direct Link pour mon site?
- Il n'y a pas d'exigences de dimensionnement supplémentaires pour l'utilisation de Direct Link. Ainsi, vous pouvez dimensionner votre emplacement comme un emplacement normal, c'est-à-dire en fonction des services que vous utiliserez.
- Puis-je avoir un déploiement en un clic de tout ce qui est nécessaire pour activer Direct Link afin d'éviter les erreurs manuelles?
- Actuellement, un déploiement en un clic pour Direct Link n'est pas disponible. Il peut être disponible ultérieurement.
Scénario d'utilisation cible
Les clients qui utilisent actuellement Direct Link entre IBM et des clouds publics sur site ou autres, peuvent continuer à l'utiliser pour le lien Satellite. Cela permet aux clients de:
- Accès aux services sur IBM Cloud à partir d'un emplacement Satellite sur Direct Link; exemples: sauvegardes dans IBM Cloud® Object Storage, envoi de métriques à IBM Cloud Monitoring, suivi des événements dans IBM Cloud Activity Tracker
- Accédez aux services s'exécutant dans un emplacement Satellite à partir de IBM Cloud.
- Accédez aux services de cloud public en dehors de IBM Cloud.
Vous pouvez y accéder à l'aide des adresses de noeuds finaux Satellite créées pour acheminer le trafic via Direct Link à la place d'Internet.
Cela empêche les données sensibles du client de passer par l'Internet public, telles que la journalisation, les sauvegardes ou les données entre les services intégrés dans le paysage du cloud hybride. Cela permet également d'optimiser les frais d'entrée et de sortie.
Présentation
Par défaut, deux composants de liaison Satellite, le serveur de tunnel et le connecteur, le trafic réseau proxy entre IBM Cloud et les ressources de votre emplacement Satellite via une connexion TLS sécurisée. Ce document décrit le cas d'utilisation d'une connexion TLS via Direct Link.
Cette configuration utilise le noeud final de service de cloud privé du serveur de tunnel pour acheminer le trafic sur le réseau privé IBM Cloud (166.9.0.0/8
, voir Réseau de services.
Toutefois, la communication avec le noeud final de service de cloud privé du serveur de tunnel doit passer par 166.9.X.X/16 Plage d'adresses IP sur le réseau privé IBM Cloud, qui n'est pas routable à partir de IBM Cloud Direct Link.
Pour activer l'accès à la plage 166.9.X.X/16
, créez un relais dans votre compte IBM Cloud, ce qui inversera le trafic entrant du proxy vers le noeud final de service de cloud privé du serveur de tunnel. Par défaut, le relais Ingress
possède une adresse IP dans la plage d'adresses IP 10.X.X.X/8
interne, qui est accessible via une connexion Direct Link.
Le diagramme suivant illustre le flux du trafic.
- Le trafic réseau provenant de votre emplacement, par exemple une demande provenant d'un cluster IBM Cloud Satellite vers un service IBM Cloud, est acheminé via le service de liaison via Direct Link vers le service Relay Private Ingress, qui possède une adresse routable Direct Link.
- Le relais lance une nouvelle session pour transmettre la demande au noeud final de service de cloud privé du serveur de tunnel, qui se termine par une adresse IP comprise dans la plage
166.9.X.X/16
(adresse privée de liaison).
Objectifs
Vous pouvez créer des emplacements activés pour Red Hat CoreOS sans accéder à l'Internet public. Tout le trafic est géré par Direct Link et reste interne.
Les étapes de niveau supérieur sont les suivantes:
- Créez un emplacement Red Hat CoreOS activé Satellite avec votre compte IBM Cloud qui termine votre Direct Link.
- Créez un relais, qui est un proxy inverse prenant en charge http / https et websocket sécurisé.
- Provisionner Red Hat CoreOS les hôtes. Personnalisez les hôtes à l'aide du script ignition qui sont téléchargés en tant que script d'association pour l'emplacement créé à l'étape 1.
Prérequis
- Vous devez disposer d'un emplacement Red Hat CoreOS activé Satellite. Si vous n'en avez pas déjà, suivez les instructions de la rubrique Création d'un emplacement Red Hat CoreOS activé Satellite pour le créer.
- Direct Link est disponible entre l'emplacement cible Satellite et les clusters VPC ou classiques spécifiques à IBM Cloud.
- Vérifiez que votre connexion IBM Cloud Direct Link peut accéder à la plage d'adresses IP
10.X.X.X/8
. Passez en revue la conception du réseau pour éviter les conflits d'adresses IP entre deux extrémités de Direct Link. - Installez l'interface de ligne de commande IBM Cloud et les plug-in et installez l'interface de ligne de commande Kubernetes(
kubectl
). - Vérifiez que votre compte IBM Cloud est activé pour la fonction VRF (Virtual Router Function) afin d'utiliser les noeuds finaux de service.
- Assurez-vous que vous disposez des politiques d'accès suivantes. Pour plus d'informations, voir Vérification des droits utilisateur.
- Administrateur IBM Cloud Rôle d'accès à la plateforme IAM pour IBM Cloud Kubernetes Service
- Administrateur IBM Cloud Rôle d'accès à la plateforme IAM pour IBM Cloud Container Registry
- Auteur ou Gestionnaire IBM Cloud Rôle d'accès au service IAM pour IBM Cloud Kubernetes Service
- Administrateur IBM Cloud Rôle d'accès à la plateforme IAM pour IBM Cloud Container Registry
- Administrateur IBM Cloud Rôle d'accès à la plateforme IAM pour IBM Cloud Satellite
- Gestionnaire IBM Cloud Rôle d'accès au service IAM pour IBM Cloud Satellite
- Administrateur IBM Cloud Rôle d'accès à la plateforme IAM pour Object Storage
- Auteur ou Gestionnaire IBM Cloud Rôle d'accès à la plateforme IAM pour IBM Cloud Object Storage
- Administrateur IBM Cloud Rôle d'accès à la plateforme IAM pour IBM Cloud Certificate Manager
- Auteur ou Gestionnaire IBM Cloud Rôle d'accès à la plateforme IAM pour IBM Cloud Certificate Manager
- Afficheur IBM Cloud Rôle d'accès à la plateforme IAM pour le groupe de ressources que vous prévoyez d'utiliser avec Satellite
- Gestionnaire IBM Cloud Rôle d'accès au service IAM pour IBM Cloud Schematics
- Mettez spécifiquement à disposition un cluster Kubernetes et déployez-y le proxy inverse NGINX pour le réacheminement vers les noeuds finaux Direct Link.
Création d'un emplacement Red Hat CoreOS activé Satellite
Vous pouvez ignorer cette étape si vous disposez déjà d'un emplacement Red Hat CoreOS activé Satellite.
Connectez-vous à votre compte IBM Cloud qui possède Direct Link et créez un emplacement Red Hat CoreOS activé Satellite. Pour plus d'informations, voir Création d'un emplacement Satellite.
Création d'un relais
Le relais est un proxy inverse http / https qui prend en charge les connexions Websocket sécurisées. Il peut s'exécuter sur une instance de serveur virtuel, Red Hat OpenShift ou IBM Cloud Kubernetes Service en tant que version classique ou VPC. La procédure suivante illustre un exemple de déploiement de proxy inverse NGINX sur un VPC privé uniquement Red Hat OpenShift (sur des noeuds privés VPC).
Une exigence essentielle consiste à avoir un nom valide pouvant être affecté à l'ingress privé du cluster (Relay Ingress) et un certificat valide sur IBM Cloud. Sur les clusters IBM Cloud, le VPC Red Hat OpenShift sur les noeuds privés est fourni avec le nom d'hôte et le certificat privés par défaut. Vous pouvez les utiliser ou apporter votre nom d'hôte personnalisé et votre certificat. Cet exemple utilise le nom d'hôte privé et les certificats par défaut.
Remarques sur les clusters de VPC pour ce scénario:
- Zone: toute zone VPC compatible avec plusieurs zones
- Version de noeud worker: toute version d'infrastructure VPC
- Version : 4.x.x
- Pool de noeuds worker: au moins 2 noeuds worker
- Subnets (sous-réseaux): Inclure les sous-réseaux IP de l'équilibreur de charge d'entrée si les plages par défaut sont en conflit avec les valeurs
--pod-subnet
et--service-subnet
du cluster Red Hat OpenShift sur Satellite ou le réseau CIDR où les hôtes Satellite ou Red Hat OpenShift sont déployés sur site. - Noeuds finaux de service de cloud: ne spécifiez pas l'option
--disable-public-service-endpoint
si vous souhaitez des noeuds finaux publics et privés. - Répartissez le pool de noeuds worker par défaut entre les zones pour augmenter la disponibilité de votre cluster classique ou VPC.
- Assurez-vous qu'il existe au moins 2 noeuds worker dans chaque zone, de sorte que les équilibreurs de charge d'application privés que vous configurez dans les étapes suivantes soient hautement disponibles et puissent recevoir correctement les mises à jour de version.
Dans l'exemple suivant, un cluster VPC privé uniquement et un contrôleur Ingress privé sont créés par défaut. Toutefois, vous pouvez également utiliser un cluster Red Hat OpenShift avec un noeud final de service de cloud public activé, mais dans ce cas, votre cluster est créé uniquement avec un contrôleur Ingress public par défaut. Si vous souhaitez configurer votre relais en utilisant un cluster avec un noeud final de service public, vous devez d'abord activer le contrôleur Ingress privé et l'enregistrer avec un sous-domaine et un certificat en suivant les étapes de la rubrique Configuration d'Ingress.
-
Créez un cluster Red Hat OpenShift privé uniquement sur VPC. Pour plus d'informations, voir Création de clusters de VPC.
Il existe de nombreuses façons d'exposer des applications dans un cluster Red Hat OpenShift dans un VPC. Dans cet exemple, l'application sera exposée en privé avec des noeuds finaux privés uniquement, ce qui est le cas d'utilisation le plus courant pour les clients Direct Link. Les clusters Red Hat OpenShift qui sont exposés en privé avec des noeuds finaux privés sont fournis uniquement avec le nom privé et le certificat par défaut. Ils seront utilisés dans cet exemple pour exposer les pods de proxy inverse NGINX. Vous pouvez utiliser les valeurs par défaut ou apporter votre nom d'hôte et votre certificat personnalisés. Pour plus de détails, voir Exposition privée d'applications dans des clusters de VPC avec un noeud final de service de cloud privé uniquement.
-
Créez une instance de Secret Manager et enregistrez-la dans le cluster Red Hat OpenShift créé à l'étape précédente. Pour plus d'informations, voir Création d'une instance de service Secrets Manager.
-
Obtenez les détails d'Ingress à partir de Direct Link.
ibmcloud oc cluster get --cluster CLUSTER_NAME_OR_ID | grep Ingress
Exemple de sortie :
Ingress Subdomain: mycluster-i000.us-south.containers.appdomain.cloud Ingress Secret: mycluster-i000
Dans ce scénario, si vous exécutez la commande
nslookup
sur le sous-domaine Ingress, elle se résout en adresse IP privée du service IBM (10.0.0.0/8
). L'ajout de routes pour rendre l'adresse IP Ingress (10.0.0.0/8
) accessible à partir du client sur site n'est pas couvert dans ce document. Vous êtes chargé de faciliter le routage entre le relais sur site et le relais Ingress sur IBM Cloud. -
Obtenez le secret du CRN.
ibmcloud oc ingress secret get -c CLUSTER --name SECRET_NAME --namespace openshift-ingress
-
Créez un espace de nom pour le proxy inverse NGINX.
kubectl create ns dl-reverse-proxy
-
Copiez le secret TLS par défaut depuis
openshift-ingress
dans le projet où NGINX va être déployé.ibmcloud oc ingress secret create --cluster CLUSTER_NAME_OR_ID --cert-crn CRN --name SECRET_NAME --namespace dl-reverse-proxy
-
Copiez le contenu du fichier de ressources Ingress suivant dans votre répertoire local. Remplacez
VALUE_FROM_INGRESS_SUBDOMAIN
etVALUE_FROM_INGRESS_SECRET
par vos propres valeurs.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: dl-ingress-resource annotations: kubernetes.io/ingress.class: "public-iks-k8s-nginx" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" spec: tls: - hosts: - satellite-dl.VALUE_FROM_INGRESS_SUBDOMAIN secretName: VALUE_FROM_INGRESS_SECRET rules: - host: satellite-dl.VALUE_FROM_INGRESS_SUBDOMAIN http: paths: - path: / pathType: Prefix backend: service: name: nginxsvc port: number: 80
-
Créez l'Ingress.
oc apply -f myingressresource.yaml -n <dl-reverse-proxy>
-
Obtenez le nom d'hôte Ingress interne du serveur de tunnel Direct Link en exécutant la commande suivante.
ibmcloud sat endpoint ls --location LOCATION_ID
-
Dans la sortie, notez le noeud final Location. Remplacez
c-01
,c-02
ouc-03
pard-01-ws
,d-02-ws
oud-03-ws
et retirez le port. Par exemple,c-01.private.us-south.link.satellite.cloud.ibm.com:40934
devientd-01-ws.private.us-south.link.satellite.cloud.ibm.com
. Cette valeur peut être utilisée comme valeur pourproxy_pass https
dans le fichier ConfigMap. -
Copiez le contenu du fichier ConfigMap NGINX dans votre répertoire local. Cette configuration applique le proxy inverse ws-reverse ou le proxy inverse https au noeud final du serveur de tunnel Direct Link. Remplacez
VALUE_FROM_INGRESS_SUBDOMAIN
etVALUE_FOR_PROXY_PASS
par vos propres valeurs.apiVersion: v1 kind: ConfigMap metadata: name: confnginx data: nginx.conf: | user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; events { worker_connections 4096; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; server_names_hash_bucket_size 128; server { listen 80; server_name VALUE_FROM_INGRESS_SUBDOMAIN; proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180; location /ws { proxy_pass https://VALUE_FOR_PROXY_PASS; proxy_ssl_server_name on; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location / { proxy_pass https://VALUE_FOR_PROXY_PASS; } } }
-
Copiez le fichier de déploiement NGINX.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80 volumeMounts: - name: nginx-config mountPath: /etc/nginx/nginx.conf subPath: nginx.conf volumes: - name: nginx-config configMap: name: confnginx --- apiVersion: v1 kind: Service metadata: name: nginxsvc labels: app: nginx spec: type: NodePort ports: - port: 80 protocol: TCP name: http - port: 443 protocol: TCP name: https - port: 8080 protocol: TCP name: tcp selector: app: nginx
-
Créez l'objet ConfigMap de NGINX (
dl-reverse-proxy
).oc apply -f confnginx.yaml -n dl-reverse-proxy
-
Définissez le profil
scc
approprié et créez NGINX (dl-reverse-proxy
).oc adm policy add-scc-to-user anyuid system:serviceaccount:dl-reverse-proxy:default oc apply -f nginx-app.yaml -n dl-reverse-proxy
-
Vérifiez que NGINX est en cours d'exécution en répertoriant les pods.
oc get pods
NAME READY STATUS RESTARTS AGE nginx-757fbc9f85-gv2p6 1/1 Running 0 53s nginx-757fbc9f85-xvmrj 1/1 Running 0 53s
-
Consultez les journaux.
oc logs -f nginx-757fbc9f85-gv2p6
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up
-
Vérifiez Ingress.
oc get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE dl-ingress-resource <none> mysatellite-dl.myname-cluster10-22bfd3cd491bdeb5a0f661fb1e2b0c44-0000.us-south.containers.appdomain.cloud router-default.myname-cluster10-22bfd3cd491bdeb5a0f661fb1e2b0c44-0000.us-south.containers.appdomain.cloud 80, 443 19m
-
Se connecter à l' URL du proxy inverse.
curl -k https://mysatellite-dl.myname-cluster10-22bfd3cd491bdeb5a0f661fb1e2b0c44-0000.us-south.containers.appdomain.cloud
{"status":"UP"}
Rediriger le trafic vers l'utilisation du Direct Link Chemin d'accès
Maintenant que le relais est prêt à acheminer le trafic entrant vers le serveur tunnel Ingress interne, vous pouvez configurer votre hôte de localisation ou votre connecteur pour rediriger son trafic via le relais. Cela garantit que tout le trafic restera sur le chemin Direct Link dans votre réseau privé et qu'aucun trafic n'utilisera l'internet public.
Redirigez le trafic vers votre agent Connector ou votre hôte Location en suivant les instructions ci-dessous.
Utilisation d'un agent connecteurDocker ou Windows)
Suivez les instructions de la section Configuration d'un hôte d'entrée du serveur de tunnel pour votre agent Satellite Connector, mais définissez le
paramètre 'SATELLITE_CONNECTOR_DIRECT_LINK_INGRESS
sur l'hôte d'entrée du relais créé à l'étape 2 (mysatellite-dl.myname-cluster10-22bfd3cd491bdeb5a0f661fb1e2b0c44-0000.us-south.containers.appdomain.cloud
) au lieu
de l'hôte d'entrée interne lui-même. Exemple :
-
Sur une plateforme de conteneurs, dans votre fichier "
env.txt
.SATELLITE_CONNECTOR_DIRECT_LINK_INGRESS=mysatellite-dl.myname-cluster10-22bfd3cd491bdeb5a0f661fb1e2b0c44-0000.us-south.
-
Sous Windows, dans votre fichier "
config.json
."SATELLITE_CONNECTOR_DIRECT_LINK_INGRESS": "mysatellite-dl.myname-cluster10-22bfd3cd491bdeb5a0f661fb1e2b0c44-0000.us-south.containers.appdomain.cloud"
Utilisation d'un hôte de localisationCoreOS ou RHEL)
-
Exécutez la commande CLI suivante pour télécharger le script d'attachement d'hôte pour votre emplacement.
ibmcloud sat host attach --location LOCATION --operating-system SYSTEM --host-link-agent-endpoint ENDPOINT
--location LOCATION
- Nom ou ID de l'emplacement Satellite.
--operating-system SYSTEM
- Le système d'exploitation des hôtes que vous souhaitez attacher à votre emplacement (RHEL ou RHCOS).
--host-link-agent-endpoint ENDPOINT
- Noeud final utilisé par l'agent de liaison pour se connecter au serveur de tunnel de liaison. Dans ce cas, l'hôte d'entrée relais créé à l'étape 2 (
mysatellite-dl.myname-cluster10-22bfd3cd491bdeb5a0f661fb1e2b0c44-0000.us-south.containers.appdomain.cloud
).
-
Attachez l'agent hôte en suivant les instructions applicables à votre système d'exploitation hôte dans Attacher des hôtes sur site à votre emplacement.