首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用AWS Route 53作为裸机K8s群集的域名服务提供商?

是否可以使用AWS Route 53作为裸机K8s群集的域名服务提供商?
EN

Stack Overflow用户
提问于 2020-02-18 01:35:14
回答 2查看 238关注 0票数 0

我想使用路由53作为裸机k8s群集的域名系统提供商。我在互联网上找到了一些指南,但它们都是针对云k8s集群的。

以前有人这么做过吗?

EN

回答 2

Stack Overflow用户

发布于 2020-02-20 03:52:21

我已经成功地在我的本地K8s集群上设置了它。我使用了“外部dns”-在本地运行(https://github.com/kubernetes-sigs/external-dns),这是我在亚马逊网络服务方面所做的:

在AWS上

创建以下资源:

代码语言:javascript
复制
IAM user k8s-r53-user
IAM policy assume-role-policy (attached to the k8s-r53-user)
IAM policy allow-k8s-r53-connection
IAM role k8s-r53-role (allow-k8s-r53-connection policy attached to this role)

1-创建IAM资源:

代码语言:javascript
复制
     $ aws iam create-user --user-name k8s-r53-user

2-创建策略(非常通用):

policy-document1.json

代码语言:javascript
复制
        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "iam:ListRoles",
                        "sts:AssumeRole"
                    ],
                    "Resource": "*"
                }
            ]
        }

运行:

代码语言:javascript
复制
$ aws iam create-policy --policy-name assume-role-policy --policy-document policy-document1.json

3-将策略附加到k8s-r53-user:

代码语言:javascript
复制
$ aws iam attach-user-policy --user-name k8s-r53-user --policy-arn "arn:aws:iam::${account_id}:policy/assume-role-policy"

检查:

代码语言:javascript
复制
$ aws iam list-attached-user-policies --user-name k8s-r53-user

4-创建将附加到角色的IAM策略。

policy-document2.json:

代码语言:javascript
复制
        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "route53:ChangeResourceRecordSets"
                    ],
                    "Resource": "arn:aws:route53:::hostedzone/*"
                },
            {
              "Effect": "Allow",
              "Action": [
                "route53:ListHostedZones",
                "route53:ListResourceRecordSets"
              ],
              "Resource": [
                "*"
              ]
            }
        
            ]
        }

运行:

代码语言:javascript
复制
$ aws iam create-policy --policy-name allow-k8s-r53-connection --policy-document policy-document2.json

5-创建IAM角色:

应用程序-角色-信任-策略.json:

代码语言:javascript
复制
        {
            "Version": "2012-10-17",
            "Statement": {
                "Effect": "Allow",
                "Principal": { "AWS": "arn:aws:iam::<account_id>:root" },
                "Action": "sts:AssumeRole"
            }
        }

运行:

代码语言:javascript
复制
$ aws iam create-role --role-name k8s-r53-role --assume-role-policy-document application-role-trust-policy.json

6-在本地服务器上配置K8S-R53-用户

为K8S-R53-user创建访问密钥:

代码语言:javascript
复制
$ aws iam create-access-key --user-name k8s-r53-user

  • 使用上一个命令输出中的值并运行:

代码语言:javascript
复制
$ aws configure
    AWS Access Key ID []: xxx
    AWS Secret Access Key []: xxx
    Default region name []:
    Default output format [None]:

K8s端

遵循外部Dns页面上的指南,“本地运行”一节,唯一变化的部分是结尾:

运行:

代码语言:javascript
复制
$ builds/external-dns --registry txt --provider=aws --aws-assume-'role=arn:aws:iam::${account_id}:role/k8s-r53-role --source service --once --dry-run'

代替:

代码语言:javascript
复制
$ external-dns --registry txt --txt-owner-id my-cluster-id --provider google --google-project example-project --source service --once --dry-run

参考文献

https://medium.com/@lvthillo/connect-on-premise-python-application-with-aws-services-using-roles-8b24ab4872e6

External DNS official repo

票数 3
EN

Stack Overflow用户

发布于 2020-02-18 16:48:28

是的,外部dns的配置与运行Kubernetes的方式/位置完全不同。您需要做的惟一不同的事情是创建一个具有正确权限的专用IAM用户,并将凭据插入到正确的环境变量中。我们对GKE集群执行相同的操作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60267737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档