在使用 kubectl
的主机上首先克隆仓库并进入部署文件夹:
$ git clone https://github.com/nginxinc/kubernetes-ingress.git --branch v2.4.1$ cd kubernetes-ingress/deployments
Nginx Ingress Controller 的安装略微麻烦一些,有很多个 YAML 需要执行,但如果只是做简单的试验,就只需要用到 4 个 YAML:
$ kubectl apply -f common/ns-and-sa.yamlnamespace/nginx-ingress createdserviceaccount/nginx-ingress created$ kubectl apply -f rbac/rbac.yamlclusterrole.rbac.authorization.k8s.io/nginx-ingress createdclusterrolebinding.rbac.authorization.k8s.io/nginx-ingress created$ kubectl apply -f common/nginx-config.yamlconfigmap/nginx-config created$ kubectl apply -f common/default-server-secret.yamlsecret/default-server-secret created
前两条命令为 Ingress Controller 创建了一个独立的名字空间 nginx-ingress
,还有相应的账号和权限,这是为了访问 apiserver 获取 Service、Endpoint 信息用的;后两条则是创建了一个 ConfigMap 和 Secret,用来配置 HTTP/HTTPS 服务 。
接下来我们还需要部署一些 Custom Resources,没有它们我们部署的 Ingress Controller 就无法运行:
默认情况下,需要为虚拟服务器、虚拟服务器路由、传输服务器和策略创建自定义资源的定义 。否则,Ingress Controller Pod 将不会变为 Ready 状态 。如果要禁用该要求,请将-enable-custom-resources
命令行参数配置为Readyfalse
并跳过此部分 。
$ kubectl apply -f common/crds/k8s.nginx.org_policies.yamlcustomresourcedefinition.apiextensions.k8s.io/policies.k8s.nginx.org created$ kubectl apply -f common/crds/k8s.nginx.org_transportservers.yamlcustomresourcedefinition.apiextensions.k8s.io/transportservers.k8s.nginx.org created$ kubectl apply -f common/crds/k8s.nginx.org_virtualserverroutes.yamlcustomresourcedefinition.apiextensions.k8s.io/virtualserverroutes.k8s.nginx.org created$ kubectl apply -f common/crds/k8s.nginx.org_virtualservers.yamlcustomresourcedefinition.apiextensions.k8s.io/virtualservers.k8s.nginx.org created
部署 Ingress Controller 不需要我们自己从头编写 Deployment,Nginx 已经为我们提供了示例 YAML (位置是:kubernetes-ingress/deployments/deployment/nginx-ingress.yaml
),现在我们对其进行一些小小的改动:metadata
里的name
要改成自己的名字,比如ngx-ing-dep
spec.selector
和template.metadata.labels
也要修改成自己的名字,比如还是用ngx-ing-dep
containers.image
可以改用apline
版本,加快下载速度,比如nginx/nginx-ingress:2.2-alpine
- 最下面的
args
要加上-ingress-class=ngx-ink
,也就是前面创建的 Ingress Class 的名字,这是让 Ingress Controller 管理 Ingress 的关键
apiVersion: apps/v1kind: Deploymentmetadata:name: ngx-ing-depnamespace: nginx-ingressspec:replicas: 1selector:matchLabels:app: ngx-ing-deptemplate:metadata:labels:app: ngx-ing-depspec:serviceAccountName: nginx-ingressautomountServiceAccountToken: truecontainers:- image: nginx/nginx-ingress:2.2-alpineimagePullPolicy: IfNotPresentname: nginx-ingressports:- name: httpcontainerPort: 80- name: httpscontainerPort: 443- name: readiness-portcontainerPort: 8081- name: prometheuscontainerPort: 9113readinessProbe:httpGet:path: /nginx-readyport: readiness-portperiodSeconds: 1resources:requests:cpu: "100m"memory: "128Mi"securityContext:allowPrivilegeEscalation: truerunAsUser: 101 #nginxrunAsNonRoot: truecapabilities:drop:- ALLadd:- NET_BIND_SERVICEenv:- name: POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespace- name: POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.nameargs:- -nginx-configmaps=$(POD_NAMESPACE)/nginx-config- -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret- -ingress-class=ngx-ink
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 2023年农历五月十九搬家乔迁好不好
- 2023年农历八月十九宜洗澡吗 2023年10月3日洗澡好不好
- 我的世界里怎么骑马(我的世界怎样骑马)
- 2024年九月初四出生江姓女孩名字叫什么好名字推荐
- 张姓男孩名字2024年10月5日出生的生辰八字五行查询
- 2023年2月7日出海打鱼吉日一览表 2023年2月7日出海打鱼好吗
- 大白菜从什么时候开始有的
- 西甲硅油功效作用是什么?
- iPhone15系列电池容量曝光 苹果或告别128GB存储吗
- 老九门点天灯是第几集?