K8s实战4-使用Helm在Azure上部署Ingress-Nginx和Tokengateway

手动发布Ingress-Nginx

1 登录到aks(dfinder-gw-aks)

az login

az account set --subscription ${sub ID}

az aks get-credentials --resource-group {groupname} --name {aks name}

2 下载 ingress-nginx-4.2.5.tgz

curl -LO https://github.com/kubernetes/ingress-nginx/releases/download/helm-chart-4.7.1/ingress-nginx-4.7.1.tgz

3 解压,修改文件

sudo tar -xvf ingress-nginx-4.2.5.tgz && sudo cd ingress-nginx

XML 复制代码
commonLabels: {}



controller:

  name: controller

  image:

    registry: registry.cn-hangzhou.aliyuncs.com # 根据自己情况修改

    image: google_containers/nginx-ingress-controller # 同上  

    tag: "v1.3.0"

    # digest: sha256:31f47c1e202b39fadecf822a9b76370bd4baed199a005b3e7d4d1455f4fd3fe2      # 注释掉


  dnsPolicy: ClusterFirstWithHostNet                     # 修改好的



  hostNetwork: true         # 改成true        



  kind: DaemonSet                          # 已经修改好的



  nodeSelector:

    kubernetes.io/os: linux

    ingress: "true"                              # 改成true



    patch:

      enabled: true

      image:

        registry: registry.cn-hangzhou.aliyuncs.com # 根据自己情况修改

        image: google_containers/kube-webhook-certgen # 同上


        tag: v1.3.0

        # digest: sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660      # 注释掉

4 安装ingress-nginx

#创建命名空间

kubectl create ns ingress-nginx-public

# 使用helm进行安装

helm install ingress-nginx-public -f values.yaml -n ingress-nginx-public .

helm install ingress-nginx-public -f values.yaml -n ingress-nginx-public .--set controller.service.loadBalancerIP="159.27.190.62" --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-resource-group"="cn-prdcnn3-dfinder-pubip-rg"

其他命令

helm list -n ingress-nginx-public

kubectl -n ingress-nginx-public get pods -o wide

kubectl -n ingress-nginx-public get svc -o wide

# 删除ingress-nginx

helm delete ingress-nginx-public -n ingress-nginx-public

# 更新ingress-nginx

helm upgrade ingress-nginx-public -n -f values.yaml -n ingress-nginx-public .

错误处理1

错误描述:Ingress-nginx发布后,Load Balancer,Frontend IP configuration中没有生成申请的public ip的记录,只有自动生成的public ip记录

错误信息:

Error syncing load balancer: failed to ensure load balancer:

findMatchedPIPByLoadBalancerIP: failed to listPIP: Retriable: false,

RetryAfter: 0s, HTTPStatusCode: 403, RawError:

{"error":{"code":"AuthorizationFailed","message":"The client

'9f32426d-729e-4d88-8c62-d9d3b6ad4921' with object id

'9f32426d-729e-4d88-8c62-d9d3b6ad4921' does not have authorization to perform

action 'Microsoft.Network/publicIPAddresses/read' over scope

'/subscriptions/fc10f621-0a92-4106-941e-cb7c63b9295a/resourceGroups/cn-prdcnn3-dfinder-pubip-rg/providers/Microsoft.Network'

or the scope is invalid. If access was recently granted, please refresh your

credentials."}}

执行命令:

这个需要有subcriptions权限才能执行成功,haidi执行未成功,但liuxiao执行成功,haidi再次执行helm install,Load Balancer中就有两条记录了。

az role assignment create --assignee <object ID> --scope <resource ID of the Vnet> --role "Network Contributor"

5 测试是否DNS是否通了

1 通过在DNS的public endpoint页面点击health check按钮,如果status变为绿色,implemented,则为通过

2 通过命令测试

openssl s_client -crlf -connect 159.27.190.62:443 -servername dfdr-nonprod.query.api.dvb.corpinter.net.cn

curl -X GET -k -I --resolve dfdr-nonprod.query.api.dvb.corpinter.net.cn:443:159.27.190.62 https://dfdr-nonprod.query.api.dvb.corpinter.net.cn

手动发布Tokengateway

1 下载tokengateway的helm模版

git clone https://dev.azure.com/daimler-mic/IAMS/_git/mic-gateway

git pull -r

cd mic-gateway/helm-chart

2 通过Helm部署到Aks

helm upgrade \

--install ${NAME} . \

--namespace ${NAMESPACE} \

--values ${VALUES_FILE} \

--set "global.clientsecret=${CLIENT_SECRET}"

upgrade前准备工作,需要修改Values.yaml中的

region

stage

pullPolicy

clientid

clientsecret

aksversion

dockerPullID: "${dockerPullID}"

dockerPullSecret: "${dockerPullSecret}"

acrValues: "gas:strong"

requestedScopes:

  • "groups" # standard OIDC scope

  • "openid" # standard OIDC scope

  • "profile" # standard OIDC scope

  • "email" # standard OIDC scope

  • "offline_access"

项目总结:

这个项目是要接入一个字节的埋点系统,目前的Step是要在公司的AKS上部署Ingress-Nginx和TokenGateway来打通域名解析,为后面接入第三方系统提供支持。

我刚开始接到这个工作时,还是觉得有些挑战的。

挑战1 没有实际用helm部署过应用。只是部署了一个简单的nginx(幸好动手部署一次,这次省了很多事),还有就是在配置pipeline时,对helm有一些了解。

挑战2 对配置DNS,IP这些心里没底。之前都是同事配置的,我负责把开发的应用,部署到搭建好的环境,真正可以在浏览器访问到,需要其他同事支持。

挑战3 对K8s中的一些知识点理解的还不深。比如Ingress-nginx(之前以为是个简单的nginx,心里还想我部署过,其实还是有区别的),Deamset,endpoint,Load banlancer,K8s开发工具lens.

挑战4 对这个部署的套路不熟悉。部署Ingress-Nginx之前有个pipeline,但当我部署是禁用了,于是负责的同事给我推荐了好几种其他方案,本来简单的事,需要尝试好几种方案。再有tokengateway之前也是有pipeline,但具体项目需要重新建立,这个项目目前不需要pipeline,只能参考。虽然部署不需要写代码,但部署不成功,需要找原因解决,也是需要工具,需要有方法的。Lens比直接在portal看到更多的信息,修改也更方便。

挑战5 对不熟悉的事情需要请教很多人。这个其实还好,现在回顾一下,之前做前后端开发,可能一两人交流一下就搞定了。这次部署涉及到了Li(部署套路结束和细节问题解决),liu(整体需求,整体解决方案,问题找人,最后的联调),zou(权限的配置),ma(账户开通,提供了一些解决方案),zhang and xiong(经验提供者,APP组有类似配置经验),XX(没记住名字,腾讯云部署经验,提供最后调试阶段的支持),Li(微软case接口人,解决了一个权限问题)。

上周五刚开始具体工作时,有点压力山大,那那都不顺,经过本周三天的努力,已经成功部署,并测试跑通,Happy。。。

相关推荐
蝎子莱莱爱打怪20 小时前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
闲云一鹤1 天前
nginx 快速入门教程 - 写给前端的你
前端·nginx·前端工程化
蝎子莱莱爱打怪4 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
何中应4 天前
Nginx转发请求错误
前端·后端·nginx
芝士雪豹只抽瑞克五5 天前
Nginx 高性能Web服务器笔记
服务器·nginx
阿里云云原生5 天前
Kubernetes 官方再出公告,强调立即迁移 Ingress NGINX
kubernetes
失重外太空啦5 天前
nginx
运维·nginx
至此流年莫相忘5 天前
Kubernetes实战篇之配置与存储
云原生·容器·kubernetes
天蓝不会忘记025 天前
lvs,haproxy,keepalived,nginx,tomcat介绍和实验
nginx·tomcat·lvs