我想运行一个名为rstudio软件包管理器的应用程序。部署后,它具有一些要运行的终端命令。有什么方法可以在部署文件中添加这些命令?我尝试过这种方式,但出现崩溃环回错误。我是编写部署文件的新手。我是在做错什么还是弄乱了语法?
apiVersion: apps/v1
kind: Deployment
metadata:
name: rspm-deployment
spec:
selector:
matchLabels:
app: rspm
replicas: 1
template:
metadata:
labels:
app: rspm
spec:
nodeSelector:
kubernetes.io/hostname: nckaoepekin.local
containers:
- env:
- name: RSPM_LICENSE
value: my_license_key
image: rstudio/rstudio-package-manager:latest
name: rstudio-package-manager
command: ["/bin/sh"]
args: ["-c", "alias rspm='/opt/rstudio-pm/bin/rspm'; rspm create repo --name=prod-cran --description='Access CRAN packages'; rspm subscribe --repo=prod-cran --source=cran; rspm sync"]
ports:
- containerPort: 4242
resources: {}
securityContext:
privileged: true
restartPolicy: Always
status: {}
---
kind: Service
apiVersion: v1
metadata:
name: rstudio-pm
spec:
selector:
app: rspm
ports:
- protocol: TCP
port: 4242
targetPort: 4242
nodePort: 31010
type: NodePort
我要添加这些终端命令(也在上面指定)
alias rspm='/opt/rstudio-pm/bin/rspm'
rspm create repo --name=prod-cran --description='Access CRAN packages'
rspm subscribe --repo=prod-cran --source=cran
rspm sync
当我删除指定的命令和参数时,部署文件正在工作。但是,当我添加命令和参数时,我遇到了crashloopback错误。任何线索将不胜感激。谢谢
答案 0 :(得分:2)
您可以使用poststart钩子here
lifecycle:
postStart:
exec:
command:
- "sh"
- "-c"
- |
alias rspm='/opt/rstudio-pm/bin/rspm' &&
rspm create repo --name=prod-cran --description='Access CRAN packages'&&
rspm subscribe --repo=prod-cran --source=cran &&
rspm sync
答案 1 :(得分:1)
我在所有bash命令之后添加了睡眠功能,因为这些文件需要花费时间才能执行。
exec:
command:
- "sh"
- "-c"
- |
alias rspm='/opt/rstudio-pm/bin/rspm' &&
sleep 5 &&
rspm create repo --name=prod-cran --description='Access CRAN packages' &&
sleep 5 &&
rspm subscribe --repo=prod-cran --source=cran &&
sleep 5 &&
rspm sync
成功了!
答案 2 :(得分:0)
尝试使用postStart
容器生命周期事件,如显示here
cat > postStart.sh <<
alias rspm='/opt/rstudio-pm/bin/rspm'
rspm create repo --name=prod-cran --description='Access CRAN packages'
rspm subscribe --repo=prod-cran --source=cran
rspm sync
EOF
lifecycle:
postStart:
exec:
command:
- /bin/bash
- postStart.sh