#amazon-web-services #terraform #amazon-eks #packer
#amazon-web-services #терраформирование #амазонка-экс #упаковщик
Вопрос:
Цель моих усилий: создать узел EKS с пользовательским AMI (ubuntu)
Заявление о проблеме: при создании aws_eks_node_group вместе с launch_template я получаю сообщение об ошибке:
Ошибка: ошибка ожидания создания группы узлов EKS (qa-svr-centinela-eks-cluster01:qa-svr-centinela-nodegroup01): AsgInstanceLaunchFailures: не удалось запустить экземпляры по требованию. Не поддерживается — запрошенная конфигурация в настоящее время не поддерживается. Пожалуйста, проверьте документацию на наличие поддерживаемых конфигураций. Не удалось запустить экземпляр EC2.. Идентификаторы ресурсов: [eks-82bb24f0-2d7e-ba9d-a80a-bb9653cde0c6]
Пока что исследования: согласно AWS, мы можем начать использовать пользовательские AMI для EKS. Теперь пользовательский образ ubuntu, который я использую, создается с помощью Packer, и я шифровал загрузку и использовал для этой цели внешний ключ AWS KMS. Сначала я подумал, что, возможно, проблема с шифрованием, используемым для AMI. Поэтому я удалил шифрование для AMI из кода упаковщика. Но это не решило проблему. Может быть, я не думаю в правильном направлении?
Любая помощь приветствуется. Спасибо.
Используемый код Terraform приведен в сообщении ниже.
Я пытаюсь создать группу узлов EKS с помощью шаблона запуска. Но попадание в ошибку.
код упаковщика
source "amazon-ebs" "ubuntu18" {
ami_name = "pxx3"
ami_virtualization_type = "hvm"
tags = {
"cc" = "sxx1"
"Name" = "packerxx3"
}
region = "us-west-2"
instance_type = "t3.small"
# AWS Ubuntu AMI
source_ami = "ami-0ac73f33a1888c64a"
associate_public_ip_address = true
ebs_optimized = true
# public subnet
subnet_id = "subnet-xx"
vpc_id = "vpc-xx"
communicator = "ssh"
ssh_username = "ubuntu"
}
build {
sources = [
"source.amazon-ebs.ubuntu18"
]
provisioner "ansible" {
playbook_file = "./ubuntu.yml"
}
}
ubuntu.yml — используется только для установки нескольких библиотек
---
- hosts: default
gather_facts: no
become: yes
tasks:
- name: create the license key for new relic agent
shell: |
curl -s https://download.newrelic.com/infrastructure_agent/gpg/newrelic-infra.gpg | apt-key add - amp;amp;
printf "deb [arch=amd64] https://download.newrelic.com/infrastructure_agent/linux/apt bionic main" | tee -a /etc/apt/sources.list.d/newrelic-infra.list
- name: check sources.list
shell: |
cat /etc/apt/sources.list.d/newrelic-infra.list
- name: apt-get update
apt: update_cache=yes force_apt_get=yes
- name: install new relic agent
package:
name: newrelic-infra
state: present
- name: update apt-get repo and cache
apt: update_cache=yes force_apt_get=yes
- name: apt-get upgrade
apt: upgrade=dist force_apt_get=yes
- name: install essential softwares
package:
name: "{{ item }}"
state: latest
loop:
- software-properties-common
- vim
- nano
- glibc-source
- groff
- less
- traceroute
- whois
- telnet
- dnsutils
- git
- mlocate
- htop
- zip
- unzip
- curl
- ruby-full
- wget
ignore_errors: yes
- name: Add the ansible PPA to your system’s sources list
apt_repository:
repo: ppa:ansible/ansible
state: present
mode: 0666
- name: Add the deadsnakes PPA to your system’s sources list
apt_repository:
repo: ppa:deadsnakes/ppa
state: present
mode: 0666
- name: install softwares
package:
name: "{{ item }}"
state: present
loop:
- ansible
- python3.8
- python3-winrm
ignore_errors: yes
- name: install AWS CLI
shell: |
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install
конфигурация aws_eks_node_group.
resource "aws_eks_node_group" "nodegrp" {
cluster_name = aws_eks_cluster.eks.name
node_group_name = "xyz-nodegroup01"
node_role_arn = aws_iam_role.eksnode.arn
subnet_ids = [data.aws_subnet.tf_subnet_private01.id, data.aws_subnet.tf_subnet_private02.id]
scaling_config {
desired_size = 2
max_size = 2
min_size = 2
}
depends_on = [
aws_iam_role_policy_attachment.nodepolicy01,
aws_iam_role_policy_attachment.nodepolicy02,
aws_iam_role_policy_attachment.nodepolicy03
]
launch_template {
id = aws_launch_template.eks.id
version = aws_launch_template.eks.latest_version
}
}
конфигурация aws_launch_template.
resource "aws_launch_template" "eks" {
name = "${var.env}-launch-template"
update_default_version = true
block_device_mappings {
device_name = "/dev/sda1"
ebs {
volume_size = 50
}
}
credit_specification {
cpu_credits = "standard"
}
ebs_optimized = true
# AMI generated with packer (is private)
image_id = "ami-0ac71233a184566453"
instance_type = t3.micro
key_name = "xyz"
network_interfaces {
associate_public_ip_address = false
}
}
Комментарии:
1. Можете ли вы предоставить фактический код, а не скриншоты кода? Также каковы значения ваших переменных?
2. готово, спасибо, что указали.
3. Значения переменных, используемых в источнике экземпляра?
4. экземпляр t3.micro с 50 ГБ диска. И я удалил переменные. Спасибо
5. Вы проверили первоначальную документацию github.com/terraform-aws-modules/terraform-aws-eks/tree/master / … Я думаю, это то, что вам нужно.