プライベート ネットワーク (aws や Google クラウドではなく、プライベート サーバー) に kubernetes クラスターがあり、アクセスできるようにサービスを作成しましたが、クラスターの外部からアクセスできるようにする必要があり、そのために Ingress を作成しました。クラスターに ingress-nginx を追加しました。
これは、いくつかの試行を行った後に使用している YAML です。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- host: k8s.local
http:
paths:
- path: /
backend:
serviceName: nginx
servicePort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: ClusterIP
selector:
name: nginx
ports:
- port: 80
targetPort: 80
protocol: TCP
# selector:
# app: nginx
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: echoserver
image: nginx
ports:
- containerPort: 80
次のように yaml を実行しました: kubectl create -f file.yaml
/etc/hosts ファイルで、 k8s.localをマスター サーバーの IP に追加しました。
マスターサーバーでコマンドを実行しようとすると、「接続が拒否されました」というメッセージが表示されます: $ curl http://172.16.0.18:80/ -H 'Host: k8s.local'
肝心かどうかわかりませんが、クラスターにはFlannelを使用しています。
私の考えは、「hello world」を作成し、それをクラスターから公開することです!
このアクセスを許可するには、構成を変更する必要がありますか?
編集された YAML ファイル:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
# nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: k8s.local
http:
paths:
- path: /teste
backend:
serviceName: nginx
servicePort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: LoadBalancer # NodePort
selector:
app: nginx
ports:
- port: 80
targetPort: 80
protocol: TCP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: echoserver
image: nginx
ports:
- containerPort: 80