我正在尝试在Azure上设置入口。我有一个pod和服务正在运行(一个网站)。
谷歌搜索Ingress设置,看来您必须创建3个东西,Ingress,服务和Ingress Controller(pod)
这是我到目前为止所拥有的:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myingress
annotations:
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: ui.example.com
http:
paths:
- backend:
serviceName: ui
servicePort: 80
- host: monit.example.com
http:
paths:
- path:
backend:
serviceName: grafana
servicePort: 80
这几乎是不言而喻的,但是rewrite-target
到底是做什么的(我有两个后端)?
接下来使用LoadBalancing服务
apiVersion: v1
kind: Service
metadata:
name: ingressservice
spec:
ports:
- port: 80
name: http
- port: 443
name: https
selector:
k8s-app: nginx-ingress-controller
type: LoadBalancer
还有入口控制器
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-ingress-controller
labels:
k8s-app: nginx-ingress-controller
spec:
replicas: 1
template:
metadata:
labels:
k8s-app: nginx-ingress-controller
annotations:
prometheus.io/port: '10254'
prometheus.io/scrape: 'true'
spec:
terminationGracePeriodSeconds: 60
containers:
- image: gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.15
name: nginx-ingress-controller
ports:
- containerPort: 80
hostPort: 80
- containerPort: 443
hostPort: 443
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
args:
- /nginx-ingress-controller
- --default-backend-service=$(POD_NAMESPACE)/default-http-backend
问题: *所有这些如何一起工作? *入口控制器的图像是否正确? (它应在Azure上运行)
答案 0 :(得分:2)
您的kubernetes在哪个云上运行都无关紧要,入侵发生在kubernetes内部,因此它的云不可知。要设置入口,您可以使用official helm chart。之后,您需要创建入口定义,以使用您创建的入口公开服务。
答案 1 :(得分:1)
如果您是在数字海洋,GCP,AWS,Azure kubernetes上运行安装程序,则它不会起作用,并且它的组件也可以正常工作。
因此,如果尚未安装入口控制器,则必须安装它。
您还可以按照本教程设置入口控制器和cert-manager:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes