从集群外部访问我的应用程序?

问题描述 投票:0回答:1

嗨,我正在学习 Helm 和 Kubernetes。我陷入困境,无法从集群外部访问我的应用程序。 我正在使用 minikube v1.32.0 和 docker 的驱动程序。

我尝试使用负载均衡器、节点端口、隧道、服务。每次我收到 404 或连接超时。

这是我的应用程序的图表:

# Source: app-chart/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: release-name-app-chart
  labels:
    helm.sh/chart: app-chart-0.1.0
    app.kubernetes.io/name: app-chart
    app.kubernetes.io/instance: release-name
    app.kubernetes.io/version: "1.16.0"
    app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
---
# Source: app-chart/templates/service.yaml
kind: Service
apiVersion: v1
metadata:
  name: app-service
spec:
  allocateLoadBalancerNodePorts: false
  selector:
    app: helmapp
  ports:
    - protocol: "TCP"
      # Port accessible inside cluster
      port: 8080
      # Port to forward to inside the pod
      targetPort: 8080
  type: LoadBalancer

我的部署:

# Source: app-chart/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: release-name-app-chart
  labels:
    helm.sh/chart: app-chart-0.1.0
    app.kubernetes.io/name: app-chart
    app.kubernetes.io/instance: release-name
    app.kubernetes.io/version: "1.16.0"
    app.kubernetes.io/managed-by: Helm
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: app-chart
      app.kubernetes.io/instance: release-name
      app: helmapp
  template:
    metadata:
      labels:
        helm.sh/chart: app-chart-0.1.0
        app.kubernetes.io/name: app-chart
        app.kubernetes.io/instance: release-name
        app.kubernetes.io/version: "1.16.0"
        app.kubernetes.io/managed-by: Helm
        app: helmapp
    spec:
      serviceAccountName: release-name-app-chart
      securityContext:
        {}
      containers:
        - image: "myrepo/helm-app:latest"
          name: app-chart
          ports:
            - containerPort: 8080
              protocol: TCP
          resources:
            {}

我的入口:

# Source: app-chart/templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:
  name: "release-name-app-chart-test-connection"
  labels:
    helm.sh/chart: app-chart-0.1.0
    app.kubernetes.io/name: app-chart
    app.kubernetes.io/instance: release-name
    app.kubernetes.io/version: "1.16.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    "helm.sh/hook": test
spec:
  containers:
    - name: wget
      image: busybox
      command: ['wget']
      args: ['release-name-app-chart:8080']
  restartPolicy: Never

我的应用程序是一个简单的 SpringBoot 项目,其端点返回代码 200。

    @GetMapping("/health")
    public ResponseEntity<String> healthCheck() {
        return ResponseEntity.ok("OK");
    }


spring kubernetes kubernetes-helm minikube
1个回答
0
投票

Minikube 需要使用

minikube tunnel
来颁发 IP,允许您从集群外部访问服务。

在单独的终端窗口中运行该程序后,您应该会找到分配给您的服务的 IP,当发生这种情况时,您可以使用

localhost:{port}/{path}
访问您的服务

© www.soinside.com 2019 - 2024. All rights reserved.