0

us-central1-c ゾーンに 3 つの N1-g1 スモール インスタンスがある Google クラウド上に blog-dev という名前の kubernetes クラスターがあります。次の方法でクラスターを構成しました

  1. コマンド「gcloud init」を入力します。アカウント、プロジェクト、リージョンを選択
  2. コマンド「gcloud container clusters get-credentials blog-dev」を入力します
  3. コマンド「kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.3/deploy/static/provider/cloud/deploy.yaml」を入力します
  4. GCloud のロード バランサー セクションに移動し、ロード バランサーの IP をコピーします。
  5. エントリ 'load-balancer-ip' blog.dev を hosts.ini ファイルに入れます。ロード バランサーの IP を手順 4 のものに置き換えます。
  6. コマンド「kubectl create secret generic jwt-secret --from-literal=JWT_KEY=asdf」を入力します
  7. コマンド「skaffold dev」を入力します。これに必要なファイルは以下にあります

Nats の展開

apiVersion: apps/v1
kind: Deployment
metadata: 
  name: nats-depl
spec:
  replicas: 1
  selector:
    matchLabels: 
      app: nats
  template:
    metadata: 
      labels:
        app: nats
    spec:
      containers:
        - name: nats
          image: nats-streaming:0.17.0
          args: [
            '-p',
            '4222',
            '-m',
            '8222',
            '-hbi',
            '5s',
            '-hbt',
            '5s',
            '-hbf',
            '2',
            '-SD',
            '-cid',
            'BPB_MEAN_FRAMEWORK'
          ]
---
apiVersion: v1
kind: Service
metadata:
  name: nats-srv
spec:
  selector:
    app: nats
  ports:
    - name: client
      protocol: TCP
      port: 4222
      targetPort: 4222
    - name: monitoring
      protocol: TCP
      port: 8222
      targetPort: 8222

イングレス yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: blog.dev
      http:
        paths:
          - path: /api/users/?(.*)
            backend:
              serviceName: auth-srv
              servicePort: 3100
          - path: /nats/?(.*)
            backend:
              serviceName: nats-srv
              servicePort: 4222
          - path: /api/posts/?(.*)
            backend:
              serviceName: posts-srv
              servicePort: 3100
          - path: /?(.*)
            backend:
              serviceName: client-srv
              servicePort: 80

Skaffold.yaml

apiVersion: skaffold/v2alpha3
kind: Config
deploy:
  kubectl: 
    manifests:
      - ./infra/k8s/*
build:
  #local:
  # push: false
  googleCloudBuild:
    projectId: blog-dev-326403
  artifacts:
    - image: us.gcr.io/blog-dev-326403/auth
      context: auth
      docker:
        dockerfile: Dockerfile
      sync:
        manual:
          - src: 'src/**/.ts'
            dest: .
    - image: us.gcr.io/blog-dev-326403/client
      context: client
      docker:
        dockerfile: Dockerfile
      sync:
        manual:
         - src: 'src/**/.ts'
           dest: .
    - image: us.gcr.io/blog-dev-326403/posts
      context: posts
      docker:
        dockerfile: Dockerfile
      sync:
        manual:
          - src: 'src/**/.ts'
            dest: .

nats-test/src 内に publisher.ts を作成しました

import nats from 'node-nats-streaming';
const stan = nats.connect('posts','abc',{
    url:'http://nats-srv:4222'
});

stan.on('connect',()=>{
    console.log('Publisher connected to nats');
})

スクリプトセクションで以下に示すエントリでpackage.jsonを更新しました

"scripts": {
    "publish": "ts-node-dev --notify false src/publisher.ts",
    "listen": "ts-node-dev --notify false src/listener.ts"
  }

「npm run publish」を実行すると、次のエラーが表示されます

NatsError: Could not connect to server: Error: connect ETIMEDOUT 216.239.36.21:4222
    at Socket.<anonymous> (/home/meanjsbpb/BPB_MEAN_Framework/node_modules/nats/lib/nats.js:833:26)
    at Socket.emit (events.js:223:5)
    at emitErrorNT (internal/streams/destroy.js:92:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
    at processTicksAndRejections (internal/process/task_queues.js:81:21)
[ERROR] 12:48:47 NatsError: Could not connect to server: Error: connect ETIMEDOUT 216.239.36.21:4222

NATS 監視ページは Google クラウドの Web プレビューから表示され、URL はhttps://8222-cs-131594183002-default.cs-asia-southeast1-ajrg.cloudshell.dev/?authuser=1ですが、 http://nats-srv:8222 を使用してブラウザを起動すると、「ページが表示されません」と表示されます。

助けてください!!!

4

0 に答える 0