从 ConfigMap 填充 AWS Alb Ingress 注释
Populating AWS Alb Ingress Annotations from ConfigMap
我正在创建 '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
...
'alb.ingress' 资源注释部分所需的值可在我的 ConfigMap
中找到。
env:
- name: cert_arn
valueFrom:
configMapKeyRef:
name: environmental-variables
key: certification_arn
- name: sg
valueFrom:
configMapKeyRef:
name: environmental-variables
key: security-groups
...
有没有办法使用配置映射来填充注释?
我解决这个挑战的方法是使用 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: ["*"]
希望这对以后的人有所帮助。
我正在创建 '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
...
'alb.ingress' 资源注释部分所需的值可在我的 ConfigMap
中找到。
env:
- name: cert_arn
valueFrom:
configMapKeyRef:
name: environmental-variables
key: certification_arn
- name: sg
valueFrom:
configMapKeyRef:
name: environmental-variables
key: security-groups
...
有没有办法使用配置映射来填充注释?
我解决这个挑战的方法是使用 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: ["*"]
希望这对以后的人有所帮助。