helm chart не будет выставлять IP-адрес для ping localhost: port - PullRequest
0 голосов
/ 13 июня 2018

Я использую Minikube на MacOS и хочу указать IP-адрес и порт для запуска этого примера диаграммы управления - https://docs.bitnami.com/kubernetes/how-to/create-your-first-helm-chart/

Я попытался пропинговать localhost: 58064, но он не подключился.

helm install --dry-run --debug ./mychart --set service.internalPort=8080
[debug] Created tunnel using local port: '58064'

[debug] SERVER: "127.0.0.1:58064"

[debug] Original chart version: ""
[debug] CHART PATH: /Users/me/Desktop/HelmTest/mychart

NAME:   messy-penguin
REVISION: 1
RELEASED: Tue Jun 12 17:56:41 2018
CHART: mychart-0.1.0
USER-SUPPLIED VALUES:
service:
  internalPort: 8080

COMPUTED VALUES:
affinity: {}
image:
  pullPolicy: IfNotPresent
  repository: nginx
  tag: stable
ingress:
  annotations: {}
  enabled: false
  hosts:
  - chart-example.local
  path: /
  tls: []
nodeSelector: {}
replicaCount: 1
resources: {}
service:
  internalPort: 8080
  port: 80
  type: ClusterIP
tolerations: []

HOOKS:
MANIFEST:

---
# Source: mychart/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: messy-penguin-mychart
  labels:
    app: mychart
    chart: mychart-0.1.0
    release: messy-penguin
    heritage: Tiller
spec:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app: mychart
    release: messy-penguin
---
# Source: mychart/templates/deployment.yaml
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: messy-penguin-mychart
  labels:
    app: mychart
    chart: mychart-0.1.0
    release: messy-penguin
    heritage: Tiller
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mychart
      release: messy-penguin
  template:
    metadata:
      labels:
        app: mychart
        release: messy-penguin
    spec:
      containers:
        - name: mychart
          image: "nginx:stable"
          imagePullPolicy: IfNotPresent
          ports:
            - name: http
              containerPort: 80
              protocol: TCP
          livenessProbe:
            httpGet:
              path: /
              port: http
          readinessProbe:
            httpGet:
              path: /
              port: http
          resources:
            {}
MacBook-Pro:~/Desktop/HelmTest quantum-fusion$ curl 127.0.0.1:58064
curl: (7) Failed to connect to 127.0.0.1 port 58064: Connection refused

1 Ответ

0 голосов
/ 13 июня 2018

Поскольку minikube относится к семейству докер-машин, при запуске minikube ip будет выведен IP-адрес виртуальной машины, а означает, что - это IP-адрес, по которому вы должны попытаться связаться с кластером,не localhost.

Более того, [debug] Created tunnel using local port: '58064' - это helm , создающий туннель для встроенного модуля tiller внутри вашего кластера, и это совсем не то, что вы должны использовать вообще.Именно поэтому он имеет префикс [debug]: потому что он полезен только для экстремальных обстоятельств.

Наконец, вам нужно будет использовать kubectl port-forward, чтобы добраться до развернутого модуля Pod, поскольку Service использует ClusterIP, что, как следует из его названия, действует только внутри кластера.Вы также можете создать второй Service из type: NodePort, и он выделит порт TCP / IP на IP-адресе виртуальной машины, который перенаправляет на port: из Service.Вы можете быть в состоянии проинформировать свою таблицу Хелма, чтобы сделать это для вас, в зависимости от того, выставил ли автор такого рода решение через values.yaml.

Другая "звездочка" длячто port-forward против Service части type: NodePort состоит в том, что я вижу в выводе упоминание ресурса Ingress для chart-example.local, но это прагматично имеет смысл, только если у вас есть работающий "контроллер входа", ноесли вы это сделаете, то уже имеет порт TCP / IP, через который вы должны связаться с вашим кластером, просто гарантируя, что вы предоставите соединение с curl -H "host: chart-example.local" http://$(minikube ip):${the_ingress_port}, чтобы входной контроллер мог направить запрос кправильно Ingress.

...