Kubernetesクラスターで永続性やセキュリティ要件なしに、基本的なrabbit mqインスタンス(クラスターセットアップなし)をセットアップする必要があります。
私が必要なもの:
レプリカ= 1のステートフルセットとして実行されている単一のウサギmqポッドで、特定のURL(amgpポートと管理インターフェースポート)を介してクラスターの内側と外側から到達します。
私が必要としないもの:
これまでに見つけたヘルムチャートはすべて、クラスタリングや永続化などのプロダクションセットアップに対応していますが、インスタンスをテストにのみ使用するので、これは必要ありません
これは私がこれまでに持っているものです:
apiVersion: v1
kind: Service
metadata:
name: rs-rmq-mgt
spec:
selector:
app: rs-rmq
ports:
- protocol: TCP
port: 1337
targetPort: 15672
type: NodePort
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rs-rmq
spec:
selector:
matchLabels:
app: rs-rmq
serviceName: "rs-rmq"
replicas: 1
template:
metadata:
labels:
app: rs-rmq
spec:
containers:
- name: rs-rmq
image: rabbitmq:management
ports:
- containerPort: 25672
- containerPort: 5672
- containerPort: 4369
- containerPort: 15672
基本的なrabbitmqインスタンスには、このStatefulSet
yamlファイルを使用します。
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: rabbitmq
spec:
replicas: 1
serviceName: rabbitmq
selector:
matchLabels:
app: rabbitmq
template:
metadata:
labels:
app: rabbitmq
spec:
containers:
- name: rabbitmq
image: rabbitmq:3-management
env:
- name: "RABBITMQ_ERLANG_COOKIE"
value: "1WqgH8N2v1qDBDZDbNy8Bg9IkPWLEpu79m6q+0t36lQ="
volumeMounts:
- mountPath: /var/lib/rabbitmq
name: rabbitmq-data
volumes:
- name: rabbitmq-data
hostPath:
path: /data/rabbitmq
type: DirectoryOrCreate
これを行う適切な方法は、専用のhelm-chart( stable/rabbitmq )と helm (Kubernetesパッケージマネージャー)を介してrabbitmqをインストールすることです。その主な理由:この方法は、オープンソースコミュニティによって徹底的にテストおよび検証されています。
ショートカットしたい場合は、Kubernetes公式ウェブサイトから次のタスクを参照してください: メッセージキューサービスの開始 (rabbitmq)。必要なすべてのマニフェストファイルへのリンクがあります。
レプリカと永続的なものだけを必要としない場合。 stsではなく、単純なポッド展開を使用できます。 sts docを参照してください
kubectl run rabbitmq --image=rabbitmq:management --expose --port=15672 --restart=Never
--dry-run -o yaml > rabbitmq.yml
関連するコンテナポートを編集し、ポッドを作成します。
kubectl create -f rabbitmq.yml
NodePortとしてサービスを公開します。
kubectl expose po rabbitmq --port 15672
これで、外部からアクセスできます
NodesIP:NodePort
そして内部的には、
[svc]。[namespace] .svc