我正在尝试在Kubernetes群集中实现SonarQube。部署运行正常,也通过虚拟服务公开。我可以通过localhost:port/sonar
打开UI,但无法通过外部IP访问它。我知道sonar绑定到localhost,不允许从远程服务器外部访问。我正在使用MYSQL数据库的GKE上运行此程序。以下是我的YAML文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: sonarqube
namespace: sonar
labels:
service: sonarqube
version: v1
spec:
replicas: 1
template:
metadata:
name: sonarqube
labels:
name: sonarqube
spec:
terminationGracePeriodSeconds: 15
initContainers:
- name: volume-permission
image: busybox
command:
- sh
- -c
- sysctl -w vm.max_map_count=262144
securityContext:
privileged: true
containers:
- name: sonarqube
image: sonarqube:6.7
resources:
limits:
memory: 4Gi
cpu: 2
requests:
memory: 2Gi
cpu: 1
args:
- -Dsonar.web.context=/sonar
- -Dsonar.web.host=0.0.0.0
env:
- name: SONARQUBE_JDBC_USERNAME
valueFrom:
secretKeyRef:
name: cloudsql-db-credentials
key: username
- name: SONARQUBE_JDBC_PASSWORD
valueFrom:
secretKeyRef:
name: cloudsql-db-credentials
key: password
- name: SONARQUBE_JDBC_URL
value: jdbc:mysql://***.***.**.*:3306/sonar?useUnicode=true&characterEncoding=utf8
ports:
- containerPort: 9000
name: sonarqube-port
---
apiVersion: v1
kind: Service
metadata:
labels:
service: sonarqube
version: v1
name: sonarqube
namespace: sonar
spec:
selector:
name: sonarqube
ports:
- name: http
port: 80
targetPort: sonarqube-port
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: sonarqube-internal
namespace: sonar
spec:
hosts:
- sonarqube.staging.jeet11.internal
- sonarqube
gateways:
- default/ilb-gateway
- mesh
http:
- route:
- destination:
host: sonarqube
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: sonarqube-external
namespace: sonar
spec:
hosts:
- sonarqube.staging.jeet11.com
gateways:
- default/elb-gateway
http:
- route:
- destination:
host: sonarqube
---
部署成功完成。公开的服务提供了已Map到主机url的公共ip,但我无法访问主机url上的服务。
我需要更改Map,使sonar与服务器ip绑定,但我不知道如何操作。我无法将其绑定到我的群集ip,也无法绑定到我的内部或外部服务ip。
我该怎么办?请帮帮我!
2条答案
按热度按时间b1zrtrql1#
我最近也遇到了同样的问题,今天我设法解决了这个问题。
我希望下面的解决方案对任何面临同样问题的人都有效!
环境
工具-调试
kubectl logs -n istio-system -l app=istiod
istioctl analyze -n <namespace>
istioctl dashboard kiali
istioctl dashboard prometheus
istio_requests_total
。这显示进入服务的流量。问题
溶液
Sonarqube服务清单
Sonarqube的Istio网关和虚拟服务清单
*网关服务器端口和VirtualService目标端口相同。如果您有不同的应用程序服务端口,则您的VirtualService目标端口编号应与应用程序服务端口匹配。网关服务器端口应与应用程序服务目标端口匹配。
kubectl -n istio-system get service istio-ingressgateway
。nslookup <hostname>
),您获得的IP地址必须与分配给istio-ingressgateway服务的IP地址匹配。在入口网关中公开新端口
istioctl analyze -n sonarqube
来确定端口是否导致问题。[33mWarn[0m [IST0104] (Gateway sonarqube-gateway.sonarqube) The gateway refers to a port that is not exposed on the workload (pod selector istio=ingressgateway; port 9000) Error: Analyzers found issues when analyzing namespace: sonarqube. See https://istio.io/docs/reference/config/analysis for more information about causes and resolutions.
kubectl logs -n istio-system -l app=istiod
。kubectl edit svc istio-ingressgateway -n istio-system
并将以下部分添加到端口。跳过创建新端口
测试时间
xurqigkl2#
不要传递参数,只是尝试运行没有它一次为我工作。
这就是我的部署文件希望帮助