【问题标题】:How can I add my external domain "uat.test.com " to my kubernetes cluster by using nginx-ingress?如何使用 nginx-ingress 将我的外部域“uat.test.com”添加到我的 kubernetes 集群?
【发布时间】:2021-04-27 00:38:09
【问题描述】:

我是 kubernetes 的新手,并且对于来自 godaddy 的外部域的入口 nginx 有问题。它被称为“https://uat.test.com”。我为 nginx-ingress 创建了一些 yaml,但我做不到。如何使用 nginx-ingress 将“uat.test.com”添加到我的 kubernetes 集群?

下面;它们是我有趣和有压力的冒险的步骤。

  1. 创建组和命名空间:
az group create --name aks-group --location eastus2

az aks create --resource-group aks-group --name aks-cluster --node-count 3 --generate-ssh-keys -s Standard_B2ms --disable-rbac

kubectl create namespace ingress-basic
  1. 凭据:
az aks get-credentials -g aks-group -n aks-cluster

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.43.0/deploy/static/provider/cloud/deploy.yaml
 
az aks get-credentials -g aks-group -n aks-cluster

kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-ingress-nginx-controller
  1. 安装 ingress-nginx:
helm install ingress-nginx ingress-nginx/ingress-nginx
   
helm repo update
    
helm install nginx-ingress ingress-nginx/ingress-nginx --namespace ingress-basic --set controller.replicaCount=2
     
kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-ingress-nginx-control

aks-helloworld-one.yaml :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: aks-helloworld-one  
spec:
  replicas: 1
  selector:
    matchLabels:
      app: aks-helloworld-one
  template:
    metadata:
      labels:
        app: aks-helloworld-one
    spec:
      containers:
      - name: aks-helloworld-one
        image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
        ports:
        - containerPort: 80
        env:
        - name: TITLE
          value: "Welcome to Azure Kubernetes Service (AKS)"
---
apiVersion: v1
kind: Service
metadata:
  name: aks-helloworld-one  
spec:
  type: ClusterIP
  ports:
  - port: 80
  selector:
    app: aks-helloworld-one
kubectl apply -f aks-helloworld-one.yaml --namespace ingress-basic

aks-helloworld-two.yml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: aks-helloworld-two  
spec:
  replicas: 1
  selector:
    matchLabels:
      app: aks-helloworld-two
  template:
    metadata:
      labels:
        app: aks-helloworld-two
    spec:
      containers:
      - name: aks-helloworld-two
        image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
        ports:
        - containerPort: 80
        env:
        - name: TITLE
          value: "AKS Ingress Demo"
---
apiVersion: v1
kind: Service
metadata:
  name: aks-helloworld-two  
spec:
  type: ClusterIP
  ports:
  - port: 80
  selector:
    app: aks-helloworld-two
kubectl apply -f aks-helloworld-two.yaml --namespace ingress-basic

hello-world-ingress.yml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: hello-world-ingress
  namespace: ingress-basic
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: uat.test.com 
    http:
      paths:
      - backend:
          serviceName: aks-helloworld-one
          servicePort: 80
        path: /hello-world-one(/|$)(.*)
      - backend:
          serviceName: aks-helloworld-two
          servicePort: 80
        path: /hello-world-two(/|$)(.*)
      - backend:
          serviceName: aks-helloworld-one
          servicePort: 80
        path: /(.*)
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: hello-world-ingress-static
  namespace: ingress-basic
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /static/$2
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: aks-helloworld-one
          servicePort: 80
        path: /static(/|$)(.*)
kubectl apply -f hello-world-ingress.yaml

当我写地址“https://uat.test.com”时

结果或错误:

【问题讨论】:

  • 错误是什么?
  • @Gavin 没有错误。只是 404 问题。我更新了我的问题。
  • 如果您 curl 来自您的一个实例的请求,您会得到什么?
  • 好吧,您需要将集群入口控制器的公共 IP 地址绑定到您的 DNS 名称。这不会发生在 AKS(或您的 k8s 配置中的任何地方)中。您需要与您的 DNS 提供商合作
  • @silent 你能写下你的评论作为答案,因为它解决了我的问题吗?我会检查作为答案!顺便说一句,谢谢!

标签: azure nginx kubernetes azure-devops


【解决方案1】:

// 在 cmets 中讨论过

您需要将集群入口控制器的公共 IP 地址绑定到您的 DNS 名称。这不会发生在 AKS(或您的 k8s 配置中的任何地方)中。您需要通过您的 DNS 提供商来执行此操作。

【讨论】:

    猜你喜欢
    • 2020-07-22
    • 1970-01-01
    • 2020-02-04
    • 2019-04-03
    • 1970-01-01
    • 2019-12-29
    • 2023-03-26
    • 2023-03-20
    • 2019-09-27
    相关资源
    最近更新 更多