# Publishing Strategy for Hypershift
```go=
type HostedCluster struct {
// ...
Services []ServicePublishingStrategyMapping
}
type NodePool struct {
// ...
IgnitionService ServicePublishingStrategy
}
type ServicePublishingStrategyMapping struct {
Service ServiceType
ServicePublishingStrategy
}
type ServicePublishingStrategy
Type PublishingStrategyType `json:"type"`
NodePort *NodePortPublishingStrategy `json:"nodePort,omitempty"`
}
type PublishingStrategyType string
var (
LoadBalancer PublishingStrategyType = "LoadBalancer"
NodePort PublishingStrategyType = "NodePort"
Route PublishingStrategyType = "Route"
)
type ServiceType string
var (
APIServer ServiceType = "APIServer"
VPN ServiceType = "VPN"
OAuthServer ServiceType = "OAuthServer"
)
type NodePortPublishingStrategy struct {
Host string
Port int32
}
```
### Requirements from IBM
- Use a nodeport to export Kube APIServer, VPN, OAuth, Ignition
- Be able to use the same NodePort for the life of a cluster