![如何在 kubernetes 中使用开放服务网格?](https://linux22.com/image/788335/%E5%A6%82%E4%BD%95%E5%9C%A8%20kubernetes%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%BC%80%E6%94%BE%E6%9C%8D%E5%8A%A1%E7%BD%91%E6%A0%BC%EF%BC%9F.png)
我正在尝试为我们的应用程序测试开放服务网格。
serverfault 中没有 service mesh、servicemesh、osm 或 open service mesh 等标签。因此,我将 istio 保留为该问题的 serverfault 标签,因为它也是 service mesh 的类似产品。
因此,使用此命令在我的笔记本电脑上安装了 osm cli关联
在我的 kubernetes(minikube)中,使用以下命令安装 osm:
osm install
这将 osm 安装在命名空间 osm-system 中
然后使用他们的文档
他们的书店应用程序运行良好。
我的 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 的话它也能正常工作。
因此,使用以下命令为该 mongosample 命名空间启用 osm:
osm namespace add mongosample
启用并重新启动 Pod 后:
mongo-express 日志中的错误
如果我删除服务网格到这个命名空间然后工作正常。
osm namespace remove mongosample
请建议如何修复该问题?