我运行了以下命令:
kubectl create secret tls nexus-tls --cert cert.crt --key privateKey.pem
其中cert.crt
包含我的证书,privateKey.pem
包含我的私钥(使用CloudFlare配置)。
然后我安装了stable/sonatype-nexus
Helm图表,配置如下:
nexusProxy:
env:
nexusDockerHost: containers.<<NEXUS_HOST>>
nexusHttpHost: nexus.<<NEXUS_HOST>>
nexusBackup:
enabled: true
nexusAdminPassword: <<PASSWORD>>
env:
targetBucket: gs://<<BACKUP_BUCKET_NAME>>
persistence:
storageClass: standard
ingress:
enabled: true
path: /*
annotations:
kubernetes.io/ingress.allow-http: true
kubernetes.io/tls-acme: true
kubernetes.io/ingress.class: gce
kubernetes.io/ingress.global-static-ip-name: <<STATIC_IP_ADDRESS_NAME>>
tls:
enabled: true
secretName: nexus-tls
persistence:
storageClass: standard
storageSize: 1024Gi
resources:
requests:
cpu: 250m
memory: 4800Mi
通过运行以下命令:
helm install -f values.yaml stable/sonatype-nexus
此处记录了此图表的可能配置值。
当我访问http://nexus.<<NEXUS_HOST>>
时,我可以访问Nexus Repository。但是,当我访问https://nexus.<<NEXUS_HOST>>
时,我收到混合内容警告,因为正在提供HTTP资源。
如果我将nexusProxy.env.enforceHttps
环境变量设置为true,当我访问https://nexus.<<NEXUS_HOST>>
时,我会得到如下所示的响应:
HTTP access is disabled. Click here to browse Nexus securely: https://nexus.<<NEXUS_HOST>>.
我如何确保Nexus得到安全的服务?我是否犯了配置错误,或者问题出在其他地方?
2条答案
按热度按时间7qhs6swi1#
由于传统的原因,我必须在GKE上安装nexus,虽然这个问题没有直接说明它在Google Cloud上,但
gs://
和ingress.class: gce
表明它在Google Cloud上;尽管Xuan胡伊的回答更老,是关于AWS的。我花了很长时间让Nexus TLS在GKE上工作,但我最终还是成功了。Google入口资源不是最稳定的。如果你在迭代,它们可能会楔入,您可能会发现终结器由于在L4 ILB清理中卡住而无法完成。事情变得如此糟糕,在GCP与只是无辜的部署和删除周期,我不得不垃圾项目,并开始新的测试,并最终得到一个有效的组合。
我的Helm
values.yaml
有以下内容。注意我也在使用Terraform,所以在运行Helm之前,我的${variables}
被Terraform替换为我的特定环境设置。在运行Helm之前,我的安装程序将TLS证书放在GCE证书存储中,以供ILB使用。
同样在Helm之前,
${tls_secret_name}
kubesecret是使用密钥名tls.crt
和tls.key
中的证书准备的(许多其他应用程序使用这种模式)。我还有一个
backendconfig
资源:Nexus的人不支持这种情况太久,所以我们正在努力移动到港口,以便我们可以取消我们的Nexus许可证。
jtw3ybtb2#
如果您的ELB正在提供纯http流量,请将此添加到您的LoadBalancer服务注解中。