如何在 kubernetes 中使用开放服务网格?

如何在 kubernetes 中使用开放服务网格?

我正在尝试为我们的应用程序测试开放服务网格。

serverfault 中没有 service mesh、servicemesh、osm 或 open service mesh 等标签。因此,我将 istio 保留为该问题的 serverfault 标签,因为它也是 service mesh 的类似产品。

因此,使用此命令在我的笔记本电脑上安装了 osm cli关联

在我的 kubernetes(minikube)中,使用以下命令安装 osm:

osm install

这将 osm 安装在命名空间 osm-system 中

osm 豆荚

然后使用他们的文档

他们的书店应用程序运行良好。

我的 spec.traffic.enablePermissiveTrafficPolicyMode 仍然为真,因此不需要任何规则,并且默认情况下应该允许所有流量。

因此为了测试,我确实尝试了 mondo-express 和 mongo 容器。

apiVersion: v1
kind: ConfigMap
metadata:
  name: mongodb-configmap
  namespace: mongosample
data:
  database_url:  mongodb-service
---
apiVersion: v1
kind: Namespace
metadata:
  name: mongosample
---
apiVersion: v1
kind: Secret
metadata:
  name: mongodb-secret
  namespace: mongosample
type: Opaque
data:
  mongo-root-username:  dXNlcm5hbWU=
  mongo-root-password:  cGFzc3dvcmQ=


##echo -n 'username' | base64
##echo -n 'password' | base64
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo-express
  namespace: mongosample
  labels:
    app: mongo-express
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo-express
  template:
    metadata:
      labels:
        app: mongo-express
    spec:
      imagePullSecrets:
        - name: dockerhub-secret
      containers:
        - name: mongo-express
          image: mongo-express:latest
          ports:
          - containerPort: 8081
          env:
          - name: ME_CONFIG_MONGODB_ADMINUSERNAME
            valueFrom:
              secretKeyRef:
                name: mongodb-secret
                key: mongo-root-username
          - name: ME_CONFIG_MONGODB_ADMINPASSWORD
            valueFrom:
              secretKeyRef:
                name: mongodb-secret
                key: mongo-root-password
          - name: ME_CONFIG_MONGODB_SERVER
            valueFrom:
              configMapKeyRef:
                name: mongodb-configmap
                key: database_url
---
apiVersion: v1
kind: Service
metadata:
  namespace: mongosample
  name: mongodb-express-service
spec:
  selector:
    app: mongo-express
  type: ClusterIP
  ports:
    - protocol: TCP
      port: 8081
      targetPort: 8081
      #nodePort: 30000
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodb-deployment
  namespace: mongosample
  labels:
    app: mongodb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      imagePullSecrets:
        - name: dockerhub-secret
      containers:
        - name: mongodb
          image: mongo:latest
          ports:
          - containerPort: 27017
          env:
          - name: MONGO_INITDB_ROOT_USERNAME
            valueFrom:
              secretKeyRef:
                name: mongodb-secret
                key: mongo-root-username
          - name: MONGO_INITDB_ROOT_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mongodb-secret
                key: mongo-root-password
---
apiVersion: v1
kind: Service
metadata:
  namespace: mongosample
  name: mongodb-service
spec:
  selector:
    app: mongodb
  ports:
    - protocol: TCP
      port: 27017
      targetPort: 27017

没有 osm 的话它也能正常工作。

没有 osm pod

因此,使用以下命令为该 mongosample 命名空间启用 osm:

osm namespace add mongosample

启用并重新启动 Pod 后:

osm 已启用 pod

mongo-express 日志中的错误

mongo-express 中的错误

如果我删除服务网格到这个命名空间然后工作正常。

osm namespace remove mongosample

请建议如何修复该问题?

相关内容