Code Monkey home page Code Monkey logo

polaris-controller's Introduction

Polaris Controller

English | 中文

Introduce

polaris-controller For the docking of Polaris and K8s ecology, providing two optional functions:

  • K8s Service Sync to Polaris: Sync K8s Service to Polaris, use Polaris for service discovery and governance
  • polaris-sidecar Auto-inject: inject polaris-sidecar in app pod

The operating mode of sidecar in the Polaris-Controller provides two optional functions:

  • LocalDNS (dns): Inject polaris-sidecar, realize service discovery and governance by intercepting DNS requests
  • ServiceMesh (mesh): Inject polaris-sidecar and envoy, realize service discovery and governance through hijacking traffic, and develop low invasion

This document describes how to install and use polaris-controller in a K8s cluster.

Installation

Official documentation

Annotations

Annotations name Annotations description
polarismesh.cn/sync Whether to synchronize this service to Polarismesh.TRUE synchronization, False is not synchronized, default is not synchronized
polarismesh.cn/aliasService Synchronize K8S Service to PolarisMesh, and the name of the service alias created at the same time
polarismesh.cn/aliasNamespace The named space where the owner is located, with PolarisMesh.cn/aliasservice use

Guidance

Full synchronization service

Start polaris-controller in full synchronization service mode, and synchronize all K8s services to Polaris. The startup configuration is as follows:

apiVersion: v1
kind: ConfigMap
data:
  mesh: |-
    serviceSync
      mode: "all"

On-demand sync service

Start polaris-controller in the mode of on-demand synchronization service. By default, K8s Service will not be synchronized to Polaris. The startup configuration is as follows:

apiVersion: v1
kind: ConfigMap
data:
  mesh: |-
    serviceSync
      mode: "demand"

If you need to synchronize all services in a Namespace to Polaris, please add Polaris annotation on the Namespace, the configuration is as follows:

apiVersion: v1
kind: Namespace
metadata:
  name: default
  annotations:
    polarismesh.cn/sync: "true"

If you need to synchronize a Service to Polaris, please add the Polaris annotation on the Service, the configuration is as follows:

apiVersion: v1
kind: Service
metadata:
  namespace: default
  name: test
  annotations:
    polarismesh.cn/sync: "true"

If you need to synchronize a Service in a Namespace to Polaris and exclude a Service, the configuration is as follows:

apiVersion: v1
kind: Namespace
metadata:
  name: default
  annotations:
    polarismesh.cn/sync: "true"

apiVersion: v1
kind: Service
metadata:
  namespace: default
  name: test
  annotations:
    polarismesh.cn/sync: "false"

Create service alias

Polaris supports the function of service alias, allowing one or more service aliases to be set for a service. The effect of using service alias for service discovery is the same as that of using service name for service discovery.

The name mapping rules for polaris-controller to synchronize K8s Service to Polaris are as follows:

  • K8s Namespace as Polaris namespace name
  • K8s Service as the service name of Polaris

If you need to create a service alias for Service when it is synchronized to Polaris, the configuration is as follows:

apiVersion: v1
kind: Service
metadata:
  namespace: default
  name: test
  annotations:
    polarismesh.cn/aliasNamespace: aliasDefault
    polarismesh.cn/aliasService: aliasTest

Sidecar auto inject

If polaris-sidecar needs to be used, it can be automatically injected in the application Pod, and the configuration is as follows:

kubectl label namespace default polaris-injection=enabled 

Check whether K8s Namespace supports automatic injection of polaris-sidecar:

kubectl get namespace -L polaris-injection

NAME             STATUS   AGE    POLARIS-INJECTION
default          Active   3d2h   enabled

View the operation mode after polaris-sidecar injection corresponding to K8s Namespace:

kubectl get namespace -L polaris-sidecar-mode

NAME              STATUS   AGE   POLARIS-SIDECAR-MODE
default           Active   10d   mesh

After automatic injection is enabled, newly created Pods will be automatically injected, and existing Pods will not be automatically injected into polaris-sidecar. If you want stock pods to experience polaris-sidecar as well, for pods managed by Deployment, DaemonSet or StatefulSet controllers, you can run the following command

# Deployment
kubectl rollout restart deployment/DEPLOYMENT_NAME --namespace NAMESPACE

# DaemonSet
kubectl rollout restart daemonset/DAEMONSET_NAME --namespace NAMESPACE

# StatefulSet
kubectl rollout restart statefulset/STATEFULSET_NAME --namespace NAMESPACE

polaris-controller's People

Contributors

andrewshan avatar archlake avatar aurora2035 avatar chuntaojun avatar cocotyty avatar dependabot[bot] avatar enjoyliu avatar forrestlinfeng avatar fredrikliu avatar hzliangbin avatar jianlongzhou avatar lbbniu avatar lhiamgeek avatar mi-cool avatar njy17 avatar ranchowang avatar shichaoyuan avatar sky-tower avatar zhangzerui20 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

polaris-controller's Issues

injector.yaml 配置错误

injector.yaml 中的 init container polaris-bootstrap-writer 的 POLARIS_SERVER_URL 配置,与 configmap.yaml 中的不匹配,导致 envoy 连接 polaris-server 失败。

sidecar注入失败:"add operation does not apply"

Describe the bug
通过deployment新建pod时deployment报错,无法正常拉起pod,报错信息如下:
message: 'Internal error occurred: add operation does not apply: doc is missing
path: "/metadata/annotations/sidecar.istio.io~1status": missing value'

polaris-controller日志未见异常,部分日志如下:
2022-09-05T17:31:14.130367Z info inject/inject.go:402 Sidecar injection policy for bookinfo/details-v1-5498c86cf5-***** (actual name not yet known): namespacePolicy:enabled useDefault:true injec
2022-09-05T17:31:14.132419Z info inject/webhook.go:897 [Webhook] admissionReview for Kind=/v1, Kind=Pod Namespace=bookinfo Name= (productpage-v1-65b75f6885-***** (actual name not yet known)) UID=
2022-09-05T17:31:14.132455Z info inject/webhook.go:899 [Webhook] object: {"kind":"Pod","apiVersion":"v1","metadata":{"generateName":"productpage-v1-65b75f6885-","creationTimestamp":null,"labels":
2022-09-05T17:31:14.132470Z info inject/webhook.go:900 [Webhook] oldObject:
2022-09-05T17:31:14.132550Z info inject/inject.go:402 Sidecar injection policy for bookinfo/productpage-v1-65b75f6885-***** (actual name not yet known): namespacePolicy:enabled useDefault:true i
2022-09-05T17:31:14.132875Z info inject/webhook.go:897 [Webhook] admissionReview for Kind=/v1, Kind=Pod Namespace=bookinfo Name= (reviews-v1-79d546878f-***** (actual name not yet known)) UID=1f3c
2022-09-05T17:31:14.132909Z info inject/webhook.go:899 [Webhook] object: {"kind":"Pod","apiVersion":"v1","metadata":{"generateName":"reviews-v1-79d546878f-","creationTimestamp":null,"labels":{"ap
2022-09-05T17:31:14.132934Z info inject/webhook.go:900 [Webhook] oldObject:
2022-09-05T17:31:14.132982Z info inject/inject.go:402 Sidecar injection policy for bookinfo/reviews-v1-79d546878f-***** (actual name not yet known): namespacePolicy:enabled useDefault:true injec
2022-09-05T17:31:14.136813Z info inject/webhook.go:419 begin deal polaris-sidecar inject for pod=[bookinfo, ]
2022-09-05T17:31:14.137072Z info inject/webhook.go:488 pod=[bookinfo, ] inject polaris-sidecar mode mesh, env map map[POLARIS_ADDRESS:polaris.polaris-system:8091 SIDECAR_DNS_ENABLE:false SIDECAR_
2022-09-05T17:31:14.138423Z info inject/webhook.go:990 [Webhook] admissionResponse: patch=[{"op":"add","path":"/spec/initContainers","value":[{"name":"polaris-bootstrap-writer","image":"polarisme

To Reproduce
Steps to reproduce the behavior.

Expected behavior
A clear and concise description of what you expected to happen.

Environment

  • k8s version: 1.23.9 (k8s node run on centos7)
  • polaris-controller version: release_v1.3.0-alpha.3.k8s1.22

Additional context
Add any other context about the problem here.

项目引用了github.com/ulikunitz/xz等602个开源组件,存在13个漏洞,建议升级

大佬,你好,我是@abbykimi,我IDE运行您这个项目的时候,提示有几个漏洞,项目调用了github.com/ulikunitz/xz等602个开源组件,存在13个安全漏洞,建议你升级下。

漏洞标题:xz 安全漏洞
漏洞编号:CVE-2021-29482
漏洞描述:
xz是一个应用软件。用于支持读取和写入xz压缩流。
xz v0.5.8之前版本存在安全漏洞,该漏洞源于readUvarint函数用于读取xz容器格式可能不会终止循环提供恶意输入。
影响范围:(∞, 0.5.8)
最小修复版本:0.5.8
引入路径:
github.com/polarismesh/polaris-controller@->istio.io/[email protected]>github.com/dsnet/[email protected]>github.com/ulikunitz/[email protected]

另外12个漏洞 ,信息有点多我就不贴了,你自己看下完整报告:https://www.mfsec.cn/jr?p=a66771

如果你对这个issues有任何疑问可以回复我哈( @abbykimi ),我会及时回复你的。

polaris-server暴力停机并重启后polaris-controller无法恢复数据同步

What is the feature you want to add?
polaris-controller需要增强一下容错恢复能力

Additional context
测试时polaris-server是采用的standalone单机模式部署,采用server节点ip配置,在k8s集群内安装polaris-controller后观测到服务数据已同步到polaris-server。

kill -9 polaris-server进程,然后重启polaris-server,观察发现服务数据无法再次同步到polaris-server

HoldApplicationUntilProxyStart

sidecar的启动和业务容器的启动顺序存在依赖关系,kubelet拉起pod内的多容器并不能保证envoy就绪后再启动主容器,这会导致主容器在启动时因为envoy未就绪而失败,虽然我们可以通过提高代码的健壮性例如循环调用等方法来解决这个问题,但也应该有比较通用型的解决方法

调整顺序,envoy和polaris-sidecar的顺序在主容器之前并且在确保envoy ready后再启动业务容器,envoy v1.26.2的官方文档有:15000/ready可以用来当作envoy的readiness探针,参考istio的旧版解决方法,在sidecar注入时在poststart中假如等待envoyreadiness探针返回200再启动业务容器
add.Lifecycle = &corev1.Lifecycle{
PostStart: &corev1.LifecycleHandler{
Exec: &corev1.ExecAction{
Command: []string{"/bin/bash", "-c", "while (($(curl -s -o /dev/null -w ''%{http_code}'' 127.0.0.1:15000/ready) !="200")); do echo Waiting for Sidecar;sleep 1; done;"},
},
},
}

支持将kubernetes的Configmap同步至北极星配置中心

What is the feature you want to add?

目标

  • 用户可以在北极星的配置中心页面,创建好配置之后,由 polaris-controller 将该配置同步至kubernetes的configmap中

建议实现思路

  • 了解 polaris-go 中的SDK,是否具有对接配置中心的能力
  • polaris-controller 整体框架的了解
  • 需要添加配置同步任务,需要将北极星的配置中心模型映射为kubernetes中的configmap模型

Why do you want to add this feature?

How to implement this feature?

Additional context
Add any other context or screenshots about the feature request here.

注入 sidecar 出现空指针问题

Describe the bug

2022-09-01T15:44:45.958088Z	info	inject/inject.go:402	Sidecar injection policy for bookinfo/details-v1-5498c86cf5-***** (actual name not yet known): namespacePolicy:enabled useDefault:true inject:false required:true sidecar.istio.io/proxyMemory:(unset) sidecar.istio.io/userVolume:(unset) sidecar.istio.io/userVolumeMount:(unset) traffic.sidecar.istio.io/includeInboundPorts:(unset) sidecar.istio.io/status:(unset) sidecar.istio.io/bootstrapOverride:(unset) sidecar.istio.io/statsInclusionSuffixes:(unset) readiness.status.sidecar.istio.io/initialDelaySeconds:(unset) traffic.sidecar.istio.io/excludeOutboundIPRanges:(unset) sidecar.istio.io/discoveryAddress:(unset) sidecar.istio.io/rewriteAppHTTPProbers:(unset) sidecar.istio.io/controlPlaneAuthPolicy:(unset) sidecar.istio.io/proxyImage:(unset) sidecar.istio.io/interceptionMode:(unset) sidecar.istio.io/statsInclusionPrefixes:(unset) sidecar.istio.io/enableCoreDump:(unset) traffic.sidecar.istio.io/includeOutboundIPRanges:(unset) sidecar.polarismesh.cn/inject:(unset) sidecar.istio.io/statsInclusionRegexps:(unset) status.sidecar.istio.io/port:(unset) readiness.status.sidecar.istio.io/periodSeconds:(unset) readiness.status.sidecar.istio.io/failureThreshold:(unset) traffic.sidecar.istio.io/excludeInboundPorts:(unset) traffic.sidecar.istio.io/excludeOutboundPorts:(unset) traffic.sidecar.istio.io/kubevirtInterfaces:(unset) sidecar.istio.io/proxyCPU:(unset) 
2022-09-01T15:44:45.959088Z	info	http/server.go:1802	http: panic serving 10.130.97.147:9218: assignment to entry in nil map
goroutine 1522 [running]:
net/http.(*conn).serve.func1()
	/opt/hostedtoolcache/go/1.17.1/x64/src/net/http/server.go:1801 +0xb9
panic({0x171b240, 0x1b75d50})
	/opt/hostedtoolcache/go/1.17.1/x64/src/runtime/panic.go:1047 +0x266
github.com/polarismesh/polaris-controller/pkg/inject/pkg/kube/inject.InjectionData({0xc000420000, 0xf2a}, {0xc000235400, 0xaac}, {0xc000056800, 0x40}, 0xc000162780, 0xc00092d200, 0xc0006c1118, 0xc0006c1020, ...)
	/home/runner/work/polaris-controller/polaris-controller/pkg/inject/pkg/kube/inject/inject.go:466 +0x425
github.com/polarismesh/polaris-controller/pkg/inject/pkg/kube/inject.(*Webhook).injectV1(0xc0004e86c0, 0x10)
	/home/runner/work/polaris-controller/polaris-controller/pkg/inject/pkg/kube/inject/webhook.go:966 +0x891
github.com/polarismesh/polaris-controller/pkg/inject/pkg/kube/inject.(*Webhook).serveInject(0x800, {0x1bad5b0, 0xc000d002a0}, 0xc0009a4a00)
	/home/runner/work/polaris-controller/polaris-controller/pkg/inject/pkg/kube/inject/webhook.go:1050 +0x8df
net/http.HandlerFunc.ServeHTTP(0x16975e0, {0x1bad5b0, 0xc000d002a0}, 0xc000d002a0)
	/opt/hostedtoolcache/go/1.17.1/x64/src/net/http/server.go:2046 +0x2f
net/http.(*ServeMux).ServeHTTP(0xc000fc5cbd, {0x1bad5b0, 0xc000d002a0}, 0xc0009a4a00)
	/opt/hostedtoolcache/go/1.17.1/x64/src/net/http/server.go:2424 +0x149
net/http.serverHandler.ServeHTTP({0x1b9d9d0}, {0x1bad5b0, 0xc000d002a0}, 0xc0009a4a00)
	/opt/hostedtoolcache/go/1.17.1/x64/src/net/http/server.go:2878 +0x43b
net/http.(*conn).serve(0xc000d4c780, {0x1bb8358, 0xc000012b70})
	/opt/hostedtoolcache/go/1.17.1/x64/src/net/http/server.go:1929 +0xb08
created by net/http.(*Server).Serve
	/opt/hostedtoolcache/go/1.17.1/x64/src/net/http/server.go:3033 +0x4e8
2022-09-01T15:44:45.969062Z	info	controller/controller.go:596	Service bookinfo/productpage is polaris type, in queue
2022-09-01T15:44:45.969090Z	info	controller/controller.go:590	Endpoint bookinfo/productpage is polaris, in queue
2022-09-01T15:44:45.974239Z	info	inject/webhook.go:1005

To Reproduce
Steps to reproduce the behavior.

Expected behavior
A clear and concise description of what you expected to happen.

Environment

  • Version: [e.g. v1.0.0]
  • OS: [e.g. CentOS8]

Additional context
Add any other context about the problem here.

支持通过控制pod的annonations来决定当前注入的 sidecar 运行模式

What is the feature you want to add?

Why do you want to add this feature?

如果 pod 的annonations 中带了 polarismesh.cn/sidecar-mode = mesh | dns 的话,那么给当前 POD 的注入的sidecar运行模式已 annonations 的为准

sidecar 运行模式的决定顺序

  • 最高优先级:POD 中的 annonations 的 polarismesh.cn/sidecar-mode 值
  • 次优先级:查看 namespace 中是否携带了 polaris-sidecar-mode 的 labels,已 label 值为准
  • 最低优先级:controller 中 configmap 中配置的默认 sidecar 注入模式

How to implement this feature?

Additional context
Add any other context or screenshots about the feature request here.

北极星同步POD节点信息和K8S POD节点信息不一致

背景:公司项目使用K8S的服务发现,由于北极星支持功能较多,所以服务治理这块想迁移到北极星。为了是项目能平滑迁移,所以使用了polaris-controller组件同步K8S元数据信息到北极星,这样可以保证服务一部分一部分升级且功能不受影响(后端多一部分服务通过服务发现交互数据),偶发性会出现POD信息不一致情况
K8S POD信息
image
北极星服务节点信息
image

是否考虑跨namespace同步

k8s的namespace不支持大写,有一些北极星名字创建的时候就包含大写的Namespace,如果能支持跨namespace就比较好

支持k8s的v1版本以及v1beta1版本

1、deploy 的部署脚本,需要适配 kubernetes (, v1.21] 以及 [v1.22, ) 两个api版本
2、需要保证 sidecar 注册逻辑能够适配 kubernetes (, v1.21] 以及 [v1.22, ) 两个api版本

bug: The old instances is not removed when pod deleted

If you deployed the pod by the resouce delpoyment in your K8S cluster, when the pod is deleted and running again automaticlly, the service endpoints will change and polaris-controller will add the new endpoint to the instance, but the old instance is not removed in fact.

Improve mapping from k8s endpoint to polaris instance

What is the feature you want to add?
Improve mapping from k8s endpoint to polaris instance
Why do you want to add this feature?
Can cover all situations in cluster
How to implement this feature?
Instead of selector, use endpoint to find pod related to current service.
Additional context
Add the label of pods to the metadata of polaris instance

修改polaris-controller的日志模块,优化日志打印

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior.

Expected behavior
A clear and concise description of what you expected to happen.

Environment

  • Version: [e.g. v1.0.0]
  • OS: [e.g. CentOS8]

Additional context
Add any other context about the problem here.

限流页面显示异常

`单机版本polaris-console-release_v1.2.1.linux.amd64,连接mysql。限流规则页面显示异常,如下图:
bee9459b0777c01adddf766c9664321
使用curl添加限流规则后再访问页面,显示异常,如下图:
a042c8b0018ff296e71a4a198d9cff2

controller能够将自己作为一个服务注册到北极星中去

What is the feature you want to add?

controller能够将自己作为一个服务注册到北极星中去,通过 ProviderAPI.RegisterInstance 方法实现

Why do you want to add this feature?

用户可以直接从北极星的服务中查看 controller 的状态,命名空间默认在 Polaris,服务名称格式为 polaris-controller.{clusterName}

How to implement this feature?

Additional context
Add any other context or screenshots about the feature request here.

支持注入sidecar的监控上报能力

What is the feature you want to add?

Why do you want to add this feature?

How to implement this feature?

Additional context
Add any other context or screenshots about the feature request here.

语义歧义问题

看文档描述是 true 的时候 不自动注册,但和标签语义有点相反,最好可以统一。要不容易迷惑
polaris.cloud.tencentyun.com/autoRegister="true"

Add polaris server failure detection and instance resyncing to increase robustness

What is the feature you want to add?
polaris server failure detection and instance resyncing

Why do you want to add this feature?

  1. There is not method to detect the server failure currently.
  2. When server fails and restarts, the data of instance will not sync uitl resource changing.

How to implement this feature?

  1. Use probe request to check polaris server's health
  2. Once server failure is detected, add resync task to queque. When the server is up, start the task in the queue.

Additional context
Add any other context or screenshots about the feature request here.

北极星的k8s controller,如果svc配置了多个端口,会存在潜在问题。

北极星的k8s controller,如果svc配置了多个端口,会存在潜在问题。

假如2个实例,每个实例2个端口(http+grpc),那么总共会注册4个实例上去。这样相当于upstream有4个,那么收到请求后实际是会有问题的,因为有2个upstream协议是对不上的,需要额外的手段去控制。

support spring cloud 2023 java-agent injected

What is the feature you want to add?

Why do you want to add this feature?

How to implement this feature?

Additional context
Add any other context or screenshots about the feature request here.

支持 helm 模式的 release 安装包

What is the feature you want to add?

Why do you want to add this feature?

How to implement this feature?

Additional context
Add any other context or screenshots about the feature request here.

minikube部署时iptable配置不生效

Describe the bug
北极星配置限流规则后,请求服务pod ip:port发现限流不生效,在pod内查看iptable发现iptable配置未生效

To Reproduce
北极星配置限流规则,请求服务pod ip:port

Expected behavior
触发限流

Environment
minikube v1.32.0
polaris 1.18.0
polaris-controller 1.7.0

支持针对pod级别控制polaris-sidecar的注入

What is the feature you want to add?

  • 当namespce开启了 polaris-injection=enabled 之后,可以在 pod 中打上 annotations 来制定某个pod不需要做 sidecar 的注入动作

Why do you want to add this feature?

  • 某一些服务只是对外提供调用,本身并不会主动调用其他服务的话,sidecar其实不太需要

How to implement this feature?

  • 设定一个 annotations,用于 POD 级别关闭 sidecar 的注入
  • 接收到 kubernetes 的 webhook 回调之后,对 POD 的 annonation 进行处理,判断是否带上了关闭sidecar注入的信息,然后根据结果来决定是否进行 sidecar 的注入

Additional context
Add any other context or screenshots about the feature request here.

enhance polaris sync ignore log

What is the feature you want to add?
enhance logs while services are ignored by polaris

Why do you want to add this feature?
good for debug

How to implement this feature?
add more context

Additional context
Add any other context or screenshots about the feature request here.

Periodically resync should add batch size limit

What is the feature you want to add?
Periodically resync should add batch size limit
Why do you want to add this feature?
If there are many resources need to sync, the memory consumption of polaris controller will increase which will influence the performance of it.
How to implement this feature?
Add resync batch size
Additional context
Add any other context or screenshots about the feature request here.

failed AddInstances

使用polaris controller 同步k8s服务的时候有个别服务报错,错误信息:[{"code":500,"info":"Failed to marsh request [test-space/datasource-web-service-polaris] [1/1], err json: cannot unmarshal string into Go struct field HealthCheck.responses.instance.healthCheck.type of type int."}] DeleteInstances UpdateInstances

aliasNamespace对整个ns生效

What is the feature you want to add?
polarismesh.cn/aliasNamespace这个annotation可以打到namespace上对整个namespace生效

Why do you want to add this feature?
减少重复性标记

How to implement this feature?

Additional context
Add any other context or screenshots about the feature request here.

mac m1上minikube运行controller失败

Describe the bug
polaris controller运行失败,报错信息如下:
failed to create injection webhook, inotify_init: function not implemented
inotify_init: function not implemented

To Reproduce
Steps to reproduce the behavior.

Expected behavior
A clear and concise description of what you expected to happen.

Environment

  • 宿主机OS: mac m1 macOS Monterey 12.5
  • minikube version: v1.26.1
  • k8s version : v1.20.0
  • polaris controller version: polaris-controller-release_v1.3.0-alpha.3.k8s1.21、olaris-controller-release_v1.2.3

Additional context
Add any other context about the problem here.

support service alias

What is the feature you want to add?

When the controller registers a service, registers a service alias at the same time.

Why do you want to add this feature?
There are restrictions on the name of the k8s service, for example, it can only be in lowercase letters.

How to implement this feature?
Provide the annotation of the alias. When registering the Polaris service, register an alias at the same time.

Additional context
Add any other context or screenshots about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.