I am setting jenkins
on GKE using the official helm chart.
I am also installing the nginx
ingress also via its stable helm chart and after creating a static IP on GCE as follows:
gcloud compute addresses create jenkins-static-ip --global --ip-version IPV4
I am passing the above IP to the nginx-ingress helm values:
helm upgrade --force --tls --install nginx-ingress stable/nginx-ingress --set rbac.create=true --set controller.service.loadBalancerIP=<jenkins-static-ip>
I am also using the prefix /jenkins
for accessing the jenkins
service.
Both the ingress controller and the ingress resource are created as below:
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: {}
However I am unable to access jenkins
in any of the following urls:
http://13.579.24.68
https://13.579.24.68
http://13.579.24.68/jenkins
https://13.579.24.68/jenkins
edit: I have added the annotation to my ingress
resource but the result remains the same:
▶ 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: {}
Any idea why is this happening?
You are missing the kubernetes.io/ingress.class: nginx
annotation on your Ingress object for Jenkins.
From the nginx-ingress Helm Chart's documentation:
To use, add the kubernetes.io/ingress.class: nginx annotation to your Ingress resources.