我正在创建一个“alb.ingress”资源,作为我的Helm图表的一部分。
apiVersion: extenstions/v1beta1
kind: Ingress
metadate:
annotation:
alb.ingress.kubernetes.io/certification-arn: $cert_arn
alb.ingress.kubernetes.io/security-group: $sg
...my ConfigMap中提供了'alb.ingress‘资源注释部分中所需的值。
env:
- name: cert_arn
valueFrom:
configMapKeyRef:
name: environmental-variables
key: certification_arn
- name: sg
valueFrom:
configMapKeyRef:
name: environmental-variables
key: security-groups
...有没有办法使用config-map来填充注释?
发布于 2020-12-11 13:09:38
我解决这一挑战的方法是使用Helm和我在创建资源之前拥有的变量来创建入口资源,例如应用程序的名称、名称空间等。
apiVersion: extenstions/v1beta1
kind: Ingress
metadata:
name: "{{ .Values.application.name }}-ingress"
namespace: "{{ .Values.env.name }}"
labels:
app: "{{ .Values.application.name }}"
specs:
rules:
- host: "{{ .Values.environment.name }}.{{ .Values.application.name }}.{{ .Values.domain.name }}"
https:
....我使用pod (作业也是一个选项)来注释新创建的入口资源(使用configmap中的环境值)。
apiVersion: extenstions/v1beta1
kind: Ingress
metadate:
name: annotate-ingress-alb
spec:
serviceAccountName: internal-kubectl
containers:
- name: modify-alb-ingress-controller
image: "{{ .Values.images.varion }}"
command: ["sh", "-c"]
args:
- '...
kubectl annotate ingress -n {{ .Values.env.name }} {{ .Values.application.name }}-ingress alb.ingress.kubernetes.io/certificate-arn=$CERT_ARN;
env:
- name: cert_arn
valueFrom:
configMapKeyRef:
name: environmental-variables
key: certification_arn请注意,pod应该具有正确的服务帐户,并且附加了正确的权限角色。例如,在本例中,为了让pod能够注释ALB,它必须在权限列表中包含extensions apiGroup和入口资源(我还没有限制该措辞)。
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: service-account-role
rules:
- apiGroups:
- ""
- extensions
resources:
- ingresses
verbs: ["*"]希望这对将来的人有所帮助。
https://stackoverflow.com/questions/65211284
复制相似问题