@zhangyy
2020-03-13T02:38:17.000000Z
字数 5454
阅读 389
kubernetes系列
- 一:kubernetes 的 ingress
Ingress-Nginx github 地址:https://github.com/kubernetes/ingress-nginxIngress-Nginx 官方网站:https://kubernetes.github.io/ingress-nginx/


部署:wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yamlwget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yamlkubectl apply -f mandatory.yamlkubectl apply -f service-nodeport.yaml----所有节点上传ingress-contro.tar 文件所有节点加载镜像docker load -i ingree.contro.tardocker imageskubectl apply -f mandatory.yamlkubectl get deploy -n ingress-nginxkubectl get pod -n ingress-nginx




如何使用国外机器打包镜像已经下载先部署dockeryum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io -yservice docker start----docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0docker save -o ingrss.contro.tar quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0tar -zcvf ingrss.contro.tar.gz ingrss.contro.tar然后 下载 ingrss.contro.tar.gz 即可
部署ingress-nginx的 svcwget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yamlkubectl apply -f service-nodeport.yamlkubectl get svc -n ingress-nignx

deployment、Service、Ingress Yaml 文件---vim svc-deploy.yaml---apiVersion: extensions/v1beta1kind: Deploymentmetadata:name: nginx-dmspec:replicas: 2template:metadata:labels:name: nginxspec:containers:- name: nginximage: wangyanglinux/myapp:v1imagePullPolicy: IfNotPresentports:- containerPort: 80---apiVersion: v1kind: Servicemetadata:name: nginx-svcspec:ports:- port: 80targetPort: 80protocol: TCPselector:name: nginx---


使用ingress 发布vim nginx-ingress.yaml----apiVersion: extensions/v1beta1kind: Ingressmetadata:name: nginx-testspec:rules:- host: node01.flyfishhttp:paths:- path: /backend:serviceName: nginx-svcservicePort: 80---kubectl apply -f nginx-ingress.yamlkubectl get svc -n ingress-nginx


实现一个虚拟主机

定义deploy1 与svc1vim deployment1.yaml---apiVersion: extensions/v1beta1kind: Deploymentmetadata:name: deployment1spec:replicas: 2template:metadata:labels:name: nginx1spec:containers:- name: nginx1image: wangyanglinux/myapp:v1imagePullPolicy: IfNotPresentports:- containerPort: 80---apiVersion: v1kind: Servicemetadata:name: svc-1spec:ports:- port: 80targetPort: 80protocol: TCPselector:name: nginx1---kubectl apply -f deployment1.yaml

定义deploy2 与svc2vim deployment2.yaml---apiVersion: extensions/v1beta1kind: Deploymentmetadata:name: deployment2spec:replicas: 2template:metadata:labels:name: nginx2spec:containers:- name: nginx2image: wangyanglinux/myapp:v2imagePullPolicy: IfNotPresentports:- containerPort: 80---apiVersion: v1kind: Servicemetadata:name: svc-2spec:ports:- port: 80targetPort: 80protocol: TCPselector:name: nginx2---kubectl apply -f deployment2.yaml

定义ingress的nginx 对外连接vim ingress.yaml---apiVersion: extensions/v1beta1kind: Ingressmetadata:name: ingress1spec:rules:- host: www1.flyfish.comhttp:paths:- path: /backend:serviceName: svc-1servicePort: 80---apiVersion: extensions/v1beta1kind: Ingressmetadata:name: ingress2spec:rules:- host: www2.flyfish.comhttp:paths:- path: /backend:serviceName: svc-2servicePort: 80---kubectl apply -f ingress.yaml

测试:kubectl get svckubectl get svc -n ingress-nginx




创建证书,以及 cert 存储方式openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/O=nginxsvc"kubectl create secret tls tls-secret --key tls.key --cert tls.crt



deployment、Service、Ingress Yaml 文件vim deployment3.yaml---apiVersion: extensions/v1beta1kind: Deploymentmetadata:name: deployment1spec:replicas: 2template:metadata:labels:name: nginx3spec:containers:- name: nginx3image: wangyanglinux/myapp:v3imagePullPolicy: IfNotPresentports:- containerPort: 80---apiVersion: v1kind: Servicemetadata:name: svc-3spec:ports:- port: 80targetPort: 80protocol: TCPselector:name: nginx3---vim ingress.yaml---apiVersion: extensions/v1beta1kind: Ingressmetadata:name: httpsspec:tls:- hosts:- www3.flyfish.comsecretName: tls-secretrules:- host: www3.flyfish.comhttp:paths:- path: /backend:serviceName: svc-3servicePort: 80---kubectl apply -f deployment3.yamlkubectl apply -f ingress.yaml





yum -y install httpdhtpasswd -c auth fookubectl create secret generic basic-auth --from-file=authkubectl get secret


vim deployment4.yaml---apiVersion: extensions/v1beta1kind: Deploymentmetadata:name: deployment4spec:replicas: 2template:metadata:labels:name: nginx4spec:containers:- name: nginx4image: wangyanglinux/myapp:v4imagePullPolicy: IfNotPresentports:- containerPort: 80---apiVersion: v1kind: Servicemetadata:name: svc-4spec:ports:- port: 80targetPort: 80protocol: TCPselector:name: nginx4---vim basicauth.yaml---apiVersion: extensions/v1beta1kind: Ingressmetadata:name: ingress-with-authannotations:nginx.ingress.kubernetes.io/auth-type: basicnginx.ingress.kubernetes.io/auth-secret: basic-authnginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - foo'spec:rules:- host: auth.flyfish.comhttp:paths:- path: /backend:serviceName: svc-4servicePort: 80---kubectl apply -f deployment4.yamlkubectl apply -f basicauth.yamlkubectl get svc -n ingress-nginx






vim ingress-re.yaml---apiVersion: extensions/v1beta1kind: Ingressmetadata:name: nginx-reannotations:nginx.ingress.kubernetes.io/rewrite-target: https://www3.flyfish.com:32500/hostname.htmlspec:rules:- host: re.flyfish.comhttp:paths:- path: /backend:serviceName: svc-2servicePort: 80---kubectl apply -f ingress-re.yamlkubectl get svc -n ingress-nginx



