#amazon-eks
#amazon-eks
Вопрос:
Я создаю ресурс alb.ingress как часть моей диаграммы управления.
apiVersion: extenstions/v1beta1
kind: Ingress
metadate:
annotation:
alb.ingress.kubernetes.io/certification-arn: $cert_arn
alb.ingress.kubernetes.io/security-group: $sg
...
Значения, требуемые в разделах аннотаций ресурсов alb.ingress, доступны в my ConfigMap
.
env:
- name: cert_arn
valueFrom:
configMapKeyRef:
name: environmental-variables
key: certification_arn
- name: sg
valueFrom:
configMapKeyRef:
name: environmental-variables
key: security-groups
...
Есть ли способ заполнить аннотации с помощью config-map?
Ответ №1:
Способ, которым я решил эту проблему, заключался в создании входного ресурса с использованием 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:
....
Я использовал модуль (задание также является опцией) для аннотирования вновь созданного входного ресурса с использованием значений среды из 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
Обратите внимание, что модуль должен иметь правильную учетную запись службы с правильными правами доступа, к которой прикреплены роли. Например, в этом случае, чтобы модуль мог аннотировать ALB, у него должны были быть extensions
apiGroup и входные ресурсы в списке разрешений (я еще не ограничил формулировку).
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: service-account-role
rules:
- apiGroups:
- ""
- extensions
resources:
- ingresses
verbs: ["*"]
Надеюсь, это поможет кому-то в будущем.