1. nginx ingress 在aks 上安装
helm安装非常简单。
1.1 helm安装
# Create a namespace for your ingress resources
kubectl create namespace ingress-basic
# Add the official stable repository
helm repo add stable https://kubernetes-charts.storage.googleapis.com/
# Use Helm to deploy an NGINX ingress controller
helm install nginx-ingress stable/nginx-ingress
--namespace ingress-basic
--set controller.replicaCount=2
--set controller.nodeSelector."beta.kubernetes.io/os"=linux
--set defaultBackend.nodeSelector."beta.kubernetes.io/os"=linux
--set controller.service.externalTrafficPolicy=Local
--set defaultBackend.image.repository=gcr.azk8s.cn/google_containers/defaultbackend-amd64
若要为对群集中容器的请求启用客户端源 IP 保留,请将 --set controller.service.externalTrafficPolicy=Local
添加到 Helm install 命令中。 客户端源 IP 存储在 X-Forwarded-For 下的请求头中。 使用启用了客户端源 IP 保留的入口控制器时,SSL 传递将不起作用。
1.2 获取ingress ip地址
获取service即可.EXTERNAL_IP 会把真实的ip填充进去。
$ kubectl get service -l app=nginx-ingress --namespace ingress-basic
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress-controller LoadBalancer 10.0.61.144 EXTERNAL_IP 80:30386/TCP,443:32276/TCP 6m2s
nginx-ingress-default-backend ClusterIP 10.0.192.145 <none> 80/TCP 6m2s
2. 详解解读helm安装了什么
2.1 获取chart包并分析
$helm pull stable/nginx-ingress
$ls
nginx-ingress-1.40.3.tgz
解压nginx-ingress-1.40.3.tgz 即是chart 本体。熟悉的chart 结构。
$ls
Chart.yaml OWNERS README.md ci templates values.yaml
Values.yaml 600多行,
上面改的地方不是很多
--set controller.replicaCount=2
--set controller.nodeSelector."beta.kubernetes.io/os"=linux
--set defaultBackend.nodeSelector."beta.kubernetes.io/os"=linux
--set controller.service.externalTrafficPolicy=Local
--set defaultBackend.image.repository=gcr.azk8s.cn/google_containers/defaultbackend-amd64
replicaCount 副本集数量。
镜像,如果不改默认gcr.io是会被墙掉的。
改的地方不是很多。
2.2 其他可以配置的地方
hpa 默认是没有打开的
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 11
targetCPUUtilizationPercentage: 50
targetMemoryUtilizationPercentage: 50
可以把nginx controller 布置成daemonset 。默认是deployment。
## DaemonSet or Deployment
##
kind: Deployment