我是kubernetes
和Azure Kubernetes服务的新手,在通过直接应用YAML
文件创建Deployment
对象时遇到了问题。
我在Azure容器注册表中有一个镜像,其中有一个需要env变量的NodeJs应用程序。
这是我用来创建图像的Dockerfile
:
FROM node:18.15.0
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]
字符串
我创建了一个ConfigMap
,如下所示:
kind: ConfigMap
metadata:
name: catsapi-env
namespace: catsapi
data:
.env: |
CONTAINER_ID= <COSMOS_CONTAINER>
COSMOS_ENDPOINT= <COSMOS_ENDPOINT>
COSMOS_KEY= <COSMOS_KEY>
DATABASE_ID= <DATABASE_ID>
PORT= <PORT>
型
在配置Map中,我也尝试逐个列出键,而不是使用.env: |
这是Deployment
kind: Deployment
metadata:
name: catsapi-deployment
namespace: catsapi
spec:
replicas: 1
selector:
matchLabels:
app: catsapi
template:
metadata:
labels:
app: catsapi
spec:
containers:
- name: catsapi-container
image: <container-registry>
ports:
- containerPort: 3000
env:
- name: CONTAINER_ID
valueFrom:
configMapKeyRef:
name: catsapi-env
key: CONTAINER_ID
- name: COSMOS_ENDPOINT
valueFrom:
configMapKeyRef:
name: catsapi-env
key: COSMOS_ENDPOINT
- name: COSMOS_KEY
valueFrom:
configMapKeyRef:
name: catsapi-env
key: DATABASE_ID
- name: PORT
valueFrom:
configMapKeyRef:
name: catsapi-env
key: PORT
型
当AKS执行这个命令时,我得到了CreateContainerConfigError
。有什么想法吗?我也试过将XNUMX Map挂载为卷或envFrom
属性,但也失败了。
1条答案
按热度按时间n3ipq98p1#
CreateContainerConfigError
意味着您在pod规范中配置容器的方式存在问题。可能的问题:
1.图片名称:请确保将部署中的
<container-registry>
占位符替换为完全限定的映像名称(例如,myregistry.azurecr.io/myimage:latest
)。此外,请确保AKS具有从Azure容器注册表提取所需的权限。1.ConfigMap引用:您在Deployment中既有多行格式(
.env: |
),也有单独的key引用,为了简单起见,请坚持一种格式。1.创建ConfigMap:请确保在部署应用之前,在
catsapi
命名空间中创建了ConfigMap,顺序很重要。1.命名空间:确保
catsapi
命名空间存在,如果不存在,请创建命名空间或将资源部署到默认命名空间。我试着在我的AKS示例中使用following,它起作用了。
1.配置Map:
字符串
1.部署:
型
如果这不起作用,请尝试通过描述pod来深入了解错误,以获得有关错误的更多详细信息:
型