Knative - 域名映射-CDC配置【三】

域名映射-CDC配置(ClusterDomainClaim)

#ClusterDomainClaim
    ◼ 域名映射依赖于ClusterDomainClaim,创建方法(二选一)
        ◆~$ kubectl patch configmap config-network -n knative-serving -p '{"data":{"autocreate-cluster-domain-claims":"true"}}’
            ⚫ 全局配置参数,允许自动创建CDC资源
        ◆手动创建相关的CDC资源,名称为要使用的外部映射域名
            ⚫ 基于ClusterDomainClaim资源规范创建,仅需要指定名称,且namespace要在spec字段中定义
修改Knative Serving中各Knative Service默认使用的域名的方法:
    编辑knative-serving名称空间中的"configmap/config-domain"

    在Data配置段中,直接指明要使用的域名即可; 
        xks.com: |

    各Knative Service的路由中使用Hostname:
        hostname.<namespace>.<domain.ltd> 
    
    域名映射:
        把某个FQDN,与Knative Service建立起关联关系来,即为域名映射

        集群外部:
            client --> FQDN --> Knative Service Name 

#config-domain
[root@xianchaomaster1 basic]# kubectl get cm -n knative-serving
NAME                     DATA   AGE
config-autoscaler        1      172m
config-defaults          1      172m
config-deployment        2      172m
config-domain            1      172m
config-features          1      172m
config-gc                1      172m
config-istio             1      134m
config-leader-election   1      172m
config-logging           1      172m
config-network           1      172m
config-observability     1      172m
config-tracing           1      172m
istio-ca-root-cert       1      153m
kube-root-ca.crt         1      172m

[root@xianchaomaster1 basic]# kubectl edit configmap config-domain -n knative-serving
  xks.com: |
configmap/config-domain edited

#demoapp.default.xks.com 过去生成的vs还是生效的
[root@xianchaomaster1 basic]# kubectl get vs
NAME              GATEWAYS                                                                              HOSTS                                                                                                     AGE
demoapp-ingress   ["knative-serving/knative-ingress-gateway","knative-serving/knative-local-gateway"]   ["demoapp.default","demoapp.default.svc","demoapp.default.svc.cluster.local","demoapp.default.xks.com"]   112m
demoapp-mesh      ["mesh"]                                                                              ["demoapp.default","demoapp.default.svc","demoapp.default.svc.cluster.local"]                             112m
hello-ingress     ["knative-serving/knative-ingress-gateway","knative-serving/knative-local-gateway"]   ["hello.default","hello.default.svc","hello.default.svc.cluster.local","hello.default.xks.com"]           47m
hello-mesh        ["mesh"]                                                                              ["hello.default","hello.default.svc","hello.default.svc.cluster.local"]                                   47m

#访问hello.default.example.com不没响应 改为 hello.default.xks.com能成功访问
[root@xianchaomaster1 basic]# curl -H "Host: hello.default.example.com" 192.168.40.190

[root@xianchaomaster1 basic]# curl -H "Host: hello.default.xks.com" 192.168.40.190
Hello Knative-CLI!

创建CDC

1.声明式创建

依赖的前提:
    映射的域名,需要先在集群级别加以声明; 
    声明的方法:
    ClusterDomainClaims CRD 
#1.创建domain 并且需要声明CDC才可以使用 否者READY:FALSE
[root@xianchaomaster1 basic]# kn domain create hello.ik8s.io --ref ksvc:hello:default
Domain mapping 'hello.ik8s.io' created in namespace 'default'.

#因为没有进行 事先定义CDC 导致 READY状态为:False
[root@xianchaomaster1 basic]# kn domain list
NAME            URL                    READY   KSVC
hello.ik8s.io   http://hello.ik8s.io   False   hello

[root@xianchaomaster1 basic]# kn domain describe hello.ik8s.io
Name:       hello.ik8s.io
Namespace:  default
Age:        36s

URL:  http://hello.ik8s.io

Reference:
  APIVersion:  serving.knative.dev/v1
  Kind:        Service
  Name:        hello

Conditions:
  OK TYPE                      AGE REASON
  !! Ready                     36s DomainAlreadyClaimed
  ?? CertificateProvisioned    36s
  !! DomainClaimed             36s DomainAlreadyClaimed
  ?? IngressReady              36s IngressNotConfigured
  ?? ReferenceResolved         36s

#编辑CDC
[root@xianchaomaster1 domainmapping]# cat cdc-hello.ik8s.io.yaml
apiVersion: networking.internal.knative.dev/v1alpha1
kind: ClusterDomainClaim
metadata:
  name: hello.ik8s.io
spec:
  namespace: default

[root@xianchaomaster1 domainmapping]# kubectl apply -f cdc-hello.ik8s.io.yaml
clusterdomainclaim.networking.internal.knative.dev/hello.ik8s.io created

[root@xianchaomaster1 domainmapping]# kubectl get cdc
NAME            AGE
hello.ik8s.io   5s

#此时报错已经被使用 重新删除再次创建就行
[root@xianchaomaster1 domainmapping]# kubectl get dm
NAME            URL                    READY   REASON
hello.ik8s.io   http://hello.ik8s.io   False   DomainAlreadyClaimed

[root@xianchaomaster1 domainmapping]# kn domain delete hello.ik8s.io
Domain mapping 'hello.ik8s.io' deleted in namespace 'default'.

[root@xianchaomaster1 domainmapping]# kn domain create hello.ik8s.io --ref ksvc:hello
Domain mapping 'hello.ik8s.io' created in namespace 'default'.

#READY:TRUE
[root@xianchaomaster1 domainmapping]# kn domain list
NAME            URL                    READY   KSVC
hello.ik8s.io   http://hello.ik8s.io   True    hello

[root@xianchaomaster1 domainmapping]# curl -H "Host: hello.ik8s.io" 192.168.40.190
Hello Knative-CLI!

 2.自动化创建CDC    

#编辑knative-serving名称空间中的"configmap/config-network",添加如下配置项:
#autocreate-cluster-domain-claims: "true"

[root@xianchaomaster1 domainmapping]# kubectl edit cm config-network -n knative-serving
    autocreate-cluster-domain-claims: "true"
configmap/config-network edited

#查看目前只有之前的一个cdc
[root@xianchaomaster1 domainmapping]# kubectl get cdc
NAME            AGE
hello.ik8s.io   10m

#重新创建一个新的域名指向www.ik8s.io =》 hello:default
[root@xianchaomaster1 domainmapping]# kn domain create www.ik8s.io --ref ksvc:hello:default
Domain mapping 'www.ik8s.io' created in namespace 'default'.

#此时不需要定义CDC 自动创建了 
[root@xianchaomaster1 domainmapping]# kn domain list
NAME            URL                    READY   KSVC
hello.ik8s.io   http://hello.ik8s.io   True    hello
www.ik8s.io     http://www.ik8s.io     True    hello

[root@xianchaomaster1 domainmapping]# kubectl get cdc
NAME            AGE
hello.ik8s.io   11m
www.ik8s.io     15s

#两个域名都能够访问到
[root@xianchaomaster1 domainmapping]# curl -H "Host: hello.ik8s.io" 192.168.40.190
Hello Knative-CLI!
[root@xianchaomaster1 domainmapping]# curl -H "Host: www.ik8s.io" 192.168.40.190
Hello Knative-CLI!

 

 

 

 

 

posted @ 2023-07-05 15:07  しみずよしだ  阅读(58)  评论(0)    收藏  举报