1

我正在寻找 microk8s 来托管我的应用程序,它将使用入口。目前它部署在 AWS 上用于开发系统,很快将迁移到 Onprem 系统

要访问应用程序,我只需提供 AWS 的外部主机名,它就会毫无问题地拉出应用程序页面。

kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0

kubectl expose deployment web --type=NodePort --port=8080

web          NodePort    10.152.183.37    <none>        8080:30631/TCP   34m
web2         NodePort    10.152.183.226   <none>        8080:30881/TCP   25m

现在,如果我使用 AWS 主机名,它会按预期显示

Hello, world!
Version: 2.0.0
Hostname: web2-8474c56fd-kb8nx

到目前为止,一切都按预期工作。现在在 Microk8s 上,我创建了一个具有以下详细信息的 Ingress:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: http-ingress
spec:
  rules:
    - http:
      paths:
      - path: /
        backend:
          serviceName: web
          servicePort: 8080
      - path: /v2
        backend:
          serviceName: web2
          servicePort: 8080

这也按预期工作。

现在有没有一种方法可以将 AWS 主机名 ec2- - -**- .us-east-2.compute.amazonaws.com 屏蔽为我想要选择或自定义的内容。例如 a3.myweb.com

我看到这在 minikube/kubernetes 中使用“host”属性是可能的

用自定义名称屏蔽 AWS/anyserver 的主机名的最佳方法是什么???

由于我们使用 NGINX 作为反向代理,因此我们可以通过在 conf.d/ssl.conf 文件中提供主机名来做到这一点

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    server_name a1-staging.mycomp.com;
    
    ssl_certificate /etc/pki/tls/certs/a1.crt;
    ssl_certificate_key /etc/pki/tls/private/a1.key;

我可以使用 Ingress 或社区建议的其他任何东西在 micok8s 设置中实现类似的东西吗???

谢谢你,阿尼什

4

1 回答 1

2

入口规则可以有一个host属性

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: http-ingress
spec:
  rules:
    - host: 'a3.myweb.com'
      http:
        paths:
        - path: /
          backend:
            serviceName: web
            servicePort: 8080
        - path: /v2
          backend:
            serviceName: web2
            servicePort: 8080
于 2020-07-23T22:29:59.063 回答