

使用Ingress-Nginx来暴露ArgoCD Web-UI - 梨花海棠
source link: https://www.cnblogs.com/xunweidezui/p/17180195.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

未安装ArgoCD参考GitOps实践之kubernetes部署Argocd
1. 查看Argocd Service
可以看到是ClusterIP,因此不能从外部直接访问Argocd的WEB-UI
# kubectl get svc -n argocd
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-applicationset-controller ClusterIP 10.96.52.109 <none> 7000/TCP,8080/TCP 25d
argocd-dex-server ClusterIP 10.96.57.217 <none> 5556/TCP,5557/TCP,5558/TCP 25d
argocd-metrics ClusterIP 10.96.153.115 <none> 8082/TCP 25d
argocd-notifications-controller-metrics ClusterIP 10.96.207.83 <none> 9001/TCP 25d
argocd-redis ClusterIP 10.96.112.222 <none> 6379/TCP 25d
argocd-repo-server ClusterIP 10.96.240.85 <none> 8081/TCP,8084/TCP 25d
argocd-server ClusterIP 10.96.65.68 <none> 80/TCP,443/TCP 25d
argocd-server-metrics ClusterIP 10.96.16.178 <none> 8083/TCP 25ds
2. 检查Ingress控制器是否正常。
打算使用ingress-nginx来暴露应用,也可以使用Traefik等。
# kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-bnmpt 1/1 Running 26 25d
ingress-nginx-controller-cfblk 1/1 Running 28 (5d23h ago) 25d
3. 查看Secret
# kubectl get secret -n argocd
NAME TYPE DATA AGE
argocd-application-controller-token-f9qj7 kubernetes.io/service-account-token 3 25d
argocd-applicationset-controller-token-r5vqk kubernetes.io/service-account-token 3 25d
argocd-dex-server-token-hzwkt kubernetes.io/service-account-token 3 25d
argocd-initial-admin-secret Opaque 1 25d
argocd-notifications-controller-token-75csv kubernetes.io/service-account-token 3 25d
argocd-notifications-secret Opaque 0 25d
argocd-redis-token-78522 kubernetes.io/service-account-token 3 25d
argocd-repo-server-token-6f2x9 kubernetes.io/service-account-token 3 25d
argocd-secret Opaque 5 25d
4. 配置Ingress规则。
# cat argocd-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argocd-server-ingress
namespace: argocd
annotations:
nginx.io/tls-acme: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" # 后端使用tls协议,设置代理后端服务器的代理协议类型,默认为 HTTP
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" # 设置当前虚拟主机支持 HTTPS 请求时,是否将 HTTP 的请求强制跳转到 HTTPS 端口,全局默认为 true
nginx.ingress.kubernetes.io/ssl-passthrough: "true" # ssl透传
spec:
ingressClassName: nginx # 使用 nginx 的 IngressClass(关联的 ingress-nginx 控制器)
rules: # 规则
- host: argocd.k8s.local # 虚拟主机的FQDN
http:
paths:
- path: /
pathType: Prefix # Prefix前缀匹配
backend:
service:
name: argocd-server
port:
name: https
tls: # 配置 tls 证书
- hosts:
- argocd.k8s.local
secretName: argocd-secret "引用的secret"
# kubectl apply -f argocd-ingress.yaml
ingress.networking.k8s.io/argocd-server-ingress unchanged
5. 查看Ingress配置
不过需要注意大部分Ingress控制器都不是直接转发到Service
而是只是通过Service来获取后端的Endpoints列表,直接转发到Pod,这样可以减少网络跳转,提高性能。
# kubectl get ingress -n argocd
NAME CLASS HOSTS ADDRESS PORTS AGE
argocd-server-ingress nginx argocd.k8s.local 10.0.0.11,10.0.0.12 80, 443 24d
# kubectl describe ingress argocd-server-ingress -n argocd
Name: argocd-server-ingress
Namespace: argocd
Address: xxxxxxxx
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
TLS:
argocd-secret terminates argocd.k8s.local
Rules:
Host Path Backends
---- ---- --------
argocd.k8s.local
/ argocd-server:https (192.168.2.49:8080)
Annotations: nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/force-ssl-redirect: true
nginx.ingress.kubernetes.io/ssl-passthrough: true
nginx.io/tls-acme: true
Events: <none>
6. 配置本地hosts解析。
echo "xxxxx argocd.k8s.local"
7. 访问argocd WEB-UI


Recommend
-
43
由于 nginx 的优秀性能表现,所以很多企业在Kubernetes 中选择 Ingress Controller 的时候依然会选择基于 nginx 的 ingress-nginx ,前面文章中我们更多的是介绍更加云原生配...
-
6
1.什么是Deployment? Deployment(简写为deploy)是kubernetes控制器的又一种实现,构建于ReplicasSet控制器之上,可以为Pod和ReplicaSet提供声明式更新。相比较而言,Pod和ReplicaSet很少用来直接使用,而是借助于控制器来使用。Dep...
-
11
kubernetes Deployment之滚动更新策略。 kubernetes...
-
11
1.什么是资源限制? 1.1在kubernetes集群中,为了使得系统能够稳定的运行,通常会对Pod的资源使用量进行限制。在kubernetes集群中,如果有一个程序出现异常,并且占用大量的系统资源,如果没有对该Pod进行资源限制的话,可能会影响其...
-
8
1.什么是DaemonSet? 1.1DaemonSet是Pod控制器的又一种实现方式,用于在集群中的全部节点上同时运行一份指定的Pod资源副本,后续加入集群的节点也会自动创建一个相关的Pod对象,当从集群移除节点时,此类...
-
8
1.什么是Service? 在kubernets中,Pod是应用程序的载体,Pod你可以想象成就是容器,为动态的一组Pod提供一个固定的访问入口,它是以一种叫ClusterIP地址来进行标识,而ClusterIP就位于我们集群网络(Cluster Network)当中,我们可以通...
-
2
1.什么是Dashboard Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,...
-
5
1. 什么是HTTPS? HTTPS(全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础下加入SSL,HTTPS的安全基础是SSL,因此加密的详细内容...
-
13
1. 什么是Openssl? 在计算机网络上,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连线者的身份。这个包广泛被应用在互联网的网页服务器上。 其主要库是以C语言所写成...
-
4
1. 什么是Elasticsearch Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK