web-dev-qa-db-fra.com

Minikube expose MySQL exécuté sur le serveur localhost

La version v0.17.1 de minikube est en cours d'exécution sur ma machine. Je souhaite simuler l'environnement que j'aurai dans AWS, où mon instance MySQL sera en dehors de mon cluster Kubernetes. 

En gros, comment puis-je exposer mon instance MySQL locale s'exécutant sur ma machine au cluster Kubernetes exécuté via minikube?

13
cgf

Kubernetes vous permet de créer un service sans sélecteur, et le cluster ne créera pas de noeud final associé pour ce service. Cette fonctionnalité est généralement utilisée pour créer un proxy avec un composant hérité ou un composant externe.

  1. Créer un service sans sélecteur

    apiVersion: v1
    kind: Service
    metadata:
        name: my-service
    spec:
        ports:
            - protocol: TCP
              port: 1443
              targetPort: <YOUR_MYSQL_PORT>
    
  2. Créer un objet Endpoint relatif

    apiVersion: v1
    kind: Endpoints
    metadata:
        name: my-service
    subsets:
        - addresses:
            - ip: <YOUR_MYSQL_ADDR>
          ports:
            - port: <YOUR_MYSQL_PORT>
    
  3. Obtenir le service IP

    $ kubectl get svc my-service
    NAME         CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
    my-service   <SERVICE_IP>   <none>        1443/TCP    18m
    
  4. Accédez à votre MYSQL à partir du service <SERVICE_IP>:1443 ou my-service:1443

8
Crazykev

Si vous souhaitez mapper un port local sur un cluster Minikube, vous pouvez utiliser kubectl port-forward comme indiqué dans la documentation Kubernetes .

Voici un exemple de mappage 127.0.0.1:6379 avec un service Redis sur minikube ip sur le même port.

kubectl port-forward svc/redis-master 6379:6379
0
a.barbieri