我有简单的单页golang web应用程序,我正在尝试迁移到istio。
我的prod设置(通过nginx入口):
const walletOne = accounts[1];
return deployer
.then(() => {
return deployer.deploy(MySuperCoin);
})
.then(() => {
return deployer.deploy(
MySuperCoinPresaleOne,
openingTimeOne,
closingTimeOne,
rateOne,
walletOne,
capOne,
MySuperCoin.address
);
});
我正在尝试为istio构建至少http配置
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: goapp
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
spec:
tls:
- hosts:
- mycustomapp.mycustomapp.com
secretName: go-tls
rules:
- host: mycustomapp.mycustomapp.com
http:
paths:
- path: /
backend:
serviceName: mycustomapp
servicePort: 80
但是我总是通过istio lb在istio lb上获得404,只安装了istio 0.7.1。像bookinfo和httpbin这样的样本效果很好
申请表:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: goapp
annotations:
kubernetes.io/ingress.class: istio
spec:
rules:
- host: mycustomapp.mycustomapp.com
http:
paths:
- path: /
backend:
serviceName: mycustomapp
servicePort: 80
答案 0 :(得分:0)
要消除您的情况下的404错误,应该足以将正确的端口名称添加到服务和部署YAML文件,并将istio sidecar添加到部署YAML文件。然后,您应该重新部署所有已更改的文件。
也许您可能需要在服务和部署中添加标签app: mycustomapp
,但我不确定它是必需的还是可选的。
以下是具有正确端口名称的service.yaml文件示例(有关您可以阅读的端口名称here的更多信息):
kind: Service
apiVersion: v1
metadata:
annotations:
prometheus.io/scrape: 'true'
labels:
app: mycustomapp
k8s-app: mycustomapp
name: mycustomapp
spec:
type: ClusterIP
ports:
- name: http-80
port: 80
targetPort: 80
selector:
k8s-app: mycustomapp
确保部署文件中还有正确的端口名称。
您可以按照以下步骤手动将istio sidecar添加到容器中:
将目录更改为istio包。例如,如果包是istio-0.7
cd istio-0.7
创建注入配置:
kubectl create -f install/kubernetes/istio-sidecar-injector-configmap-release.yaml --dry-run -o=jsonpath='{.data.config}' > inject-config.yaml
创建网格配置:
kubectl -n istio-system get configmap istio -o=jsonpath='{.data.mesh}' > mesh-config.yaml
将istio sidecar容器添加到您的部署中:
bin/istioctl kube-inject \
--injectConfigFile inject-config.yaml \
--meshConfigFile mesh-config.yaml \
--filename path/to/original/deployment.yaml \
--output deployment-injected.yaml
部署新部署: kubectl apply -f deployment -jected.yaml
如果您想进行自动边车注射,请按照this手册进行操作。
您可以检查边车是否已注入部署中:
$ kubectl get deployment mycustomapp -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
mycustomapp 1 1 1 1 3h mycustomapp,istio-proxy nginx:1.7.9,docker.io/istio/proxy:0.7.1 k8s-app=mycustomapp