Cas 1 :
Supposons qu'il n'y ait pas de nodPort ou de port, maintenant vous voulez exécuter votre application et l'exposer à l'extérieur, ce dont vous aurez besoin :
- Un contrôleur d'entrée qui utilisera un servicePort pour rediriger vers le service souhaité en fonction du routage.
- Un service IP de cluster avec une cible définie pour votre port d'application (également appelé targetPort).
- Un port réseau qui identifie l'application ou le service fonctionnant sur l'ordinateur (en d'autres termes, le port d'application).
Ainsi, pour accéder à l'extérieur, nous avons trouvé trois ports nécessaires.
- servicePort (contrôleur d'entrée)
- targetPort (Service Ip de cluster)
- networkPort (port d'application)
pour que tout fonctionne correctement : servicePort === targetPort === networkPort
Cas 2 : Supposons maintenant qu'un service communique avec un autre service dans notre cluster, ou supposons qu'un service reçoive une requête de l'extérieur et qu'il émette un événement qui déclenche un autre service à l'intérieur de notre cluster.
Supposons que le service X soit exposé à l'extérieur en utilisant le service nodePort. Après avoir reçu une requête, le service X souhaite communiquer avec le service Y.
Le service Y nécessite les ports suivants
- Un port ClusterIP, par lequel le service X transmettra la demande.
- Un port cible ClusterIP par lequel le service Y déterminera dans quel port l'application s'exécute.
- Un port d'application
port === quelconque
targetPort === port d'application
Service interne X :
app.post('/posts/create', async (req, res) => {
const id = randomBytes(4).toString('hex');
const { title } = req.body;
posts[id] = {
id,
title
};
await axios.post('http://event-bus-srv:4010/events', {
type: 'PostCreated',
data: {
id,
title
}
});
res.status(201).send(posts[id]);
});
Configuration et intérieur du service Y
apiVersion: v1
kind: Service
metadata:
name: event-bus-srv
spec:
selector:
app: event-bus
type: ClusterIP
ports:
- name: event-bus
protocol: TCP
port: 4010
targetPort: 4009
app.listen(4009, () => {
console.log('Listening on 4009');
});
0 votes
Vous pouvez vous référer à cette question stackoverflow.com/questions/41963433/