Jenkins, установленный через руль, не выставляется при использовании stati c IP для входа nginx в GKE - PullRequest
0 голосов
/ 12 февраля 2020

Я устанавливаю jenkins на GKE, используя официальный график helm .

Я также устанавливаю вход nginx также через стабильный график helm и после создания stati c IP на GCE следующим образом:

gcloud compute addresses create jenkins-static-ip --global --ip-version IPV4

Я передаю вышеуказанный IP значениям nginx -ingress:

helm upgrade --force --tls --install nginx-ingress stable/nginx-ingress --set rbac.create=true --set controller.service.loadBalancerIP=<jenkins-static-ip>

Я также для доступа к услуге jenkins используется префикс /jenkins.

И входной контроллер, и входной ресурс создаются следующим образом:

kubectl get svc nginx-ingress-controller -n default -o json
{
    "apiVersion": "v1",
    "kind": "Service",
    "metadata": {
        "creationTimestamp": "2020-02-12T09:54:50Z",
        "labels": {
            "app": "nginx-ingress",
            "chart": "nginx-ingress-1.29.6",
            "component": "controller",
            "heritage": "Tiller",
            "release": "nginx-ingress"
        },
        "name": "nginx-ingress-controller",
        "namespace": "default",
        "resourceVersion": "35664441",
        "selfLink": "/api/v1/namespaces/default/services/nginx-ingress-controller",
        "uid": "b6029772-4d7d-11ea-aa7f-42010a79fa0b"
    },
    "spec": {
        "clusterIP": "10.19.150.227",
        "externalTrafficPolicy": "Cluster",
        "loadBalancerIP": "13.579.24.68",
        "ports": [
            {
                "name": "http",
                "nodePort": 30508,
                "port": 80,
                "protocol": "TCP",
                "targetPort": "http"
            },
            {
                "name": "https",
                "nodePort": 32756,
                "port": 443,
                "protocol": "TCP",
                "targetPort": "https"
            }
        ],
        "selector": {
            "app": "nginx-ingress",
            "component": "controller",
            "release": "nginx-ingress"
        },
        "sessionAffinity": "None",
        "type": "LoadBalancer"
    },
    "status": {
        "loadBalancer": {}
    }
}
kubectl get ingress my-jenkins -n jenkins -o yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  creationTimestamp: "2020-02-12T09:54:54Z"
  generation: 1
  labels:
    app.kubernetes.io/component: jenkins-master
    app.kubernetes.io/instance: my-jenkins
    app.kubernetes.io/managed-by: Tiller
    app.kubernetes.io/name: jenkins
    helm.sh/chart: jenkins-1.9.16
  name: my-jenkins
  namespace: jenkins
  resourceVersion: "35664516"
  selfLink: /apis/extensions/v1beta1/namespaces/jenkins/ingresses/my-jenkins
  uid: b8604a30-4d7d-11ea-aa7f-42010a79fa0b
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: my-jenkins
          servicePort: 8080
        path: /jenkins
status:
  loadBalancer: {}

Однако я не могу получить доступ к jenkins по любому из следующих URL:

http://13.579.24.68
https://13.579.24.68
http://13.579.24.68/jenkins
https://13.579.24.68/jenkins

edit : я добавил аннотацию к своему ресурсу ingress, но результат остается то же самое:

▶ k get ingress my-jenkins -n jenkins -o yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  creationTimestamp: "2020-02-12T16:00:40Z"
  generation: 1
  labels:
    app.kubernetes.io/component: jenkins-master
    app.kubernetes.io/instance: my-jenkins
    app.kubernetes.io/managed-by: Tiller
    app.kubernetes.io/name: jenkins
    helm.sh/chart: jenkins-1.9.16
  name: my-jenkins
  namespace: jenkins
  resourceVersion: "35776360"
  selfLink: /apis/extensions/v1beta1/namespaces/jenkins/ingresses/my-jenkins
  uid: d1405c90-4db0-11ea-aa7f-42010a79fa0b
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: my-jenkins
          servicePort: 8080
        path: /jenkins
status:
  loadBalancer: {}

Есть идеи, почему это происходит?

1 Ответ

1 голос
/ 12 февраля 2020

Вам не хватает аннотации kubernetes.io/ingress.class: nginx на объекте Ingress для Jenkins.

Из документации nginx -ingress Helm Chart :

Чтобы использовать, добавьте аннотацию kubernetes.io/ingress.class: nginx к своим ресурсам Ingress.

...