英文:
K8s app installed using Helm does not show up in Helm list table
问题
我正在尝试使用一个简单的nginx图表来学习Helm,该图表创建一个单独的Pod和Service。
我想将其安装到指定的命名空间(在这种情况下为"dev")。
我的图表包括两个模板,一个用于部署以创建Pod,另一个用于Service以映射端口到容器。
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "nginx.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels:
{{- include "nginx.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount | default 1 }}
selector:
matchLabels:
{{- include "nginx.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "nginx.selectorLabels" . | nindent 8 }}
spec:
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.containerport }}
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
service.yaml
apiVersion: v1
kind: Service
metadata:
name: {{ include "nginx.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels:
{{- include "nginx.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
nodePort: {{ .Values.service.nodePort }}
protocol: TCP
name: http
selector:
{{- include "nginx.selectorLabels" . | nindent 4 }}
而values文件如下:
values-dev.yaml
replicaCount: 1
image:
repository: nginx
pullPolicy: IfNotPresent
# 覆盖默认的图像标签,其默认值为图表的appVersion。
tag: ""
service:
type: NodePort
containerport: 80
port: 80
nodePort: 31010
resources:
limits:
memory: 256Mi
cpu: "250m"
requests:
memory: 128Mi
cpu: "80m"
当我运行我的Helm命令时:
helm install dev-nginx ./ --namespace dev --create-namespace --values values-dev.yaml
Helm似乎正在将所有必需的内容安装到正确的命名空间中。
NAME: dev-nginx
LAST DEPLOYED: Wed Jun 14 18:22:03 2023
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
但当我运行 helm list
时,安装不会显示在表格中。
helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
如果我使用 kubectl
进行验证,我可以看到所有内容。
kubectl get all -n dev
NAME READY STATUS RESTARTS AGE
pod/dev-nginx-5bff4b9659-mxmrb 1/1 Running 0 2m27s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dev-nginx NodePort 10.109.251.249 <none> 80:31010/TCP 2m27s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/dev-nginx 1/1 1 1 2m27s
NAME DESIRED CURRENT READY AGE
replicaset.apps/dev-nginx-5bff4b9659 1 1 1 2m27s
如果我不尝试控制命名空间,允许Helm部署到默认的命名空间,安装会显示在 helm install
表格中。
使用Helm安装到自定义命名空间是可能的,我只是犯了一个错误吗?
非常感谢。
英文:
I'm trying to learn Helm using a simple nginx chart that creates a single pod and service.
I want to install this into a specified namespace (dev in this case).
My chart comprises x2 templates, x1 for the deployment to create the pod, and x1 for a service to map a port to the container.
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "nginx.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels:
{{- include "nginx.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount | default 1 }}
selector:
matchLabels:
{{- include "nginx.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "nginx.selectorLabels" . | nindent 8 }}
spec:
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.containerport }}
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
service.yaml
apiVersion: v1
kind: Service
metadata:
name: {{ include "nginx.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels:
{{- include "nginx.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
nodePort: {{ .Values.service.nodePort }}
protocol: TCP
name: http
selector:
{{- include "nginx.selectorLabels" . | nindent 4 }}
And the values file looks like this:
values-dev.yaml
replicaCount: 1
image:
repository: nginx
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: ""
service:
type: NodePort
containerport: 80
port: 80
nodePort: 31010
resources:
limits:
memory: 256Mi
cpu: "250m"
requests:
memory: 128Mi
cpu: "80m"
When I run my Helm command:
helm install dev-nginx ./ --namespace dev --create-namespace --values values-dev.yaml
Helm does seem to be installing everything required into the right namespace.
NAME: dev-nginx
LAST DEPLOYED: Wed Jun 14 18:22:03 2023
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
But when I run a helm list
the installation does not show up in the table.
helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
I can see everything if I verify using kubectl
.
k get all -n dev
NAME READY STATUS RESTARTS AGE
pod/dev-nginx-5bff4b9659-mxmrb 1/1 Running 0 2m27s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dev-nginx NodePort 10.109.251.249 <none> 80:31010/TCP 2m27s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/dev-nginx 1/1 1 1 2m27s
NAME DESIRED CURRENT READY AGE
replicaset.apps/dev-nginx-5bff4b9659 1 1 1 2m27s
If I don't try to control the namespace and allow Helm to deploy into the 'default' namespace, the install shows up in the helm install
table.
Is using Helm to install to a custom namespace possible and I am just making a mistake?
Many thanks
答案1
得分: 0
helm list
命令将显示在 default
命名空间中安装的 Helm 图表,而你将其安装在 dev
命名空间中。
只需运行 helm list -n dev
来显示在 dev 命名空间中的安装,或者运行 helm list -A
来显示所有命名空间中的安装。
英文:
The helm list
command will give you the installed helm chart in the default
namespace and you installed it in dev
namespace.
Just run helm list -n dev
to show installations in dev namespace or helm list -A
for all namespaces.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论