у нас есть шаблон Cloudformation, с помощью которого мы разворачиваем инфраструктуру для нашего продукта. и ниже компонент AWS, который создается с помощью шаблонов CF: 1. Сетевые компоненты. Как VP C, Подсети, Группы безопасности и т. Д. c. 2. Роли и политики IAM. 3. EMR 4. EKS 5. MSK 6. RDS 7. Elasticache
также в наших шаблонах Cloudformation у нас есть несколько пользовательских ресурсов, таких как «Custom :: KubeManifest». через который мы разворачиваем объекты в кластере AWS EKS. одним из наших объектов kubernetes является объект "Сервис". который создает конечные точки служб для внутренних служб, чтобы запросы из сети publi c могли доходить до нашего кластера kubernetes.
мы хотели проверить, можем ли мы ссылаться на существующие имена ELB DNS в шаблонах Cloudformation, чтобы мы могли покажите ELB DnsName в качестве вывода.
Например, когда мы вызываем ресурсы "Custom :: KubeManifest", как показано ниже, шаблон:
ServiceDeployment:
Type: "Custom::KubeManifest"
Version: '1.0'
Properties:
ServiceToken: !Ref KubeManifestLambdaArn
KubeConfigPath: !Sub "s3://${KubeConfigS3Bucket}/${KubeConfigS3Key}"
KubeConfigKmsContext: !Ref KmsContext
Manifest:
apiVersion: v1
kind: Service
metadata:
name: test
labels:
app: client
tier: master
spec:
selector:
app: client
tier: master
ports:
- name: client-api
port: 9877
protocol: TCP
- name: client-snapshots
port: 9878
protocol: TCP
- name: client-support
port: 9881
protocol: TCP
UiDeployment:
Type: "Custom::KubeManifest"
Version: '1.0'
Properties:
ServiceToken: !Ref KubeManifestLambdaArn
KubeConfigPath: !Sub "s3://${KubeConfigS3Bucket}/${KubeConfigS3Key}"
KubeConfigKmsContext: !Ref KmsContext
Manifest:
apiVersion: v1
kind: Service
metadata:
name: client-ui
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*'
service.beta.kubernetes.io/aws-load-balancer-type: nlb
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: 'tcp'
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "tcp"
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
labels:
app: client
tier: master
spec:
type: LoadBalancer
selector:
app: client
tier: master
ports:
- name: client-ui
port: 80
protocol: TCP
targetPort: 8800
- name: client-ui-https
port: 443
protocol: TCP
targetPort: 8800
создает ELB в учетной записи AWS и сопоставляет его с конечными точками службы в кластере EKS. Теперь мы хотим знать, что если с помощью любых функций мы можем ссылаться на вновь созданный ELB DnsNames и показывать его как Output.