手動發(fā)布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
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
#創(chuàng)建命名空間
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發(fā)布后,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."}}
執(zhí)行命令:
這個需要有subcriptions權限才能執(zhí)行成功,haidi執(zhí)行未成功,但liuxiao執(zhí)行成功,haidi再次執(zhí)行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變?yōu)榫G色,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
?
手動發(fā)布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"
項目總結:
這個項目是要接入一個字節(jié)的埋點系統(tǒng),目前的Step是要在公司的AKS上部署Ingress-Nginx和TokenGateway來打通域名解析,為后面接入第三方系統(tǒng)提供支持。
我剛開始接到這個工作時,還是覺得有些挑戰(zhàn)的。
挑戰(zhàn)1 沒有實際用helm部署過應用。只是部署了一個簡單的nginx(幸好動手部署一次,這次省了很多事),還有就是在配置pipeline時,對helm有一些了解。
挑戰(zhàn)2 對配置DNS,IP這些心里沒底。之前都是同事配置的,我負責把開發(fā)的應用,部署到搭建好的環(huán)境,真正可以在瀏覽器訪問到,需要其他同事支持。
挑戰(zhàn)3 對K8s中的一些知識點理解的還不深。比如Ingress-nginx(之前以為是個簡單的nginx,心里還想我部署過,其實還是有區(qū)別的),Deamset,endpoint,Load banlancer,K8s開發(fā)工具lens.
挑戰(zhàn)4 對這個部署的套路不熟悉。部署Ingress-Nginx之前有個pipeline,但當我部署是禁用了,于是負責的同事給我推薦了好幾種其他方案,本來簡單的事,需要嘗試好幾種方案。再有tokengateway之前也是有pipeline,但具體項目需要重新建立,這個項目目前不需要pipeline,只能參考。雖然部署不需要寫代碼,但部署不成功,需要找原因解決,也是需要工具,需要有方法的。Lens比直接在portal看到更多的信息,修改也更方便。
挑戰(zhàn)5 對不熟悉的事情需要請教很多人。這個其實還好,現在回顧一下,之前做前后端開發(fā),可能一兩人交流一下就搞定了。這次部署涉及到了Li(部署套路結束和細節(jié)問題解決),liu(整體需求,整體解決方案,問題找人,最后的聯(lián)調),zou(權限的配置),ma(賬戶開通,提供了一些解決方案),zhang and xiong(經驗提供者,APP組有類似配置經驗),XX(沒記住名字,騰訊云部署經驗,提供最后調試階段的支持),Li(微軟case接口人,解決了一個權限問題)。文章來源:http://www.zghlxwxcb.cn/news/detail-662193.html
上周五剛開始具體工作時,有點壓力山大,那那都不順,經過本周三天的努力,已經成功部署,并測試跑通,Happy。。。文章來源地址http://www.zghlxwxcb.cn/news/detail-662193.html
到了這里,關于K8s實戰(zhàn)4-使用Helm在Azure上部署Ingress-Nginx和Tokengateway的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!