我是Kubernetes在GCE-GKE中的新手,我试图使用skaffold.Yaml在GCE-GKE集群中构建和部署nodeJS应用程序。我可以看到镜像在构建和部署时没有任何问题,但是当我试图在浏览器上访问获取index.ts文件时,我做不到。我真的不明白哪里可能出了问题,或者我可能在LB或入口nginx上遗漏了什么。
下面的id为skaffold.yaml
apiVersion: skaffold/v2alpha3
kind: Config
deploy:
kubectl:
manifests:
- ./infra/k8s/*
build:
# local:
# push: false
googleCloudBuild:
projectId: xxxxxxxxxxxx
artifacts:
- image: us.gcr.io/xxxxxxxxxxx/auth
context: auth
docker:
dockerfile: Dockerfile
sync:
manual:
- src: 'src/**/*.ts'
dest: .下面是ingress srv.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: ticketing.dev
http:
paths:
- path: /api/users/?(.*)
backend:
serviceName: auth-srv
servicePort: 3000下面是auth-dede.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: auth-depl
spec:
replicas: 1
selector:
matchLabels:
app: auth
template:
metadata:
labels:
app: auth
spec:
containers:
- name: auth
image: us.gcr.io/xxxxxxxxxxxxx/auth
---
apiVersion: v1
kind: Service
metadata:
name: auth-srv
spec:
selector:
app: auth
ports:
- name: auth
protocol: TCP
port: 3000
targetPort: 3000下面是package.json
{
"name": "auth",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "ts-node-dev --poll src/index.ts"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@types/express": "^4.17.6",
"express": "^4.17.1",
"nodemon": "^2.0.4",
"typescript": "^3.9.5"
},
"devDependencies": {
"ts-node-dev": "^1.0.0-pre.44"
}
}下面是index.ts
import express from 'express';
import { json } from 'body-parser';
const app = express();
app.use(json());
// /api/users/currentuser
app.get('/users', (req, res) => {
res.send('Hello');
});
app.listen(3000, () => {
console.log('Great');
console.log('listening on port 3000!!!!!');
});下面是docker文件
FROM node:alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]发布于 2020-06-07 17:20:30
您使用哪些工具来管理域配置?
步骤1:据我所知,在您的k8s集群上初始化nginx后,您需要添加DNS记录,将您的域(ticketing.dev)中的一个域(或子域)映射到nginx为您重新生成的k8s集群的外部IP或外部DNS (我通常使用A记录)。
步骤2:之后,当您部署应用程序时,您需要将您的应用程序的域名(您在入口yaml文件中指定的域名)设置为上述(A)记录的CNAME记录。
您可以使用nslookup命令验证您的域验证。如果您域不使用代理,则上述两个域(A和CNAME记录)将被解析为您的k8s群集的同一外部IP。
上面两个步骤的目的是让DNS服务器知道当DNS服务器收到询问任何子域(域)的请求时要解析的位置(哪个IP)。这就是为什么可以使用nslookup命令来验证配置原因。
下面是我用来管理域名的工具:https://www.namecheap.com/support/knowledgebase/article.aspx/9607/2210/how-to-set-up-dns-records-for-your-domain-in-cloudflare-account example
https://stackoverflow.com/questions/62236898
复制相似问题