複数のクラスターがあり、1 つのイングレスがクラスター間で要求を負荷分散するマルチクラスター展開をセットアップしようとしています。
HTTP サービスはセットアップでうまく機能します。ここでの問題はsftp
サーバーです。
この回答とこのドキュメントを参照して、サービスのポート 22 にアクセスしようとしていsftp
ます。
sftp の展開はポート 22 で公開されています。マニフェストは次のとおりです。
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: sftp
labels:
environment: production
app: sftp
spec:
replicas: 1
minReadySeconds: 10
template:
metadata:
labels:
environment: production
app: sftp
annotations:
container.apparmor.security.beta.kubernetes.io/sftp: runtime/default
spec:
containers:
- name: sftp
image: atmoz/sftp:alpine
imagePullPolicy: Always
args: ["user:1001:100:upload"]
ports:
- containerPort: 22
securityContext:
capabilities:
add: ["SYS_ADMIN"]
resources: {}
NodePort サービスを使用した sftp-service の簡単なマニフェストを次に示します。
apiVersion: v1
kind: Service
metadata:
labels:
environment: production
name: sftp-service
spec:
type: NodePort
ports:
- name: sftp-port
targetPort: 9000
port: 9000
nodePort: 30063
protocol: TCP
selector:
app: sftp
上記のドキュメントを参照して ConfigMap を作成すると、次のような回答が得られます。
apiVersion: v1
kind: ConfigMap
metadata:
name: sftp-service
data:
9000: "default/sftp-service:22"
最後に、イングレス マニフェストは次のようになります。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-foo
annotations:
kubernetes.io/ingress.global-static-ip-name: static-ip
kubernetes.io/ingress.class: gce-multi-cluster
spec:
backend:
serviceName: http-service-zone-printer
servicePort: 80
rules:
- http:
paths:
- path: /sftp
backend:
serviceName: sftp-service
servicePort: 22
template:
spec:
containers:
- name: proxy-port
args:
- "--tcp-services-configmap=default/sftp-service"
イングレスを使用して kubernetes 上の sftp サーバーの TCP/UDP ポートを公開する方法を理解していないと感じています。ここで何が間違っていますか?
sftp
マルチクラスター展開でイングレスと NodePort サービスを使用して簡単にセットアップする他の方法はありますか?
これは、セットアップを行うために参照している公式ドキュメントです。