我不确定这个问题有多愚蠢或不合理,但我们正在尝试是否可以以任何方式做到这一点。
我有一个.bash文件。当我调用一个url的时候,我想运行它。
当我在浏览器上调用这段代码时,假设url为https://domainname.com/jobapi,这应该会调用容器上的.bash脚本。
这真的可能吗?如果可能,我想知道我是否需要将此脚本添加为部署或作业?
发布于 2020-06-02 23:23:29
在查看Kubernetes之前,第一步是配置web服务器来运行您的脚本。这可以是一个通用的web服务器,如nginx或Apache,您可以将您的脚本添加为CGI脚本。有很多教程可以解释如何编写CGI脚本。
根据应用程序的需求,简单的HTTP挂钩服务器可能是更好的匹配。例如,让我们来看看https://github.com/adnanh/webhook。
无论哪种方式,在尝试在Kubernetes中创建pod以及潜在的服务和入口之前,请先尝试使用Docker。
在第二步中,为了能够访问您的服务(调用您的脚本的服务器),您需要创建一个pod,可能是通过一个部署,并且可能是一个服务和它的入口。
Kubernetes作业用于运行脚本(或其他程序)一次。它们对于自动化应用程序的维护任务最为有用。
发布于 2020-06-03 03:10:40
我会尝试做的是run the shell script from a php file。否则,您将需要某种类型的驱动程序来触发脚本。
因此,您可以将脚本作为常规可执行文件,并在收到请求时,php将通过shell执行它。
实际上你可以让它像一个API;domain.com/job1可以执行job1,domain.com/jobn可以执行jobn等等。
现在,我所描述的方式只能作为Deployment工作,因为您希望服务器始终处于启动状态并准备好接收请求。
发布于 2020-07-29 13:04:33
入口服务:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: "domainame.com"
http:
paths:
- path: /jobapi
pathType: Prefix
backend:
serviceName: my-service
servicePort: 8080my-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
selector:
app: MyApp
ports:
nodePort: 30007
port: 8080
targetPort: 8080运行bash脚本,这可以通过定义部署或pod Pod来完成:
k run MyApp --image=nginx --labels=app=MyApp --port=8080 -- /bin/sh -c echo 'Im up'
或
Deployment.yaml
controllers/nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: MyAppdep
spec:
replicas: 2
selector:
matchLabels:
app: MyApp
template:
metadata:
labels:
app: MyApp
spec:
containers:
- name: nginx
image: nginx:1.14.2
commands: ["/bin/sh","-c","echo 'test'"]
ports:
- containerPort: 8080https://stackoverflow.com/questions/62154278
复制相似问题